Merge branch 'feature/senior-officer' into fix/save-penilai
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Http\UploadedFile;
|
||||
use Log;
|
||||
use Modules\Location\Models\City;
|
||||
use Modules\Location\Models\District;
|
||||
@@ -249,7 +250,7 @@
|
||||
'jenis_legalitas_jaminan_id' => $value,
|
||||
'name' => $request->name[$key],
|
||||
'keterangan' => $request->keterangan[$key],
|
||||
'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : ''
|
||||
'details' => isset($request->custom_field[$key]) ? json_encode(array_values($request->custom_field[$key])) : ''
|
||||
];
|
||||
|
||||
$dokumenJaminan = [];
|
||||
@@ -279,7 +280,6 @@
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Setelah loop, periksa apakah ada dokumen yang dihapus
|
||||
$existingDetail = $existingDetails->get($request->detail_dokumen_jaminan_id[$key] ?? null);
|
||||
|
||||
@@ -287,32 +287,69 @@
|
||||
$existingDokumen = json_decode($existingDetail->dokumen_jaminan, true) ?? [];
|
||||
$existingNomor = json_decode($existingDetail->dokumen_nomor, true) ?? [];
|
||||
|
||||
$newDokumenJaminan = [];
|
||||
$newDokumenNomor = [];
|
||||
|
||||
$allFilesDeleted = true;
|
||||
|
||||
// Jika jumlah dokumen berkurang, berarti ada yang dihapus
|
||||
if (count($existingDokumen) > count($dokumenJaminan)) {
|
||||
$dokumenJaminan = $existingDokumen;
|
||||
$dokumenNomor = $existingNomor;
|
||||
foreach ($request->dokumen_jaminan[$key] as $index => $file) {
|
||||
if ($file === null) {
|
||||
// Hapus dokumen yang tidak ada lagi
|
||||
unset($dokumenJaminan[$index]);
|
||||
unset($dokumenNomor[$index]);
|
||||
foreach ($existingDokumen as $index => $existingFile) {
|
||||
if (isset($request->dokumen_jaminan[$key][$index])) {
|
||||
$allFilesDeleted = false;
|
||||
$file = $request->dokumen_jaminan[$key][$index];
|
||||
if ($file instanceof \Illuminate\Http\UploadedFile) {
|
||||
// File baru diupload
|
||||
$file_name = $file->getClientOriginalName();
|
||||
$file->storeAs('public/jaminan/' . $debitur->id . '/' . $document->id . '/', $file_name);
|
||||
$newDokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
||||
$newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-';
|
||||
} elseif (is_string($file) && !empty($file)) {
|
||||
// Update nomor dokumen untuk file yang tidak diubah
|
||||
$dokumenNomor[$index] = $request->dokumen_nomor[$key][$index] ?? '-';
|
||||
// File tidak diubah
|
||||
$newDokumenJaminan[] = $existingFile;
|
||||
$newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? $existingNomor[$index];
|
||||
}
|
||||
} else {
|
||||
// File dihapus, hapus dari storage jika ada
|
||||
if (Storage::exists('public/' . $existingFile)) {
|
||||
Storage::delete('public/' . $existingFile);
|
||||
}
|
||||
}
|
||||
// Reset array keys
|
||||
$dokumenJaminan = array_values($dokumenJaminan);
|
||||
$dokumenNomor = array_values($dokumenNomor);
|
||||
}
|
||||
|
||||
// Tambahkan file baru yang mungkin ditambahkan
|
||||
foreach ($request->dokumen_jaminan[$key] ?? [] as $index => $file) {
|
||||
if ($file instanceof UploadedFile) {
|
||||
$allFilesDeleted = false;
|
||||
$file_name = $file->getClientOriginalName();
|
||||
$path = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
||||
if (!in_array($path, $newDokumenJaminan)) {
|
||||
$file->storeAs('public/' . dirname($path), $file_name);
|
||||
$newDokumenJaminan[] = $path;
|
||||
$newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-';
|
||||
}
|
||||
} elseif (is_string($file) && !empty($file) && !in_array($file, $newDokumenJaminan)) {
|
||||
$allFilesDeleted = false;
|
||||
$newDokumenJaminan[] = $file;
|
||||
$newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-';
|
||||
}
|
||||
}
|
||||
|
||||
if ($allFilesDeleted) {
|
||||
$dokumenJaminan = [];
|
||||
$dokumenNomor = [];
|
||||
} else {
|
||||
$dokumenJaminan = $newDokumenJaminan;
|
||||
$dokumenNomor = $newDokumenNomor;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!empty($dokumenJaminan)) {
|
||||
$detailData['dokumen_jaminan'] = json_encode($dokumenJaminan);
|
||||
$detailData['dokumen_nomor'] = json_encode($dokumenNomor);
|
||||
} else if(empty($dokumenJaminan)){
|
||||
$detailData['dokumen_jaminan'] = null;
|
||||
$detailData['dokumen_nomor'] = null;
|
||||
}
|
||||
|
||||
if (isset($request->detail_dokumen_jaminan_id[$key])) {
|
||||
|
||||
@@ -144,10 +144,10 @@ class PenilaiController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData', 'provinces', 'cekAlamat', 'cities', 'districts', 'villages'));
|
||||
return view('lpj::penilai.components.lpj-sederhana-standar', compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData', 'provinces', 'cekAlamat', 'cities', 'districts', 'villages'));
|
||||
}
|
||||
|
||||
public function standard(Request $request, $id)
|
||||
public function standar(Request $request, $id)
|
||||
{
|
||||
|
||||
$documentId = $request->query('documentId');
|
||||
@@ -167,7 +167,7 @@ class PenilaiController extends Controller
|
||||
'inspeksi_id' => $inspeksiId,
|
||||
],
|
||||
[
|
||||
'type_penilai' => 'standard',
|
||||
'type_penilai' => 'standar',
|
||||
]
|
||||
);
|
||||
|
||||
@@ -212,7 +212,7 @@ class PenilaiController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData', 'provinces', 'cekAlamat', 'cities', 'districts', 'villages'));
|
||||
return view('lpj::penilai.components.lpj-sederhana-standar', compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData', 'provinces', 'cekAlamat', 'cities', 'districts', 'villages'));
|
||||
}
|
||||
|
||||
public function resume(Request $request)
|
||||
@@ -570,7 +570,7 @@ class PenilaiController extends Controller
|
||||
});
|
||||
}
|
||||
|
||||
$query->whereRaw('LOWER(status) IN (?, ?, ?, ?, ?, ?,?, ?)', ['assign', 'survey-completed', 'proses-laporan', 'paparan', 'proses-paparan', 'paparan', 'revisi-laporan', 'revisi-paparan']);
|
||||
$query->whereRaw('LOWER(status) IN (?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?)', ['assign', 'survey-completed', 'proses-laporan', 'paparan', 'proses-paparan', 'paparan', 'revisi-laporan', 'revisi-paparan', 'request-freeze', 'freeze', 'reject-freeze','unfreeze-sla']);
|
||||
|
||||
if (!Auth::user()->hasRole('administrator')) {
|
||||
$query->whereHas('penilaian.userPenilai', function ($q) {
|
||||
@@ -963,41 +963,6 @@ class PenilaiController extends Controller
|
||||
}
|
||||
|
||||
|
||||
public function storeMemo(Request $request)
|
||||
{
|
||||
try {
|
||||
|
||||
$validatedData = $request->validate([
|
||||
'permohonan_id' => 'required|integer',
|
||||
'document_id' => 'required|integer',
|
||||
'inspeksi_id' => 'required|integer',
|
||||
'memo' => 'required',
|
||||
]);
|
||||
Penilai::updateOrCreate(
|
||||
[
|
||||
'permohonan_id' => $validatedData['permohonan_id'],
|
||||
'dokument_id' => $validatedData['document_id'],
|
||||
'inspeksi_id' => $validatedData['inspeksi_id'],
|
||||
],
|
||||
[
|
||||
'memo' => json_encode($validatedData['memo']),
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Berhasil saved memo'
|
||||
], 200);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Terjadi kesalahan',
|
||||
'error' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
public function storeMemoWithPhotos(Request $request)
|
||||
{
|
||||
try {
|
||||
@@ -1021,6 +986,8 @@ class PenilaiController extends Controller
|
||||
]
|
||||
);
|
||||
|
||||
$existingPhotos = isset($memo->memo) ? json_decode($memo->memo)->foto : [];
|
||||
dd($existingPhotos);
|
||||
// Simpan foto-foto
|
||||
if ($request->hasFile('foto_0')) {
|
||||
$photoUrls = [];
|
||||
@@ -1033,11 +1000,15 @@ class PenilaiController extends Controller
|
||||
$index++;
|
||||
}
|
||||
|
||||
// Tambahkan URL foto ke data memo
|
||||
$memoData['foto'] = $photoUrls;
|
||||
$memo->memo = json_encode($memoData);
|
||||
$memo->save();
|
||||
$memoData['foto'] = array_merge($existingPhotos, $photoUrls);
|
||||
|
||||
}else{
|
||||
$memoData['foto'] = $existingPhotos;
|
||||
}
|
||||
// Tambahkan URL foto ke data memo
|
||||
$memoData['foto'] = $photoUrls;
|
||||
$memo->memo = json_encode($memoData);
|
||||
$memo->save();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
@@ -1387,7 +1358,7 @@ class PenilaiController extends Controller
|
||||
{
|
||||
$viewMap = [
|
||||
'sederhana' => 'penilai.components.print-out-sederhana',
|
||||
'standard' => 'penilai.components.print-out-standard',
|
||||
'standar' => 'penilai.components.print-out-standar',
|
||||
'resume' => 'penilai.components.print-resume',
|
||||
'memo' => 'penilai.components.print-memo',
|
||||
'rap' => 'penilai.components.print-out-rap',
|
||||
@@ -1450,7 +1421,7 @@ class PenilaiController extends Controller
|
||||
}
|
||||
|
||||
|
||||
if ($type === 'standard' || $type === 'sederhana') {
|
||||
if ($type === 'standar' || $type === 'sederhana') {
|
||||
return $this->checkDataLpj($type, $statusLpj);
|
||||
}
|
||||
|
||||
|
||||
@@ -450,7 +450,7 @@ class PenilaianController extends Controller
|
||||
|
||||
public function otorisatorUpdate(Request $request, $id, $context)
|
||||
{
|
||||
if ($context === 'SLA') {
|
||||
if ($context === 'Freze SLA' || $context === 'Unfreeze SLA') {
|
||||
$authorization = Authorization::with(['user'])->find($id);
|
||||
if (!$authorization) {
|
||||
return response()->json([
|
||||
@@ -513,7 +513,7 @@ class PenilaianController extends Controller
|
||||
}
|
||||
break;
|
||||
|
||||
case 'sla':
|
||||
case 'freze sla':
|
||||
if (Auth::user()->roles[0]->name === 'senior-officer' || Auth::user()->roles[0]->name === 'administrator' && $authorization->approve_so === null) {
|
||||
$authorization->update([
|
||||
'status' => '3',
|
||||
@@ -595,6 +595,14 @@ class PenilaianController extends Controller
|
||||
]);
|
||||
}
|
||||
break;
|
||||
case 'unfreeze sla':
|
||||
$authorization->update([
|
||||
'request' => 'unfreeze-sla',
|
||||
]);
|
||||
$permohonan->update([
|
||||
'status' => 'unfreeze-sla',
|
||||
]);
|
||||
break;
|
||||
|
||||
default:
|
||||
return response()->json([
|
||||
@@ -633,7 +641,7 @@ class PenilaianController extends Controller
|
||||
'Pelaporan' => 'proses-laporan',
|
||||
'Pembayaran' => 'proses',
|
||||
'Pembatalan' => 'batal',
|
||||
'SLA' => 'freeze',
|
||||
'SLA' => 'request-freeze',
|
||||
'Paparan' => 'proses-paparan',
|
||||
default => '',
|
||||
};
|
||||
@@ -665,7 +673,7 @@ class PenilaianController extends Controller
|
||||
$query->whereRaw('LOWER(status) = ?', [strtolower($status)]);
|
||||
} elseif ($status == 'batal') {
|
||||
$query->whereRaw('LOWER(status) = ?', [strtolower($status)]);
|
||||
} elseif ($status == 'freeze') {
|
||||
} elseif ($status == 'request-freeze') {
|
||||
$query->whereRaw('LOWER(status) = ?', [strtolower($status)]);
|
||||
} elseif ($status == 'proses-paparan') {
|
||||
$query->whereRaw('LOWER(status) IN (?, ?)', ['proses-paparan', 'paparan']);
|
||||
@@ -825,8 +833,8 @@ class PenilaianController extends Controller
|
||||
private function getViewLaporan($tipe)
|
||||
{
|
||||
$viewMap = [
|
||||
'sederhana' => 'penilai.components.lpj-sederhana-standard',
|
||||
'standard' => 'penilai.components.lpj-sederhana-standard',
|
||||
'sederhana' => 'penilai.components.lpj-sederhana-standar',
|
||||
'standar' => 'penilai.components.lpj-sederhana-standar',
|
||||
'resume' => 'penilai.components.resume',
|
||||
'memo' => 'penilai.components.memo',
|
||||
'rap' => 'penilai.components.rap-penilai',
|
||||
@@ -891,7 +899,8 @@ class PenilaianController extends Controller
|
||||
|
||||
public function revisiLaporan(Request $request, $id)
|
||||
{
|
||||
if($request->dataHeader=='Paparan'){
|
||||
// dd($id);
|
||||
if($request->dataHeader=='Paparan' || $request->dataHeader=='Freze SLA'){
|
||||
$authorization = Authorization::find($id);
|
||||
$permohonan = Permohonan::find($authorization->permohonan_id);
|
||||
} else {
|
||||
@@ -905,7 +914,13 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
$status = 'revisi-paparan';
|
||||
} elseif ($permohonan->status === 'proses-laporan' && $userRole === 'EO Appraisal') {
|
||||
}else if($permohonan->status === 'request-freeze'){
|
||||
if ($authorization) {
|
||||
$authorization->delete();
|
||||
}
|
||||
|
||||
$status = 'reject-freeze';
|
||||
}elseif ($permohonan->status === 'proses-laporan' && $userRole === 'EO Appraisal') {
|
||||
$permohonan->update([
|
||||
'approval_so' => 0,
|
||||
'approval_so_at' => null,
|
||||
|
||||
@@ -71,7 +71,7 @@ class SLAController extends Controller
|
||||
// abort(403, 'Sorry! You are not allowed to view users.');
|
||||
}
|
||||
|
||||
$query = Authorization::query()->with('permohonan.debiture','user','approveSo','approveEo','approveDd')->where('jenis','sla');
|
||||
$query = Authorization::query()->with('permohonan.debiture', 'user', 'approveSo', 'approveEo', 'approveDd')->where('jenis', 'sla')->where('request', 'freeze');
|
||||
|
||||
// Pencarian berdasarkan parameter search
|
||||
if ($request->has('search') && !empty($request->get('search'))) {
|
||||
|
||||
@@ -766,9 +766,15 @@ class SurveyorController extends Controller
|
||||
|
||||
$permohonan->update([
|
||||
'status' => 'survey-completed',
|
||||
'submitted_at' => now()
|
||||
]);
|
||||
|
||||
$penilaian = Penilaian::where('nomor_registrasi', $permohonan->nomor_registrasi)->first();
|
||||
|
||||
$penilaian->update([
|
||||
'status' => 'survey-completed',
|
||||
]);
|
||||
|
||||
|
||||
if($permohonan->jenisPenilaian->name=="External") {
|
||||
LaporanExternal::updateOrCreate(
|
||||
['permohonan_id' => $permohonan->id],
|
||||
@@ -916,10 +922,16 @@ class SurveyorController extends Controller
|
||||
try {
|
||||
$permohonan = Permohonan::findOrFail($id);
|
||||
|
||||
$permohonan->update([
|
||||
'keterangan' => $request->keterangan,
|
||||
'status' => 'request-freeze',
|
||||
]);
|
||||
|
||||
Authorization::updateOrCreate([
|
||||
'permohonan_id' => $permohonan->id,
|
||||
'jenis' => 'sla'
|
||||
'jenis' => 'sla',
|
||||
], [
|
||||
'keterangan' => $request->keterangan,
|
||||
'request' => 'freeze',
|
||||
'user_id' => Auth::user()->id
|
||||
]);
|
||||
@@ -2424,7 +2436,7 @@ class SurveyorController extends Controller
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'signature' => 'required',
|
||||
'type' => 'required|in:penilai,cabang,debitur,kjjp',
|
||||
'type' => 'required|in:penilai,cabang,debitur,kjpp',
|
||||
'name' => 'nullable|string',
|
||||
'document_id' => 'nullable|string'
|
||||
]);
|
||||
@@ -2531,7 +2543,7 @@ class SurveyorController extends Controller
|
||||
{
|
||||
try {
|
||||
$validator = Validator::make($request->all(), [
|
||||
'type' => 'required|in:penilai,cabang,debitur,kjjp'
|
||||
'type' => 'required|in:penilai,cabang,debitur,kjpp'
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
|
||||
Reference in New Issue
Block a user