fix(PenilaianController): perbaiki logika otorisasi dan pembaruan status

- Menambahkan penanganan untuk konteks 'Paparan' pada otorisasi.
- Memperbaiki kesalahan penamaan variabel dari 'nulai_plafond_id' menjadi 'nilai_plafond_id'.
- Memperbarui status otorisasi berdasarkan peran pengguna.
- Menambahkan pembaruan status permohonan untuk konteks 'paparan'.
This commit is contained in:
Daeng Deni Mardaeni
2025-01-22 07:33:58 +07:00
parent 6e6611c02c
commit 7558d1a574
2 changed files with 238 additions and 74 deletions

View File

@@ -430,6 +430,14 @@ class PenilaianController extends Controller
], 404); ], 404);
} }
$permohonan = Permohonan::find($authorization->permohonan_id); $permohonan = Permohonan::find($authorization->permohonan_id);
} elseif ($context === 'Paparan') {
$authorization = Authorization::with(['user'])->find($id);
if (!$authorization) {
return response()->json([
'message' => 'Data authorization Paparan tidak ditemukan.',
], 404);
}
$permohonan = Permohonan::find($authorization->permohonan_id);
} else { } else {
$permohonan = Permohonan::find($id); $permohonan = Permohonan::find($id);
} }
@@ -493,7 +501,7 @@ class PenilaianController extends Controller
]); ]);
} elseif (Auth::user()->roles[0]->name === 'EO Appraisal' || Auth::user()->roles[0]->name === 'administrator') { } elseif (Auth::user()->roles[0]->name === 'EO Appraisal' || Auth::user()->roles[0]->name === 'administrator') {
$status = '2'; $status = '2';
if (!in_array($permohonan->nulai_plafond_id, [1, 4])) { if (!in_array($permohonan->nilai_plafond_id, [1, 4])) {
$status = '1'; $status = '1';
$permohonan->update([ $permohonan->update([
'status' => $authorization->request 'status' => $authorization->request
@@ -522,11 +530,45 @@ class PenilaianController extends Controller
} }
break; break;
case 'paparan': case 'paparan':
$permohonan->update([ if (Auth::user()->roles[0]->name === 'senior-officer') {
'status' => 'paparan', $authorization->update([
'keterangan' => $request->message, 'status' => '3',
]); 'status_so' => '1',
'approve_so' => Auth::user()->id,
'approve_so_at' => now(),
'keterangan_so' => $request->message,
]);
} elseif (Auth::user()->roles[0]->name === 'EO Appraisal' || Auth::user()->roles[0]->name === 'administrator') {
$status = '2';
if (!in_array($permohonan->nilai_plafond_id, [1, 4])) {
$status = '1';
$permohonan->update([
'status' => $authorization->request
]);
}
$authorization->update([
'status' => $status,
'status_eo' => '1',
'approve_eo' => Auth::user()->id,
'approve_eo_at' => now(),
'keterangan_eo' => $request->message,
]);
} elseif (Auth::user()->roles[0]->name === 'DD Appraisal') {
$authorization->update([
'status' => '1',
'status_dd' => '1',
'approve_dd' => Auth::user()->id,
'approve_dd_at' => now(),
'keterangan_dd' => $request->message,
]);
$permohonan->update([
'status' => 'paparan',
'tanggal_paparan' => $request->tanggalPaparan
]);
}
break; break;
default: default:
return response()->json([ return response()->json([
'message' => 'Konteks otorisasi tidak valid.', 'message' => 'Konteks otorisasi tidak valid.',

View File

@@ -129,9 +129,36 @@
href="{{ route('otorisator.view-laporan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}"> href="{{ route('otorisator.view-laporan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}">
Lihat Laporan Lihat Laporan
</a> </a>
@endif @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer']) && $permohonan->approval_so == null)
<button onclick="otorisatorData({{ $permohonan->id }})" type="button" class="btn btn-primary">
<i class="ki-filled ki-double-check"></i>
Otorisator {{ $header ?? '' }}
</button>
<button class="btn btn-warning" onclick="revisiLaporan({{ $permohonan->id }})">
<i class="ki-filled ki-arrow-circle-right"></i> Revisi
</button>
@endif
@if ($dataHeader == 'paparan') @if (Auth::user()->hasAnyRole(['administrator', 'EO Appraisal']) &&
$permohonan->approval_so &&
$permohonan->approval_eo == null)
<button onclick="otorisatorData({{ $permohonan->id }})" type="button" class="btn btn-primary">
<i class="ki-filled ki-double-check"></i>
Otorisator {{ $header ?? '' }}
</button>
@endif
@if (Auth::user()->hasAnyRole(['administrator', 'DD Appraisal']) &&
$permohonan->approval_eo &&
$permohonan->approval_dd == null &&
in_array($permohonan->nilai_plafond_id, [1, 4]))
<button onclick="otorisatorData({{ $permohonan->id }})" type="button" class="btn btn-primary">
<i class="ki-filled ki-double-check"></i>
Otorisator {{ $header ?? '' }}
</button>
@endif
@elseif($dataHeader == 'paparan')
<a class="btn btn-success" <a class="btn btn-success"
href="{{ route('penilai.paparan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}"> href="{{ route('penilai.paparan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}">
Lihat Data Paparan Lihat Data Paparan
@@ -142,37 +169,23 @@
Otorisator {{ $header ?? '' }} Otorisator {{ $header ?? '' }}
</button> </button>
@endif @endif
@endif
@if (Auth::user()->hasAnyRole(['administrator', 'senior-officer']) && $permohonan->approval_so == null) @if(Auth::user()->hasAnyRole(['administrator','senior-officer']) && $authorization->approve_so==null)
<button onclick="otorisatorData({{ $permohonan->id }})" type="button" class="btn btn-primary"> <button onclick="otorisatorData({{ $authorization->id }})" type="button" class="btn btn-primary">
<i class="ki-filled ki-double-check"></i> <i class="ki-filled ki-double-check"></i>
Otorisator {{ $header ?? '' }} Otorisator {{ $header ?? '' }}
</button>
@if ($dataHeader != 'paparan')
<button class="btn btn-warning" onclick="revisiLaporan({{ $permohonan->id }})">
<i class="ki-filled ki-arrow-circle-right"></i> Revisi
</button> </button>
@endif @endif
@endif
@if (Auth::user()->hasAnyRole(['administrator', 'EO Appraisal']) && @if (Auth::user()->hasAnyRole(['administrator', 'DD Appraisal']) &&
$permohonan->approval_so && $authorization->approve_so &&
$permohonan->approval_eo == null) $authorization->approval_dd == null &&
<button onclick="otorisatorData({{ $permohonan->id }})" type="button" class="btn btn-primary"> in_array($permohonan->nilai_plafond_id, [1, 4]))
<i class="ki-filled ki-double-check"></i> <button onclick="otorisatorData({{ $authorization->id }},'DD')" type="button" class="btn btn-primary">
Otorisator {{ $header ?? '' }} <i class="ki-filled ki-double-check"></i>
</button> Otorisator {{ $header ?? '' }}
@endif </button>
@endif
@if (Auth::user()->hasAnyRole(['administrator', 'DD Appraisal']) &&
$permohonan->approval_eo &&
$permohonan->approval_dd == null &&
in_array($permohonan->nilai_plafond_id, [1, 4]))
<button onclick="otorisatorData({{ $permohonan->id }})" type="button" class="btn btn-primary">
<i class="ki-filled ki-double-check"></i>
Otorisator {{ $header ?? '' }}
</button>
@endif @endif
</div> </div>
</div> </div>
@@ -181,53 +194,162 @@
@push('scripts') @push('scripts')
<script> <script>
function otorisatorData(dataId) { function otorisatorData(dataId, role='') {
const dataHeader = @json($header); const dataHeader = @json($header);
Swal.fire({ if(dataHeader == 'Paparan'){
title: 'Apakah Anda yakin?', if(role == 'DD'){
text: `Untuk melakukan otorisator ${dataHeader}!`, Swal.fire({
icon: 'warning', title: 'Apakah Anda yakin?',
input: 'textarea', text: `Untuk melakukan otorisator ${dataHeader}!`,
inputLabel: 'Keterangan', icon: 'warning',
inputPlaceholder: 'Masukkan keterangan...', html: `
inputAttributes: { <input id="swal-keterangan" class="swal2-input input" placeholder="Keterangan">
'aria-label': 'Masukkan keterangan' <input id="swal-tanggal-paparan" class="swal2-input input" type="date" placeholder="Tanggal paparan">
}, `,
showCancelButton: true, focusConfirm: false,
confirmButtonColor: '#3085d6', preConfirm: () => {
cancelButtonColor: '#d33', const keterangan = document.getElementById('swal-keterangan').value;
confirmButtonText: 'Ya, Lanjutkan!', const tanggalPaparan = document.getElementById('swal-tanggal-paparan').value;
cancelButtonText: 'Batal',
}).then((result) => { if (!keterangan || !tanggalPaparan) {
if (result.isConfirmed) { Swal.showValidationMessage('Keterangan atau Tanggal Paparan Harus diisi!');
const userMessage = result.value || ''; // Ambil pesan dari textarea return false;
$.ajaxSetup({ }
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}' return { keterangan, tanggalPaparan };
}, },
}); showCancelButton: true,
$.ajax({ confirmButtonColor: '#3085d6',
url: `/otorisator/otorisator/${dataId}/${dataHeader}`, cancelButtonColor: '#d33',
type: 'POST', confirmButtonText: 'Ya, Lanjutkan!',
data: { cancelButtonText: 'Batal',
message: userMessage }).then((result) => {
}, if (result.isConfirmed) {
success: (response) => { const keterangan = result.value.keterangan || '';
Swal.fire('Berhasil!', const tanggalPaparan = result.value.tanggalPaparan || '';
'Data berhasil diotorisasi. Menunggu Approval EO dan atau DD',
'success').then(() => { $.ajaxSetup({
window.location.reload(); headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
}); });
console.log(response); $.ajax({
url: `/otorisator/otorisator/${dataId}/${dataHeader}`,
type: 'POST',
data: {
message: keterangan,
tanggalPaparan: tanggalPaparan
},
success: (response) => {
Swal.fire('Berhasil!',
'Data berhasil diotorisasi. Menunggu Approval dan Tanggal Paparan dari DD',
'success').then(() => {
window.location.reload();
});
console.log(response);
},
error: (error) => {
console.error('Error:', error);
Swal.fire('Gagal!', 'Terjadi kesalahan saat melakukan otorisator.',
'error');
}
});
}
});
}else{
Swal.fire({
title: 'Apakah Anda yakin?',
text: `Untuk melakukan otorisator ${dataHeader}!`,
icon: 'warning',
input: 'textarea',
inputLabel: 'Keterangan',
inputPlaceholder: 'Masukkan keterangan...',
inputAttributes: {
'aria-label': 'Masukkan keterangan'
}, },
error: (error) => { showCancelButton: true,
console.error('Error:', error); confirmButtonColor: '#3085d6',
Swal.fire('Gagal!', 'Terjadi kesalahan saat melakukan otorisator.', cancelButtonColor: '#d33',
'error'); confirmButtonText: 'Ya, Lanjutkan!',
cancelButtonText: 'Batal',
}).then((result) => {
if (result.isConfirmed) {
const userMessage = result.value || ''; // Ambil pesan dari textarea
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
});
$.ajax({
url: `/otorisator/otorisator/${dataId}/${dataHeader}`,
type: 'POST',
data: {
message: userMessage
},
success: (response) => {
Swal.fire('Berhasil!',
'Data berhasil diotorisasi. Menunggu Approval dan Tanggal Paparan dari DD',
'success').then(() => {
window.location.reload();
});
console.log(response);
},
error: (error) => {
console.error('Error:', error);
Swal.fire('Gagal!', 'Terjadi kesalahan saat melakukan otorisator.',
'error');
}
});
} }
}); });
} }
}); }else{
Swal.fire({
title: 'Apakah Anda yakin?',
text: `Untuk melakukan otorisator ${dataHeader}!`,
icon: 'warning',
input: 'textarea',
inputLabel: 'Keterangan',
inputPlaceholder: 'Masukkan keterangan...',
inputAttributes: {
'aria-label': 'Masukkan keterangan'
},
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, Lanjutkan!',
cancelButtonText: 'Batal',
}).then((result) => {
if (result.isConfirmed) {
const userMessage = result.value || ''; // Ambil pesan dari textarea
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
});
$.ajax({
url: `/otorisator/otorisator/${dataId}/${dataHeader}`,
type: 'POST',
data: {
message: userMessage
},
success: (response) => {
Swal.fire('Berhasil!',
'Data berhasil diotorisasi. Menunggu Approval EO dan atau DD',
'success').then(() => {
window.location.reload();
});
console.log(response);
},
error: (error) => {
console.error('Error:', error);
Swal.fire('Gagal!', 'Terjadi kesalahan saat melakukan otorisator.',
'error');
}
});
}
});
}
} }