diff --git a/prisma/schema.prisma b/prisma/schema.prisma index d64f11e..6f75b42 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -187,6 +187,7 @@ model SuratPelayanan { Warga Warga @relation(fields: [idWarga], references: [id]) idWarga String noSurat String + file String? dateExpired DateTime? @db.Date status Int @default(0) isActive Boolean @default(true) diff --git a/src/components/ModalSurat.tsx b/src/components/ModalSurat.tsx index 2c32271..84284c4 100644 --- a/src/components/ModalSurat.tsx +++ b/src/components/ModalSurat.tsx @@ -23,7 +23,7 @@ export default function ModalSurat({ surat, }: { open: boolean; - onClose: () => void; + onClose: (val: any) => void; surat: string; }) { const A4Style = { @@ -51,69 +51,78 @@ export default function ModalSurat({ const uploadPdf = async () => { try { - setUploading("Mengupload"); - const element = hiddenRef.current; - const canvas = await html2canvas(element, { - scale: 2, - useCORS: true, - allowTaint: true, - width: element.offsetWidth, - height: element.offsetHeight, - }); + if (data && data.data && data.data.surat && (data.data.surat.file == "" || data.data.surat.file == null)) { + setUploading("Mengupload"); + const element = hiddenRef.current; + const canvas = await html2canvas(element, { + scale: 2, + useCORS: true, + allowTaint: true, + width: element.offsetWidth, + height: element.offsetHeight, + }); - const imgData = canvas.toDataURL("image/jpeg", 1.0); + const imgData = canvas.toDataURL("image/jpeg", 1.0); - const pdf = new jsPDF("p", "mm", "a4"); - const pageWidth = 210; // A4 width mm - const pageHeight = 297; // A4 height mm + const pdf = new jsPDF("p", "mm", "a4"); + const pageWidth = 210; // A4 width mm + const pageHeight = 297; // A4 height mm - const imgWidth = pageWidth; - const imgHeight = (canvas.height * pageWidth) / canvas.width; + const imgWidth = pageWidth; + const imgHeight = (canvas.height * pageWidth) / canvas.width; - pdf.addImage(imgData, "JPEG", 0, 0, imgWidth, imgHeight); + pdf.addImage(imgData, "JPEG", 0, 0, imgWidth, imgHeight); - // ⬇️ ambil sebagai Blob - const pdfBlob = pdf.output("blob"); + // ⬇️ ambil sebagai Blob + const pdfBlob = pdf.output("blob"); - const pdfFile = new File( - [pdfBlob], - `${data?.data?.surat?.nameCategory}.pdf`, - { - type: "application/pdf", - lastModified: Date.now(), - } - ); + const pdfFile = new File( + [pdfBlob], + `${data?.data?.surat?.nameCategory}.pdf`, + { + type: "application/pdf", + lastModified: Date.now(), + } + ); - const resImg = await apiFetch.api.pengaduan.upload.post({ - file: pdfFile, - folder: "surat", - }); + const resImg = await apiFetch.api.pengaduan.upload.post({ + file: pdfFile, + folder: "surat", + }); + + const resUpdate = await apiFetch.api.surat.update.post({ + id: surat, + filename: resImg.data?.filename!, + }); + + setUploading("Selesai"); + setTimeout(() => { + onClose(resUpdate.data?.link); + }, 1000) + } - console.log(resImg.data) } catch (error) { console.error("Error uploading PDF:", error); - } finally { - setUploading("Selesai"); - setTimeout(() => { - onClose(); - }, 1000) } } useShallowEffect(() => { - setTimeout(() => { - uploadPdf(); - }, 5000); - }, [surat]); + if (open) { + setTimeout(() => { + uploadPdf(); + }, 5000); + } + }, [surat, open]); return ( <> onClose()} + onClose={() => { }} overlayProps={{ backgroundOpacity: 0.55, blur: 3 }} size="auto" withCloseButton={false} + closeOnClickOutside={false} removeScrollProps={{ allowPinchZoom: true }} styles={{ header: { diff --git a/src/pages/darmasaba/surat.tsx b/src/pages/darmasaba/surat.tsx index 66223e2..78d9ac0 100644 --- a/src/pages/darmasaba/surat.tsx +++ b/src/pages/darmasaba/surat.tsx @@ -324,6 +324,7 @@ export default function FormSurat() { { const formatted = e ? dayjs(e) - .locale("id") - .format("DD MMMM YYYY") + .locale("id") + .format("DD MMMM YYYY") : ""; validationForm({ key: "dataPelengkap", diff --git a/src/pages/darmasaba/update_data_surat.tsx b/src/pages/darmasaba/update_data_surat.tsx index 68eb4de..24c8def 100644 --- a/src/pages/darmasaba/update_data_surat.tsx +++ b/src/pages/darmasaba/update_data_surat.tsx @@ -625,6 +625,7 @@ function DataUpdate({ {item.type == "enum" ? (