From d1668cf04429881dbce3f45af0beabb727dd0d7d Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 24 Dec 2024 11:30:49 +0700 Subject: [PATCH] Tambahkan fitur persetujuan pada otorisator - Ditambahkan relasi baru di model Permohonan untuk persetujuan SO, EO, dan DD. - Modifikasi PenilaianController untuk menyertakan data relasi persetujuan. - Perbaikan dan penyesuaian tampilan tabel dengan kolom persetujuan. - Tambahkan logika tombol otorisator berdasarkan peran pengguna dan status persetujuan. - Update tampilan detail permohonan dengan informasi persetujuan. --- app/Http/Controllers/PenilaianController.php | 2 +- app/Models/Permohonan.php | 12 ++ .../penilaian/otorisator/index.blade.php | 181 ++++++++++++------ .../views/penilaian/otorisator/show.blade.php | 52 +++-- 4 files changed, 167 insertions(+), 80 deletions(-) diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 0013891..1599ac8 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -536,7 +536,7 @@ $filteredRecords = $query->count(); // Ambil data dengan relasi - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers'])->get(); + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'approveSo'])->get(); // Hitung jumlah halaman diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index eac4ad8..0ed5c0a 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -193,4 +193,16 @@ public function approveBayar(){ return $this->belongsTo(User::class, 'approve_bayar_by', 'id'); } + + public function approveEo(){ + return $this->belongsTo(User::class, 'approval_eo', 'id'); + } + + public function approveDd(){ + return $this->belongsTo(User::class, 'approval_dd', 'id'); + } + + public function approveSo(){ + return $this->belongsTo(User::class, 'approval_so', 'id'); + } } diff --git a/resources/views/penilaian/otorisator/index.blade.php b/resources/views/penilaian/otorisator/index.blade.php index 282d63a..1b0b790 100644 --- a/resources/views/penilaian/otorisator/index.blade.php +++ b/resources/views/penilaian/otorisator/index.blade.php @@ -8,8 +8,8 @@
+ data-datatable-state-save="false" id="permohonan-table" + data-api-url="{{ route('otorisator.datatables', ['otorisator' => $header]) }}">

Daftar {{ $header }} @@ -30,46 +30,59 @@
+ data-datatable-table="true"> - - - - - - - - + + + + + + + + - @if ($header == 'Pembayaran') - - @endif + - - + + + + + + + +
- - - Nomor Registrasi - - - Tanggal Permohonan - - - User Pemohon - - - Cabang Pemohon - - - Debitur - - - Tujuan Penilaian - -
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + - Status Bayar - - + Status Bayar + + Action
+ Approval SO + + + Approval EO + + + Approval DD + + Action
@@ -182,34 +195,80 @@ return `${data.tujuan_penilaian.name}`; }, }, - ...(dataHeader === 'Pembayaran' && { - status_bayar: { - title: 'Status Bayar', - render: (item, data) => { - const status = data.status_bayar.replace(/_/g, - ' '); - const statusClass = data.status_bayar === 'belum_bayar' ? 'text-red-600' : - 'text-green-600'; - return ` + status_bayar: { + title: 'Status Bayar', + render: (item, data) => { + const status = data.status_bayar.replace(/_/g, + ' '); + const statusClass = data.status_bayar === 'belum_bayar' ? 'text-red-600' : + 'text-green-600'; + return ` ${status} `; - }, }, - }), - + }, + approval_so: { + title: 'Approval SO', + render: (item, data) => { + if(data.approve_so) { + return `${data.approve_so.name} | ${window.formatTanggalIndonesia(data.approval_so_at)}`; + } + return ''; + }, + }, + approval_eo: { + title: 'Approval EO', + render: (item, data) => { + if(data.approve_eo) { + return `${data.approve_eo.name} | ${window.formatTanggalIndonesia(data.approval_eo_at)}`; + } + return ''; + }, + }, + approval_dd: { + title: 'Approval DD', + render: (item, data) => { + if(data.approve_dd) { + return `${data.approve_dd.name} | ${window.formatTanggalIndonesia(data.approval_dd_at)}`; + } + return ''; + }, + }, actions: { title: 'Status', render: (item, data) => { - return `
- - - + const userRoles = @json(Auth::user()->getRoleNames()); + const isAdmin = userRoles.includes('administrator'); - - - -
`; + let buttons = ` +
+ + + + `; + if ((isAdmin || userRoles.includes('senior-officer')) && !data.approval_so) { + buttons += ` + + + + `; + } else if ((isAdmin || userRoles.includes('EO Appraisal')) && data.approval_so && !data.approval_eo) { + buttons += ` + + + + `; + } else if ((isAdmin || userRoles.includes('DD Appraisal')) && data.approval_eo && !data.approval_dd) { + buttons += ` + + + + `; + } + + buttons += `
`; + return buttons; }, } }, @@ -217,7 +276,7 @@ let dataTable = new KTDataTable(element, dataTableOptions); // Custom search functionality - searchInput.addEventListener('input', function() { + searchInput.addEventListener('input', function () { const searchValue = this.value.trim(); dataTable.search(searchValue, true); @@ -265,7 +324,7 @@ error: (error) => { console.error('Error:', error); Swal.fire('Gagal!', 'Terjadi kesalahan saat melakukan otorisator.', - 'error'); + 'error'); } }); } diff --git a/resources/views/penilaian/otorisator/show.blade.php b/resources/views/penilaian/otorisator/show.blade.php index 1cc6a38..b38f066 100644 --- a/resources/views/penilaian/otorisator/show.blade.php +++ b/resources/views/penilaian/otorisator/show.blade.php @@ -14,16 +14,16 @@ @include('lpj::component.detail-jaminan', ['backLink' => 'otorisator.'. $dataHeader . '.index']) @if($permohonan->approval_so) -
-
-

- Approval -

-
+
+
+

+ Approval +

+
-
- - +
+
+ @@ -39,17 +39,33 @@ - -
Diperiksa Oleh {{ getUser($permohonan->approval_so)->name ?? 'N/A' }}{{ getUser($permohonan->approval_dd)->name ?? 'N/A' }} {{ $permohonan->approval_dd_at ? formatTanggalIndonesia($permohonan->approval_dd_at,1) : 'N/A' }}
+ + +
-
@endif
- + @if(Auth::user()->hasAnyRole(['administrator','senior-officer']) && $permohonan->approval_so==null) + + @endif + + @if(Auth::user()->hasAnyRole(['administrator','EO Appraisal']) && $permohonan->approval_so && $permohonan->approval_eo==null) + + @endif + + @if(Auth::user()->hasAnyRole(['administrator','DD Appraisal']) && $permohonan->approval_eo && $permohonan->approval_dd==null) + + @endif
@@ -57,7 +73,7 @@ @push('scripts')