import prismadb from "@/lib/prisma";
import { Order } from "@prisma/client";
const nodemailer = require("nodemailer");

//config du serveur d'envoie su mail
const transporter = nodemailer.createTransport({
  host: process.env.EMAIL_HOST,
  port: process.env.EMAIL_PORT,
  secure: true,
  auth: {
    user: process.env.MY_EMAIL,
    pass: process.env.MY_PASSWORD,
  },
});

//signature du mail
const getEmailFooter = (storeInfo: any) => {
  return `
    <table style="border-collapse: collapse;">
      <tr>
        <td style="border: none;">${storeInfo?.logo ? `<img src="cid:logo" alt="Logo de la boutique" style="max-width: 100px;">` : ''}</td>
        <td style="border: none; vertical-align: top;">
          <p><b>Contact :</b></p>
            ${storeInfo?.shopMail ? `Mail : <a href="mailto:${storeInfo?.shopMail}">${storeInfo?.shopMail}</a><br>` : ''}
            ${storeInfo?.shopUrl ? `Site internet : <a href="https://${storeInfo?.shopUrl}">${storeInfo?.shopUrl}</a><br>` : ''}
            ${storeInfo?.shopPhone ? `Téléphone : <a href="tel:${storeInfo?.shopPhone}">${storeInfo?.shopPhone}</a>` : ''}
        </td>
      </tr>
    </table>
    <p>Powered by <a href="https://projoctopus.com">ProjOctopus 🐙</a></p>  
  `
}

//mail de confirmation d'envoie de la commande
export const sendNewPassword = async (storeId: string, email: string, newPassword: string) => {
  console.log("storeId", storeId)
  const mailInfo = await prismadb.mailInfo.findFirst({
    where: {
      storeId
    }
  });

  //récup des informations de la boutique
  const storeInfo = await prismadb.store.findFirst({
    where: {
      id: storeId
    }
  })

  //supp de la partie 'data:image/jpeg;base64,' de l'URL de l'image
  let base64Image = storeInfo?.logo.split(';base64,').pop();

  //pièces jointes
  let attachments = [];
  if (base64Image) {
    attachments.push({
      cid: "logo",
      filename: 'logo.jpeg',
      content: Buffer.from(storeInfo?.logo ? base64Image : "", 'base64'),
      encoding: 'base64'
    });
  }

  //contenu HTML de l'e-mail
  let emailContent = `
    <html>
    <body>
      <p>Bonjour,</p>
      
      <p>Vous avez cliqué sur mot de passe oublié. Voici votre nouveau mot de passe :</p>
      <b>${newPassword}</b>

      <p>Nous vous recommandons de modifier ce mot de passe dès que possible pour des raisons de sécurité.</p>
    </body>
    </html>
  `;

  const emailFooter = getEmailFooter(storeInfo);

  //construction et envoie du mail
  return await transporter.sendMail({
    from: `"${mailInfo?.printUsername}" <${process.env.MY_EMAIL}>`,
    to: email,
    subject: `Mot de passe oublié`,
    html: emailContent + emailFooter,
    attachments: attachments
  });
}