Merge pull request 'Perbaikan alur sertifikat SPV' (#7) from mikael-zakaria/crm-summit:fix/spv-certificates into main
Reviewed-on: #7 Reviewed-by: mahdahar <89adham@gmail.com>
This commit is contained in:
commit
e0df9c6b1d
@ -671,22 +671,6 @@ class Activities extends Controller {
|
||||
}
|
||||
|
||||
// // UNTUK CERTIFICATES
|
||||
// $certificateTypes = [
|
||||
// 'maintenance' => 'MC',
|
||||
// 'installation' => 'IC'
|
||||
// ];
|
||||
// $hasAnyAction = false;
|
||||
// $issuedDate = $data['new_value']['closedate'] ?? null;
|
||||
// $userid_owner = $data['new_value']['userid_owner'];
|
||||
// foreach ($certificateTypes as $requestName => $certCode) { //perulangan untuk mengecek semua checkbox
|
||||
// if ($this->request->getVar($requestName)) {
|
||||
// $hasAnyAction = true; // Jika checkbox dicentang, tandai bahwa ada aksi
|
||||
// $this->updateCertificate($actid, $issuedDate, $userid_owner, $certCode);
|
||||
// }
|
||||
// }
|
||||
// if (!$hasAnyAction) { // Jika setelah dicek semua ternyata tidak ada satupun yang dicentang, baru jalankan delete
|
||||
// $this->deleteCertificate($actid);
|
||||
// }
|
||||
$reqMaintenance = $this->request->getPost('maintenance') !== null;
|
||||
$reqInstallation = $this->request->getPost('installation') !== null;
|
||||
$reqTraining = $this->request->getPost('training') !== null;
|
||||
@ -2134,7 +2118,13 @@ class Activities extends Controller {
|
||||
|
||||
$insertCert['cert_name'] = "UTC_" . ($result['productname'] ?? 'UNKNOWN') . "_" . $name . "_" . $actid;
|
||||
$insertCert['issued_date'] = $issued_date;
|
||||
$insertCert['user_validation_at'] = $currentTime;
|
||||
|
||||
if (session()->get('userposid') == 2) { //SPV
|
||||
$insertCert['spv_id'] = $userid_owner;
|
||||
$insertCert['spv_validation_at'] = $currentTime;
|
||||
} else { // TSO
|
||||
$insertCert['user_validation_at'] = $currentTime;
|
||||
}
|
||||
|
||||
$certificateModel->insert($insertCert);
|
||||
$certid = $certificateModel->getInsertID();
|
||||
|
||||
@ -48,8 +48,10 @@ class Certificates extends BaseController {
|
||||
// 2. Filter berdasarkan Role
|
||||
if (in_array($userPosId, [1, 3, 5])) { // Manager & IT: Tidak perlu filter tambahan (lihat semua)
|
||||
} else if ($userPosId == 2) { // SPV: Melihat data user yang "reportto"-nya adalah ID supervisor ini
|
||||
$builder->groupStart();
|
||||
$builder->where('users.reportto', $userId);
|
||||
$builder->Orwhere('certificates.user_id', $userId);
|
||||
$builder->groupEnd();
|
||||
} else if ($userPosId == 4) { // TSOIVD: Hanya melihat data milik sendiri
|
||||
$builder->where('certificates.user_id', $userId);
|
||||
} else {// Role lain: Tidak diberi akses
|
||||
@ -214,8 +216,10 @@ class Certificates extends BaseController {
|
||||
// 2. Filter berdasarkan Role
|
||||
if (in_array($userPosId, [1, 3, 5])) { // Manager & IT: Tidak perlu filter tambahan (lihat semua)
|
||||
} else if ($userPosId == 2) { // SPV: Melihat data user yang "reportto"-nya adalah ID supervisor ini
|
||||
$builder->groupStart();
|
||||
$builder->where('users.reportto', $userId);
|
||||
$builder->Orwhere('certificates.user_id', $userId);
|
||||
$builder->groupEnd();
|
||||
} else if ($userPosId == 4) { // TSOIVD: Hanya melihat data milik sendiri
|
||||
$builder->where('certificates.user_id', $userId);
|
||||
} else {// Role lain: Tidak diberi akses
|
||||
@ -384,8 +388,10 @@ class Certificates extends BaseController {
|
||||
// 2. Filter berdasarkan Role
|
||||
if (in_array($userPosId, [1, 3, 5])) { // Manager & IT: Tidak perlu filter tambahan (lihat semua)
|
||||
} else if ($userPosId == 2) { // SPV: Melihat data user yang "reportto"-nya adalah ID supervisor ini
|
||||
$builder->groupStart();
|
||||
$builder->where('users.reportto', $userId);
|
||||
$builder->Orwhere('certificates.user_id', $userId);
|
||||
$builder->groupEnd();
|
||||
} else if ($userPosId == 4) { // TSOIVD: Hanya melihat data milik sendiri
|
||||
$builder->where('certificates.user_id', $userId);
|
||||
} else {// Role lain: Tidak diberi akses
|
||||
@ -724,13 +730,22 @@ class Certificates extends BaseController {
|
||||
|
||||
// 4. Cek apakah ini validasi terakhir?
|
||||
// Ambil ulang data terbaru (cukup kolom validation saja untuk efisiensi)
|
||||
$checkFinal = $certificateModel->select('user_validation_at, spv_validation_at, manager_validation_at')
|
||||
->find($certid);
|
||||
|
||||
if (!empty($checkFinal['user_validation_at']) &&
|
||||
(!empty($checkFinal['spv_validation_at']) ||
|
||||
!empty($checkFinal['manager_validation_at']))) {
|
||||
// $checkFinal = $certificateModel->select('user_validation_at, spv_validation_at, manager_validation_at')
|
||||
// ->find($certid);
|
||||
$checkFinal = $certificateModel->select('us.userposid, certificates.user_validation_at, certificates.spv_validation_at, certificates.manager_validation_at')
|
||||
->join('users us', 'us.userid = certificates.user_id', 'left')
|
||||
->find($certid);
|
||||
|
||||
// if (!empty($checkFinal['user_validation_at']) &&
|
||||
// (!empty($checkFinal['spv_validation_at']) ||
|
||||
// !empty($checkFinal['manager_validation_at']))) {
|
||||
$statusValidate = false;
|
||||
if ($checkFinal['userposid'] == 1 || $checkFinal['userposid'] == 2) {
|
||||
$statusValidate = !empty($checkFinal['spv_validation_at']) && !empty($checkFinal['manager_validation_at']) ;
|
||||
} else if ($checkFinal['userposid'] == 4) {
|
||||
$statusValidate = !empty($checkFinal['user_validation_at']) && (!empty($checkFinal['spv_validation_at']) || !empty($checkFinal['manager_validation_at']));
|
||||
}
|
||||
if ($statusValidate) {
|
||||
// Check
|
||||
$checkStatus = $certificateModel->select('status')->find($certid);
|
||||
if ($checkStatus['status'] == 'validated') {
|
||||
@ -743,38 +758,6 @@ class Certificates extends BaseController {
|
||||
// Update Status Utama
|
||||
$certificateModel->update($certid, ['status' => 'validated']);
|
||||
|
||||
// Baru jalankan query berat JOIN di sini untuk keperluan PDF/Notifikasi
|
||||
// $latestData = $certificateModel->select('
|
||||
// certificates.cert_name,
|
||||
// certificates.issued_date,
|
||||
// certificates.expired_date,
|
||||
// certificates.file_url,
|
||||
// productalias.productaliastext as productname,
|
||||
// sites.sitename as sitename,
|
||||
// products.productnumber,
|
||||
// CASE
|
||||
// WHEN certificates.cert_type = "MC" THEN "Maintenance"
|
||||
// WHEN certificates.cert_type = "IC" THEN "Installation"
|
||||
// WHEN certificates.cert_type = "UTC" THEN "Training"
|
||||
// WHEN certificates.cert_type = "BAI" THEN "Berita Acara Instalasi"
|
||||
// WHEN certificates.cert_type = "BAP" THEN "Berita Acara Penarikan"
|
||||
// ELSE certificates.cert_type
|
||||
// END AS cert_type,
|
||||
// CONCAT(users.firstname, " ", users.lastname) AS fullname,
|
||||
// userposition.texts AS user_position,
|
||||
// certificates.issued_date,
|
||||
// certificates.expired_date,
|
||||
// certificates.cert_number -- Penting agar callback UUID tetap jalan
|
||||
// ', false)
|
||||
// ->join('users', 'users.userid = certificates.user_id', 'left')
|
||||
// ->join('userposition', 'userposition.userposid = users.userposid', 'left')
|
||||
// ->join('activities', 'activities.actid = certificates.actid', 'left')
|
||||
// ->join('sites', 'sites.siteid = activities.siteid', 'left')
|
||||
// ->join('products', 'products.productid = activities.productid', 'left')
|
||||
// ->join('productcatalog', 'productcatalog.catalogid = products.catalogid', 'left')
|
||||
// ->join('productalias', 'productalias.productaliasid = productcatalog.productaliasid', 'left')
|
||||
// ->where('certificates.cert_id', $certid)
|
||||
// ->first();
|
||||
$latestData = $certificateModel->select('
|
||||
certificates.cert_name,
|
||||
certificates.issued_date,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user