Update Generate QR Code untuk Sertifikat Maintenance

This commit is contained in:
mikael-zakaria 2026-03-09 00:06:31 +07:00
parent 5cab7576c0
commit a1cc45141e
4 changed files with 33 additions and 4 deletions

View File

@ -1690,6 +1690,11 @@ class Activities extends Controller {
];
$certificateModel = new CertificateModel();
$certificateModel->insert($insertCert);
$certid = $certificateModel->getInsertID();
$newCertificate = $certificateModel->find($certid);
$certificateModel->update($certid, ['file_url' => base_url('certificates/number/'.$newCertificate['cert_number'])]);
}
public function updateCertificateMaintenance($actid, $issuedDate, $userid_owner) {
$certificateModel = new CertificateModel();
@ -1746,6 +1751,10 @@ class Activities extends Controller {
if (!$isDataExist) {
// Jika data belum ada sama sekali (array kosong), eksekusi INSERT
$certificateModel->insert($certPayload);
$certid = $certificateModel->getInsertID();
$newCertificate = $certificateModel->find($certid);
$certificateModel->update($certid, ['file_url' => base_url('certificates/number/'.$newCertificate['cert_number'])]);
} else {
// Jika data sudah ada, eksekusi UPDATE
// Catatan: Karena bisa ada lebih dari 1 data dengan actid yang sama (karena findAll),

View File

@ -6,6 +6,9 @@ use App\Controllers\BaseController;
use Dompdf\Dompdf;
use Dompdf\Options;
use Endroid\QrCode\Builder\Builder;
use Endroid\QrCode\Writer\PngWriter;
use App\Models\CertificateModel;
class Certificates extends BaseController {
@ -208,6 +211,7 @@ class Certificates extends BaseController {
certificates.cert_name,
certificates.issued_date,
certificates.expired_date,
certificates.file_url,
productcatalog.productname as productname,
sites.sitename as sitename,
products.productnumber,
@ -245,6 +249,15 @@ class Certificates extends BaseController {
'expireddate' => $data['expired_date']
];
$builder = new Builder(
writer: new PngWriter(),
data: $data['file_url'],
size: 120,
margin: 0
);
$result = $builder->build();
$certificate['qrcode'] = $result->getDataUri();
if (empty($certificate)) { // Jika Tidak Ada
return $this->response->setStatusCode(404)->setJSON(['error' => 'Maintenance certificate not found']);
}
@ -572,7 +585,7 @@ class Certificates extends BaseController {
'file_location' => $pdfAfterValidation['file_relative'],
'metadata_title' => $pdfAfterValidation['metadata_title'],
'metadata_keywords' => $pdfAfterValidation['metadata_keywords'].";".base_url('certificates/number/'.$latestData['cert_number']),
'file_url' => base_url('certificates/number/'.$latestData['cert_number'])
// 'file_url' => base_url('certificates/number/'.$latestData['cert_number'])
]);
return $this->response->setJSON([

View File

@ -265,7 +265,7 @@ $(function () {
statusBadge,
validationBadge,
status == 'unvalidated'
? `<div class="text-center"><button type="button" class="btn btn-sm btn-warning text-dark btn-validate-modal" data-certid="${certid}"><i class="fa-solid fa-exclamation me-2"></i>Need Validation</button></div>`
? `<div class="text-center"><button type="button" class="btn btn-sm btn-warning text-dark btn-validate-modal" data-certid="${certid}"><i class="fa-solid fa-triangle-exclamation me-2"></i>Need Validation</button></div>`
: `<div class="text-center mb-1"><button type="button" class="btn btn-sm btn-info btn-validate-modal" data-certid="${certid}"><i class="fa-regular fa-eye me-2"></i>Detail</button></div>
<div class="text-center"><button type="button" class="btn btn-sm btn-success btn-view" data-certnumber="${certnumber}"><i class="fa-regular fa-file-pdf me-2"></i>Generated PDF</button></div>`
];

View File

@ -60,7 +60,8 @@
}
.detail-information {
text-align: center;
margin-bottom: 137px;
/* margin-bottom: 137px; */
margin-bottom: 29px;
}
h4 {
margin :0;
@ -73,7 +74,7 @@
.signature-table {
width: 100%;
border-collapse: collapse;
margin-bottom: 41px;
margin-bottom: 26px;
}
.signature-table td {
width: 50%; /* Membagi dua sisi sama rata */
@ -122,6 +123,9 @@
<table class="signature-table">
<tr>
<td>
<img src="<?= $certificate['qrcode'] ?>">
</td>
<!-- <td>
<span class="name">Adhitya Pranata Putra</span>
<span class="position">Technical Support Manager</span>
@ -163,6 +167,9 @@
<table class="signature-table">
<tr>
<td>
<img src="<?= $certificate['qrcode'] ?>">
</td>
<!-- <td>
<span class="name">Adhitya Pranata Putra</span>
<span class="position">Technical Support Manager</span>