From 7efabea14486af915bae1c99e41e3e1168420d66 Mon Sep 17 00:00:00 2001 From: Rafi Athallah <65345768+rafiathallah3@users.noreply.github.com> Date: Sun, 12 Jul 2026 15:02:11 +0700 Subject: [PATCH] feat(certificate): update certificate tag format --- .../repositories/certificate.repository.js | 6 +++++ .../services/certificate.service.js | 23 +++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/modules/certificate/repositories/certificate.repository.js b/src/modules/certificate/repositories/certificate.repository.js index 4741657..62f1deb 100644 --- a/src/modules/certificate/repositories/certificate.repository.js +++ b/src/modules/certificate/repositories/certificate.repository.js @@ -101,6 +101,12 @@ class CertificateRepository { }); } + async countByProject(id_project) { + return prisma.certificate.count({ + where: { id_project: parseInt(id_project) }, + }); + } + async updateProjectTemplate(id_project, templatePath) { return prisma.project.update({ where: { id: parseInt(id_project) }, diff --git a/src/modules/certificate/services/certificate.service.js b/src/modules/certificate/services/certificate.service.js index c3a6002..52de155 100644 --- a/src/modules/certificate/services/certificate.service.js +++ b/src/modules/certificate/services/certificate.service.js @@ -57,13 +57,15 @@ class CertificateService { ); } - // Generate certificate number berdsarkan format ini: CERT/YYYYMMDD/PRJ{id_project}/USR{id_user} [Rafi 09/06/2026 20:45] + // Generate certificate number berdsarkan format ini: CERT/YYYYMMDD/{count} [Rafi 12/07/2026 14:32] const now = new Date(); - const year = now.getFullYear(); + const year = String(now.getFullYear()).slice(-2); + const day = String(now.getDate()).padStart(2, '0'); const month = String(now.getMonth() + 1).padStart(2, '0'); - const date = String(now.getDate()).padStart(2, '0'); - const dateString = `${year}${month}${date}`; - const certificateNo = `CERT/${dateString}/PRJ${id_project}/USR${actor.id}`; + const dateString = `${year}${day}${month}`; + + const count = await certificateRepository.countByProject(id_project); + const certificateNo = `CERT/${dateString}/${count + 1}`; const certificateData = { id_project: parseInt(id_project), @@ -149,13 +151,16 @@ class CertificateService { const generatedCertificates = []; const now = new Date(); - const year = now.getFullYear(); + const year = String(now.getFullYear()).slice(-2); + const day = String(now.getDate()).padStart(2, '0'); const month = String(now.getMonth() + 1).padStart(2, '0'); - const date = String(now.getDate()).padStart(2, '0'); - const dateString = `${year}${month}${date}`; + const dateString = `${year}${day}${month}`; + + let currentCount = await certificateRepository.countByProject(id_project); for (const userId of validatedUsers) { - const certificateNo = `CERT/${dateString}/PRJ${id_project}/USR${userId}`; + currentCount++; + const certificateNo = `CERT/${dateString}/${currentCount}`; const certificateData = { id_project: parseInt(id_project), id_user: parseInt(userId),