import { PDFDocument } from 'pdf-lib'
import { saveAs } from 'file-saver'
import PDF from '../../assets/certificat scolariter.pdf'

const PDFEditorCertificat = async (data) => {
  function formatDate(dateString) {
    const dateObject = new Date(dateString)
    return dateObject.toLocaleDateString('fr-FR', {
      day: '2-digit',
      month: 'long',
      year: 'numeric'
    })
  }

  function writeniveau(niveaus) {
    const niveauxMap = {
      L1: '1e année de licences',
      L2: '2e année de licences',
      L3: '3e année de licences',
      M1: '1e année de master',
      M2: '2e année de master',
      D1: '1e année en doctorat',
      D2: '2e année en doctorat',
      D3: '3e année en doctorat'
    }
    return niveauxMap[niveaus] || 'Niveau inconnu'
  }

  const existingPdfBytes = await fetch(PDF).then((res) => res.arrayBuffer())

  // Load the existing PDF
  const pdfDoc = await PDFDocument.load(existingPdfBytes)

  // Get the form fields and fill them
  const form = pdfDoc.getForm()
  form.getTextField('f1').setText(data.f1)
  form.getTextField('f2').setText(formatDate(data.f2))
  form.getTextField('f3').setText(data.f3) // Nom du père
  form.getTextField('f4').setText(data.f4) // Nom de la mère
  form.getTextField('f5').setText(writeniveau(data.f5))
  form.getTextField('f6').setText(data.f6)
  form.getTextField('f7').setText(data.f7)
  form.getTextField('f8').setText(data.f8)
  form.getTextField('f9').setText(data.f9) // Nom du service

  // Save the modified PDF
  const pdfBytes = await pdfDoc.save()

  // Trigger the download
  const blob = new Blob([pdfBytes], { type: 'application/pdf' })
  saveAs(blob, `certificat_de_scolarite_${data.f1}.pdf`)
}

export default PDFEditorCertificat
