Compare commits

...

13 Commits

Author SHA1 Message Date
daengdeni
ff3565f735 Merge remote-tracking branch 'composer/feature/senior-officer' into staging 2025-01-22 09:15:45 +07:00
majid
850534f1e2 Merge branch 'staging' into feature/senior-officer 2025-01-22 09:09:15 +07:00
majid
575ea3fdce fix(penilai): perbaikan output resume,memo dan update upload foto directory by nomor registrasi 2025-01-22 09:06:10 +07:00
Daeng Deni Mardaeni
15c5ccbf39 fix(otorisator): perbaiki logika otorisasi pada tampilan otorisator
- Memperbaiki kondisi otorisasi untuk peran administrator dan DD Appraisal.
- Mengubah pengecekan dari `approval_dd` menjadi `approve_dd` untuk konsistensi.
- Memastikan logika tetap sesuai dengan persyaratan yang ada.
2025-01-22 08:04:18 +07:00
Daeng Deni Mardaeni
b46f791ab2 fix(PenilaianController): perbaiki logika otorisasi untuk peran administrator
- Menambahkan kondisi untuk peran 'administrator' dalam logika otorisasi.
- Memperbaiki pembaruan status berdasarkan persetujuan yang diberikan oleh peran yang berbeda.
- Memastikan bahwa semua peran yang relevan dapat memperbarui status dengan benar.
2025-01-22 07:57:19 +07:00
Daeng Deni Mardaeni
5203033ba5 fix(otorisator): perbaiki tampilan dan logika otorisator
- Menghapus tombol otorisator untuk peran 'administrator' dan 'DD Appraisal' pada tampilan 'paparan'.
- Memperbaiki format penanganan keterangan dan tanggal paparan.
2025-01-22 07:49:22 +07:00
Daeng Deni Mardaeni
aa75b70c52 fix(PenilaianController): perbaiki pengambilan data otorisasi
- Mengubah metode pengambilan data otorisasi dari `find` menjadi `where` dan `first` untuk memastikan hanya data yang sesuai dengan `permohonan_id` yang diambil.
- Memperbaiki potensi masalah saat mengambil data otorisasi berdasarkan ID.
2025-01-22 07:46:17 +07:00
Daeng Deni Mardaeni
771cc4cb98 fix(PenilaianController): perbaiki pengambilan data otorisasi
- Menambahkan pengambilan data otorisasi berdasarkan ID pada tampilan 'Paparan'.
- Memastikan data otorisasi yang ditampilkan mencakup informasi pengguna.
2025-01-22 07:36:54 +07:00
Daeng Deni Mardaeni
8ddf7c9abe fix(Permohonan): perbaiki pengolahan keterangan registrasi catatan
- Menambahkan logika untuk menggabungkan keterangan dengan registrasi catatan jika ada.
- Memastikan keterangan tidak kosong sebelum ditambahkan ke dalam string.
2025-01-22 07:34:22 +07:00
Daeng Deni Mardaeni
7558d1a574 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'.
2025-01-22 07:33:58 +07:00
majid
d101db1043 Merge branch 'staging' into feature/senior-officer 2025-01-21 12:32:55 +07:00
majid
27be516a67 perbaikan pembanding input bangunan 2025-01-21 12:30:49 +07:00
majid
60b2fac278 perbaikan foto tempat 2025-01-21 12:23:51 +07:00
15 changed files with 682 additions and 347 deletions

View File

@@ -151,6 +151,7 @@ class PenilaiController extends Controller
$jaminanId = $request->query('jaminanId');
$permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId);
$nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'resume');
$inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first();
$noLpresume = $this->generateNoLaporan($permohonan, $documentId, 'resume');
Penilai::updateOrCreate(
@@ -177,7 +178,7 @@ class PenilaiController extends Controller
$forminspeksi = json_decode($inspeksi->data_form, true);
}
return view('lpj::penilai.components.resume', compact('permohonan', 'resumeData', 'forminspeksi'));
return view('lpj::penilai.components.resume', compact('permohonan', 'resumeData', 'forminspeksi', 'nomorLaporan'));
}
public function memo(Request $request)
@@ -932,9 +933,7 @@ class PenilaiController extends Controller
'tanggalLaporan',
'rap'
));
// return $pdf;
$cleanNomorLaporan = str_replace(['/', '\\'], '-', $nomorLaporan);
$pdf->setPaper('A4', 'portrait');
return $pdf->download('Laporan_'. $tipeLaporan . '_' .$permohonan->debiture->name . '_' . $cleanNomorLaporan .'_data.pdf');
@@ -1055,7 +1054,7 @@ class PenilaiController extends Controller
if ($laporan) {
$nomorArray = explode('/', $laporan->nomor_laporan);
$nomorArray[2] = $typeMapping[$type] ?? 'RSM';
$nomorArray[2] = $typeMapping[$type] ?? 'RES';
$laporan->update([
'nomor_laporan' => implode('/', $nomorArray)
]);

View File

@@ -415,6 +415,7 @@ class PenilaianController extends Controller
return view('lpj::penilaian.otorisator.sla', compact('permohonan', 'header', 'authorization'));
}
if ($header === 'Paparan') {
$authorization = Authorization::with(['user'])->where('permohonan_id', $id)->first();
return view('lpj::penilaian.otorisator.show', compact('permohonan', 'header', 'authorization'));
}
return view('lpj::penilaian.otorisator.show', compact('permohonan', 'header', 'authorization'));
@@ -430,6 +431,14 @@ class PenilaianController extends Controller
], 404);
}
$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 {
$permohonan = Permohonan::find($id);
}
@@ -483,7 +492,7 @@ class PenilaianController extends Controller
break;
case 'sla':
if (Auth::user()->roles[0]->name === 'senior-officer') {
if (Auth::user()->roles[0]->name === 'senior-officer' || Auth::user()->roles[0]->name === 'administrator' && $authorization->approve_so === null) {
$authorization->update([
'status' => '3',
'status_so' => '1',
@@ -491,9 +500,9 @@ class PenilaianController extends Controller
'approve_so_at' => now(),
'keterangan_so' => $request->message,
]);
} 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' && $authorization->approve_so && $authorization->approve_eo === null) {
$status = '2';
if (!in_array($permohonan->nulai_plafond_id, [1, 4])) {
if (!in_array($permohonan->nilai_plafond_id, [1, 4])) {
$status = '1';
$permohonan->update([
'status' => $authorization->request
@@ -507,7 +516,7 @@ class PenilaianController extends Controller
'approve_eo_at' => now(),
'keterangan_eo' => $request->message,
]);
} elseif (Auth::user()->roles[0]->name === 'DD Appraisal') {
} elseif (Auth::user()->roles[0]->name === 'DD Appraisal' || Auth::user()->roles[0]->name === 'administrator' && $authorization->approve_so && $authorization->approve_eo && $authorization->approve_dd === null) {
$authorization->update([
'status' => '1',
'status_dd' => '1',
@@ -522,11 +531,45 @@ class PenilaianController extends Controller
}
break;
case 'paparan':
$permohonan->update([
'status' => 'paparan',
'keterangan' => $request->message,
]);
if (Auth::user()->roles[0]->name === 'senior-officer' || Auth::user()->roles[0]->name === 'administrator' && $authorization->approve_so === null) {
$authorization->update([
'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') {
$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' || Auth::user()->roles[0]->name === 'administrator' && $authorization->approve_so && $authorization->approve_dd === null) {
$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;
default:
return response()->json([
'message' => 'Konteks otorisasi tidak valid.',

View File

@@ -253,7 +253,8 @@ class SurveyorController extends Controller
'nama_denah.*' => 'nullable|string|max:255',
'luas_denah.*' => 'nullable|numeric',
'permohonan_id' => 'required|exists:permohonan,id',
'dokument_id' => 'required'
'dokument_id' => 'required',
'nomor_registrasi' => 'required'
]);
if ($validator) {
try {
@@ -276,7 +277,7 @@ class SurveyorController extends Controller
if ($request->hasFile('foto_denah') && isset($request->file('foto_denah')[$index])) {
$file = $request->file('foto_denah')[$index];
$denahItem['foto_denah'] = $this->uploadFile($file, 'foto_denah');
$denahItem['foto_denah'] = $this->uploadFile($file, $request->nomor_registrasi);
} elseif (isset($existingDenahs[$index]['foto_denah'])) {
$denahItem['foto_denah'] = $existingDenahs[$index]['foto_denah'];
}
@@ -381,7 +382,7 @@ class SurveyorController extends Controller
}
// Upload dan simpan file baru
$formatFotojson[$file] = $this->uploadFile($request->file($file), $file);
$formatFotojson[$file] = $this->uploadFile($request->file($file), $request->nomor_registrasi);
}
}
@@ -448,12 +449,13 @@ class SurveyorController extends Controller
continue; // Lewati file yang tidak valid
}
// Generate nama file unik
$uniqueFileName = 'lantai_unit_' . $lantaiNomor . '_' . $fileIndex . '_' . Str::random(10) . '.' . $file->getClientOriginalExtension();
// Simpan file dengan nama asli
$path = $file->storeAs(
'surveyor/lantai_unit',
'surveyor/' . $request->nomor_registrasi . '/foto_lantai_unit',
$uniqueFileName . '/' . time() . '_' . $file->getClientOriginalName(),
'public'
);
@@ -490,12 +492,13 @@ class SurveyorController extends Controller
$formatFotoData = [];
foreach ($files as $index => $file) {
$timestamp = time();
$originalName = $file->getClientOriginalName();
$uniqueFileName = "{$timestamp}_{$originalName}";
$fileExtension = $file->extension();
$originalName = time() . '_' . $request->nomor_registrasi . '.' . $fileExtension;
// Simpan file
$path = $file->storeAs("surveyor/{$paramName}", $uniqueFileName, 'public');
$path = $file->storeAs("surveyor/{$request->nomor_registrasi}", $originalName, 'public');
$fotoData = [
'path' => $path,
@@ -653,7 +656,7 @@ class SurveyorController extends Controller
// Buat entri baru untuk file yang diunggah
$newPhotoEntry = [
$nameField => $newNames[$key],
$photoField => $this->uploadFile($file, $photoField . '.' . $key),
$photoField => $this->uploadFile($file, $request->nomor_registrasi),
$descriptionField => $newDescriptions[$key] ?? '',
];
@@ -777,7 +780,7 @@ class SurveyorController extends Controller
// Create new photo entry
$newPhotoEntry = [
$nameField => $newNames[$key] ?? '', // Use new name if provided
$photoField => $this->uploadFile($file, $photoField . '.' . $key)
$photoField => $this->uploadFile($file, $request->nomor_registrasi)
];
// Add description if field exists
@@ -959,11 +962,11 @@ class SurveyorController extends Controller
$id = $request->input('id');
$penilaian = Penilaian::findOrFail($id);
if ($validate['waktu_penilaian'] <= $penilaian->tanggal_kunjungan) {
return redirect()
->route('surveyor.index')
->with('error', 'Waktu penilaian harus lebih besar dari tanggal assign.');
}
if ($validate['waktu_penilaian'] <= $penilaian->tanggal_kunjungan) {
return redirect()
->route('surveyor.index')
->with('error', 'Waktu penilaian harus lebih besar dari tanggal assign.');
}
$penilaian->update([
'waktu_penilaian' => $validate['waktu_penilaian'],
'deskripsi_penilaian' => $validate['deskripsi_penilaian'],
@@ -1026,18 +1029,18 @@ class SurveyorController extends Controller
'user_id' => Auth::user()->id
]);
return response()->json([
'success' => true,
'message' => 'Berhasil Kirim permintaan Request Freeaze ke So'
], 200);
return response()->json([
'success' => true,
'message' => 'Berhasil Kirim permintaan Request Freeaze ke So'
], 200);
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => 'Terjadi kesalahan',
'error' => $e->getMessage()
], 500);
}
} catch (\Exception $e) {
return response()->json([
'success' => false,
'message' => 'Terjadi kesalahan',
'error' => $e->getMessage()
], 500);
}
}
@@ -2617,8 +2620,9 @@ class SurveyorController extends Controller
if ($request->hasFile($fileKey)) {
$file = $request->file($fileKey);
if ($file->isValid()) {
$fileName = time() . '_' . $file->getClientOriginalName();
$path = $file->storeAs("public/surveyor/{$request->type}", $fileName);
$fileExtension = $file->extension();
$fileName = time() . '_' . $request->nomor_registrasi . '.' . $fileExtension;
$path = $file->storeAs("public/surveyor/{$request->nomor_registrasi}", $fileName);
if ($path === false) {
throw new Exception("Failed to store file for {$fileKey}");
@@ -3093,7 +3097,8 @@ class SurveyorController extends Controller
throw new Exception("Invalid file upload for {$type}");
}
$fileName = time() . '_' . $file->getClientOriginalName();
$fileExtension = $file->extension();
$fileName = time() . '_' . $type . '.' . $fileExtension;
$path = $file->storeAs("public/surveyor/{$type}", $fileName);
if ($path === false) {

View File

@@ -568,6 +568,7 @@ class FormSurveyorRequest extends FormRequest
return [
'permohonan_id' => 'required',
'type' => 'required',
'nomor_registrasi' => 'required',
'debitur_perwakilan' => 'required|array',
'jenis_asset_name' => 'nullable|',
'jenis_asset' => 'required',

View File

@@ -102,8 +102,15 @@
{
$historyService = app(PermohonanHistoryService::class);
$keterangan = request()->input('keterangan', '');
if (request()->filled('registrasi_catatan')) {
if (!empty($keterangan)) {
$keterangan .= "\n";
}
$keterangan .= request()->input('registrasi_catatan');
}
$status = $permohonan->status;
$keterangan = request()->input('keterangan'); // Get keterangan from request
$beforeRequest = $action === 'updated' ? $permohonan->getOriginal() : [];
$afterRequest = $permohonan->toArray();
$file = $permohonan->dokumen ?? null;

View File

@@ -358,7 +358,7 @@
confirmButtonText: 'OK'
}).then((response) => {
if (response.isConfirmed) {
window.location.reload();
// window.location.reload();
}
});
} else {

View File

@@ -108,6 +108,34 @@
</head>
<body style="width: 80%; margin: auto">
@php
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first();
$teams = $permohonan->region->teams;
if ($teams) {
foreach ($teams as $team) {
$team_users = $team->teamsUsers;
// print_r($team_users);
if ($team_users) {
foreach ($team_users as $team_user) {
$user = $team_user->user;
if ($user && $user->hasRole('senior-officer')) {
$senior_officer = $user;
break 3;
}
}
}
}
}
}
$data = rtrim($data, ', ');
@endphp
<header id="header">
<table style="width: 100%; border: none;">
<tr>
@@ -119,10 +147,10 @@
</header>
<main class="content">
<table>
<table style="width: 100%">
<tr>
<td>
<h2 style=" text-transform: uppercase;">MEMO ANTAR KANTOR</h2>
<td style="text-align: center; margin-top: 5px;">
<h2 style="text-decoration: underline; text-transform: uppercase; text-align: center; margin: 0;">MEMO ANTAR KANTOR</h2>
</td>
</tr>
</table>
@@ -138,7 +166,7 @@
<td style="width: 79%; padding: 2px;">{{ $memo['dari'] ?? '' }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">No</td>
<td style="width: 20%; padding: 2px;">No memo</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $nomorLaporan ?? '-' }}</td>
</tr>
@@ -158,25 +186,30 @@
<tr>
<td>
Menindak lanjuti permintann penilaian jaminan dari {{ $permohonan->user->name }} AO Cabang {{ $permohonan->debiture->branch->name ?? '' }}
tanggal , dapat di sampaikan sebagai berikut:
tanggal {{formatTanggalIndonesia($memo['tanggal']) ?? ''}}, dapat di sampaikan sebagai berikut:
</td>
</tr>
</table>
<table>
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
<tr>
<td>
<h2 style=" text-transform: uppercase;">Identitas Deitur & Hubungan dan Penghuni</h2>
<td style="">
<h6 style="text-transform: uppercase; margin: 0; ">Data Debitur dan Jaminan</h2>
</td>
</tr>
</table>
<table style="width: 100%">
<tr>
<td style="width: 20%; padding: 2px;">Nama Calon Debiture</td>
<td style="width: 20%; padding: 2px;">Nama Calon Debitur</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $permohonan->debiture->name ?? '' }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Jenis Aset</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $data ?? '' }}</td>
</tr>
@if (@isset($dokumen))
@foreach ($dokumen->detail as $details)
@@ -213,16 +246,7 @@
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $permohonan->debiture->name ?? '' }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Tanggal Terbit Sertifikat</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;"></td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Surat Ukur No</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;"></td>
</tr>
<tr>
@php
$cekLuas = isset($forminspeksi['tanah']['luas_tanah']['tidak sesuai']) ? 'tidak sesuai' : 'sesuai';
@@ -233,76 +257,72 @@
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $luas ?? '' }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Lokasi Jaminan</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $memo['lokasi']['address'] ?? '' }}, {{ $alamat['village_code'] ?? '' }} {{ $alamat['district_code'] ?? '' }}, {{ $alamat['city_code'] ?? '' }}, {{ $alamat['province_code'] ?? '' }} </td>
</tr>
</table>
<table>
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
<tr>
<td>
<h2 style=" text-transform: uppercase;">Loaksi Jaminan</h2>
<td style="">
<h6 style="text-transform: uppercase; margin: 0; ">HASIL Kunjungan</h6>
</td>
</tr>
</table>
<table style="width: 100%">
<table style="width: 100%">
<tr>
<td style="width: 20%; padding: 2px;">Terletak di</td>
<td style="width: 20%; padding: 2px;">Tanggal Kunjungan</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;"> {{ $memo['lokasi']['address'] ?? '' }}</td>
<td style="width: 79%; padding: 2px;">{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Kelurahan</td>
<td style="width: 20%; padding: 2px;">Surveyor</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $alamat['village_code'] ?? '' }}</td>
<td style="width: 79%; padding: 2px;">{{ $surveyor->userPenilaiTeam->name ?? '' }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Kecamatan</td>
<td style="width: 20%; padding: 2px;">Pihak Pemohon</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $alamat['district_code'] ?? '' }}</td>
<td style="width: 79%; padding: 2px;">{{ $permohonan->user->name ?? '' }} -
{{ $permohonan->debiture->branch->name ?? '' }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Kota</td>
<td style="width: 20%; padding: 2px;">Pihak Cadeb/Debitur</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;"> {{ $alamat['city_code'] ?? '' }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Propinsi</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $alamat['province_code'] ?? '' }}</td>
</tr>
<tr>
<td style="width: 20%; padding: 2px;">Titik Kordinat</td>
<td style="width: 1%; padding: 2px;">:</td>
<td style="width: 79%; padding: 2px;">{{ $alamat['province_code'] ?? '' }}</td>
<td style="width: 79%; padding: 2px;">{{ $permohonan->debiture->name ?? '' }}</td>
</tr>
</table>
<table>
<tr>
<td>
<h2 style=" text-transform: uppercase;">HASIL INSPEKSI</h2>
</td>
</tr>
<tr>
@isset($memo['hasil_survey'])
@foreach ($memo['hasil_survey'] as $key => $item)
<tr>
<td>{{ $key + 1 }} . {{ $item }}</td>
<td>{{ $item }}</td>
</tr>
@endforeach
@endisset
</tr>
</table>
<table>
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
<tr>
<td>
<h2 style=" text-transform: uppercase;">KESIMPULAN DAN SARAN</h2>
<td style="">
<h6 style="text-transform: uppercase; margin: 0; ">KESIMPULAN DAN SARAN</h6>
</td>
</tr>
<tr>
@isset($memo['kesimpulan_saran'])
@foreach ($memo['kesimpulan_saran'] as $key => $item)
<tr>
<td>{{ $key + 1 }} . {{ $item }}</td>
<td> {{ $item }}</td>
</tr>
@endforeach
@endisset
@@ -311,7 +331,7 @@
<table style="width: 100%">
<tr>
<td>Demikian Kami Sampaikan, aatas perhatiannya kami ucapkan terimakasih</td>
<td>Demikian Kami Sampaikan, atas perhatiannya kami ucapkan terimakasih</td>
</tr>
<tr>
<table style="width: 100%; text-align: center;">
@@ -323,44 +343,32 @@
<td style="height: 50px"></td>
</tr>
@php
$senior_officer = null;
if ($permohonan->debiture && $permohonan->debiture->documents) {
foreach ($permohonan->debiture->documents as $dokumen) {
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$teams = $permohonan->region->teams;
if ($teams) {
foreach ($teams as $team) {
$team_users = $team->teamsUsers;
// print_r($team_users);
if ($team_users) {
foreach ($team_users as $team_user) {
$user = $team_user->user;
if ($user && $user->hasRole('senior-officer')) {
$senior_officer = $user;
break 3;
}
}
}
}
}
}
}
use Modules\Usermanagement\Models\User;
@endphp
<tr>
<td>{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
Appraisal
<td >{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
<span style="text-transform: uppercase; margin: 0; ">
PENILAI
</span>
</td>
<td> {{ $senior_officer->name ?? '' }}</br>
SO Region
<td > {{ $senior_officer->name ?? '' }}</br>
<span style="text-transform: uppercase; margin: 0; ">
SENIOR OFFICER
</span>
</td>
<td> {{ $senior_officer->name ?? '' }}</br>
EO Appraisal
<td > {{ $senior_officer->name ?? '' }}</br>
<span style="text-transform: uppercase; margin: 0; ">
EXECUTIVE OFFICER
</span>
</td>
<td> {{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
Deputy Director
<td > {{ User::role('DD Appraisal')->first()->name ?? '' }}</br>
<span style="text-transform: uppercase; margin: 0; ">
Deputy Director
</span>
</td>
</tr>
</table>

View File

@@ -7,9 +7,8 @@
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Laporan Penilai Jaminan</title>
<style>
* {
* {
font-family: Arial, Helvetica, sans-serif;
font-size: 10px;
}
@@ -109,12 +108,33 @@
<body style="width: 80%; margin: auto">
@php
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
}
$data = rtrim($data, ', ');
@endphp
$data = '';
foreach ($permohonan->debiture->documents as $dokumen) {
$data .= $dokumen->jenisJaminan->name . ', ';
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first();
$teams = $permohonan->region->teams;
if ($teams) {
foreach ($teams as $team) {
$team_users = $team->teamsUsers;
// print_r($team_users);
if ($team_users) {
foreach ($team_users as $team_user) {
$user = $team_user->user;
if ($user && $user->hasRole('senior-officer')) {
$senior_officer = $user;
break 3;
}
}
}
}
}
}
$data = rtrim($data, ', ');
@endphp
<header id="header">
<table style="width: 100%; border: none;">
<tr>
@@ -128,20 +148,22 @@
<main class="content">
<table style="width: 100%">
<tr>
<td>
<h2 style="text-decoration: underline; text-transform: uppercase; text-align: center;">Resume
<td style="text-align: center; margin-top: 5px;">
<h2 style="text-decoration: underline; text-transform: uppercase; text-align: center; margin: 0;">Resume
Penilaian
</h2>
<p style="font-size: 12px; margin: 0;">NO: {{ $nomorLaporan }}</p>
</td>
</tr>
</table>
<table >
<table>
<tr>
<td style="width: 20%">Pemohon</td>
<td style="width: 1%">:</td>
<td style="width: 100%">{{ $permohonan->user->name ?? '' }}</td>
<td style="width: 100%">{{ $permohonan->user->name ?? '' }} -
{{ $permohonan->debiture->branch->name ?? '' }}</td>
</tr>
<tr>
@@ -157,7 +179,8 @@
<tr>
<td>Lokasi Objek</td>
<td>:</td>
<td>{{ $alamat['village_code'] ?? '' }}, {{ $alamat['district_code'] ?? '' }}, {{ $alamat['city_code'] ?? '' }}, {{ $alamat['province_code'] ?? '' }}</td>
<td>{{ $alamat['village_code'] ?? '' }}, {{ $alamat['district_code'] ?? '' }},
{{ $alamat['city_code'] ?? '' }}, {{ $alamat['province_code'] ?? '' }}</td>
</tr>
<tr>
<td style="vertical-align: top; padding:2px;">Dokumen</td>
@@ -195,98 +218,156 @@
</tr>
<tr>
@php
$cekLuas = isset(
$forminspeksi['tanah']['luas_tanah']['tidak sesuai'],
)
? 'tidak sesuai'
: 'sesuai';
$cekLuas = isset($forminspeksi['tanah']['luas_tanah']['tidak sesuai']) ? 'tidak sesuai' : 'sesuai';
$luas = $forminspeksi['tanah']['luas_tanah'][$cekLuas] ?? null;
@endphp
$luas = $forminspeksi['tanah']['luas_tanah'][$cekLuas] ?? null;
@endphp
<td>Luas Tanah</td>
<td>:</td>
<td>{{ $luas ?? '' }}</td>
</tr>
<tr>
<td>Tanggal Kunjungan</td>
<td>Tanggal Survey</td>
<td>:</td>
<td>{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</td>
</tr>
<tr>
<td>Tanggal Resume</td>
<td>:</td>
<td>{{ formatTanggalIndonesia($resumeData['tanggal_resume']) ?? '' }}</td>
</tr>
</table>
<table>
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
<tr>
<td>
<h2 style=" text-transform: uppercase;">Faktor Positif</h2>
<td style="">
<h6 style="text-transform: uppercase; margin: 0; ">Faktor Positif</h2>
</td>
</tr>
<tr>
@isset($resumeData['fakta']['fakta_positif'])
@foreach ($resumeData['fakta']['fakta_positif'] as $key => $item)
<tr>
<td>{{ $key + 1 }} . {{ $item }}</td>
</tr>
@endforeach
<tr>
<td>{{ $key + 1 }} . {{ $item }}</td>
</tr>
@endforeach
@endisset
</tr>
</table>
<table>
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
<tr>
<td>
<h2 style=" text-transform: uppercase;">Faktor negatif</h2>
<td style="">
<h6 style="text-transform: uppercase; margin: 0; ">Faktor negatif</h2>
</td>
</tr>
<tr>
@isset($resumeData['fakta']['fakta_negatif'])
@foreach ($resumeData['fakta']['fakta_negatif'] as $key => $item)
<tr>
<td>{{ $key + 1 }} . {{ $item }}</td>
</tr>
@endforeach
<tr>
<td>{{ $key + 1 }} . {{ $item }}</td>
</tr>
@endforeach
@endisset
</tr>
</table>
<table style="width: 100%">
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
<tr>
<td>
<h2 style=" text-transform: uppercase;">Nilai Pasar Wajar</h2>
<td style="">
<h3 style="text-transform: uppercase; margin: 0; ">Kesimpulan Nilai Pasar Wajar</h2>
</td>
<td>:</td>
<td></td>
</tr>
</table>
<table border="1" style="width: 100%">
<tr>
<td>
Keterangan
</td>
<td>
Nilai Pasar Wajar
</td>
<td>
Nilai Likudasi
</td>
</tr>
<tr>
@foreach ($resumeData['fisik'] as $item)
<td>
{{ $item['sertifikat'] ?? '' }}
</td>
<td>
{{ $item['nilai'] ?? '' }}
</td>
<td>
-
</td>
@endforeach
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
<tr>
<td style="">
<h6 style="text-transform: uppercase; margin: 0; ">1. Sesuai Fisik</h6>
</td>
</tr>
</table>
<table>
<table border="1" style="width: 100%; border-collapse: collapse; margin-bottom: 10px;">
<tr>
<td>
<h2 style=" text-transform: uppercase;">lain lain</h2>
<td style="border: 1px solid #000; padding: 4px;">Sertifikat</td>
<td style="border: 1px solid #000; padding: 4px;">Luas Tanah ()</td>
<td style="border: 1px solid #000; padding: 4px;">Luas Bangunan ()</td>
<td style="border: 1px solid #000; padding: 4px;">Nilai Pasar Wajar (Rp)</td>
</tr>
@foreach ($resumeData['fisik'] as $item)
<tr>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['sertifikat'] ?? '' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_tanah'] ?? '' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_bangunan'] ?? '' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['nilai'] ?? '' }}</td>
</tr>
@endforeach
</table>
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
<tr>
<td style="">
<h6 style="text-transform: uppercase; margin: 0; ">2. Sesuai IMB</h6>
</td>
</tr>
</table>
<table border="1" style="width: 100%; border-collapse: collapse; margin-bottom: 10px;">
<tr>
<td style="border: 1px solid #000; padding: 4px;">Sertifikat</td>
<td style="border: 1px solid #000; padding: 4px;">Luas Tanah ()</td>
<td style="border: 1px solid #000; padding: 4px;">Luas Bangunan ()</td>
<td style="border: 1px solid #000; padding: 4px;">Nilai Pasar Wajar (Rp)</td>
</tr>
@foreach ($resumeData['sesuai_imb'] as $item)
<tr>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['sertifikat'] ?? '' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_tanah'] ?? '' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_bangunan'] ?? '' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['nilai'] ?? '' }}</td>
</tr>
@endforeach
</table>
@if (!empty($resumeData['tambahan']))
@foreach ($resumeData['tambahan'] as $index => $item)
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
<tr>
<td style="">
<h6 style="text-transform: uppercase; margin: 0; ">
{{ $index + 3 }}. {{ $item['tambahan_nama_kesimpulan'] ?? '-' }}
</h6>
</td>
</tr>
</table>
<table border="1" style="width: 100%; border-collapse: collapse; margin-bottom: 1px;">
<tr>
<td style="border: 1px solid #000; padding: 4px;">Sertifikat</td>
<td style="border: 1px solid #000; padding: 4px;">Luas Tanah ()</td>
<td style="border: 1px solid #000; padding: 4px;">Luas Bangunan ()</td>
<td style="border: 1px solid #000; padding: 4px;">Nilai Pasar Wajar (Rp)</td>
</tr>
<tr>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['sertifikat'] ?? '-' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_tanah'] ?? '-' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['luas_bangunan'] ?? '-' }}</td>
<td style="border: 1px solid #000; padding: 4px;">{{ $item['nilai'] ?? '-' }}</td>
</tr>
</table>
@endforeach
@endif
<table style="margin: 5px 0; border-collapse: collapse; width: 100%;">
<tr>
<td style="">
<h6 style="text-transform: uppercase; margin: 0; ">lain lain</h2>
</td>
</tr>
<tr>
@@ -295,11 +376,40 @@
</table>
<table style="width: 100%">
<tr>
<td>
<table>
<div style="margin-top: 20px;">
<label style="font-weight: bold;">DISCLAIMER</label>
<div>
<ol style="padding-left: 20px; list-style-type: decimal; margin-top: 0;">
<li style="margin-bottom: 5px;">LAPORAN RESUME INI DIKELUARKAN DIKARENAKAN BELUM
DILAKUKANNYA PEMBAYARAN BIAYA PENILAIAN JAMINAN</li>
<li style="margin-bottom: 5px;">LAPORAN RESUME INI TIDAK BISA DIJADIKAN SEBAGAI
DASAR PENGAJUAN DAN ATAU PENCAIRAN KREDIT, LAPORAN YANG DIGUNAKAN TETAP WAJIB
BERUPA LAPORAN PENILAIAN JAMINAN (LPJ)</li>
<li style="margin-bottom: 5px;">DETAIL PER METER TANAH DAN BANGUNAN, SARANA
PELENGKAP DLL AKAN TERCATAT DI LAPORAN PENILAIAN JAMINAN (LPJ) NANTI</li>
<li style="margin-bottom: 5px;">LAPORAN RESUME INI HANYA DIGUNAKAN UNTUK KEPENTINGAN
INTERNAL BAGI</li>
<li style="margin-bottom: 5px;">LAPORAN RESUME INI HANYA BERLAKU <span style="color:red;">14 HARI KALENDER </span>
TERHITUNG DARI TANGGAL RESUME INI DIBUAT SESUAI ATURAN YANG BERLAKU, APABILA
LEWAT MAKA HARUS DILAKUKAN ORDER ULANG SESUAI PROSEDUR YANG BERLAKU</li>
<li style="margin-bottom: 5px;">Apabila sudah melewati 6 bulan, maka harus penilaian
ulang kembali</li>
</ol>
</div>
</div>
</table>
</td>
</tr>
<tr>
<td>Demikian Kami Sampaikan, atas perhatiannya kami ucapkan terimakasih</td>
</tr>
<tr>
<table style="width: 100%; text-align: center;" >
<table style="width: 100%; text-align: center;">
<tr>
<td style="height: 50px"></td>
<td style="height: 50px"></td>
@@ -307,10 +417,20 @@
</tr>
<tr>
<td>{{ $penilai->userPenilaiTeam->name ?? '' }}</br>
Appraisal
PENILAI
</td>
<td> {{ $senior_officer->name ?? '' }}</br>
SO Region
SENIOR OFFICER
</td>
@php
use Modules\Usermanagement\Models\User;
@endphp
<td> {{ User::role('EO Appraisal')->first()->name ?? '' }}</br>
EXECUTIVE OFFICER
</td>
<td> {{ $surveyor->userPenilaiTeam->name ?? '' }}</br>
SURVEYOR
</td>
</tr>
</table>
@@ -328,8 +448,8 @@
</div>
</main>
<footer>
<footer id="footer">
Cabang : {{ $permohonan->debiture->branch->name ?? '' }}
</footer>
</body>

View File

@@ -5,22 +5,21 @@
@endsection
@section('content')
<style>
.list-decimal {
list-style-type: decimal;
margin: 0;
padding-left: 1.25rem;
line-height: 1.6;
font-family: Arial, sans-serif;
font-size: 16px;
color: #333333;
}
<style>
.list-decimal {
list-style-type: decimal;
margin: 0;
padding-left: 1.25rem;
line-height: 1.6;
font-family: Arial, sans-serif;
font-size: 16px;
color: #333333;
}
.list-decimal li {
margin-bottom: 0.5rem;
}
</style>
.list-decimal li {
margin-bottom: 0.5rem;
}
</style>
@include('lpj::assetsku.includenya')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<form id="formResume" method="POST" class="w-full grid gap-5">
@@ -76,7 +75,7 @@
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Nomor Laporan</label>
<div class="flex flex-wrap items-base line w-full">
<p class="text-2sm text-gray-700">{{ $permohonan->nomor_registrasi }}</p>
<p class="text-2sm text-gray-700">{{ $nomorLaporan ?? '' }}</p>
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@@ -87,6 +86,14 @@
@endif
</div>
</div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Tanggal Resume</label>
<div class="flex flex-wrap items-baseline w-full">
<input type="date" name="tanggal_resume" class="input w-full" placeholder="Masukkan..."
value="{{ $resumeData['tanggal_resume'] ?? '' }}">
</div>
</div>
</div>
</div>
<div class="card">
@@ -165,7 +172,7 @@
<div class="card-body grid gap-5">
<div class="gird gap-5">
<label class="form-label max-w-56">1. SESUAI FISIK</label>
<label class="form-label max-w-56">SESUAI FISIK</label>
<div class="flex flex-wrap items-baseline w-full mt-5">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm">
<thead>
@@ -222,7 +229,7 @@
</div>
<div class="gird gap-5">
<label class="form-label max-w-56">2. SESUAI IMB</label>
<label class="form-label max-w-56">SESUAI IMB</label>
<div class="flex flex-wrap items-baseline w-full">
<table
@@ -284,25 +291,32 @@
</div>
@if (!empty($resumeData['tambahan']))
<div class="gird gap-5">
<label class="form-label max-w-56">3. Tambahan</label>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($resumeData['tambahan'] as $item)
<div id="kesimpulan" class="gird gap-5">
<table
class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
<div class="flex flex-wrap items-baseline w-full">
</tr>
</thead>
</thead>
<tbody>
@if (!empty($resumeData['tambahan']))
@foreach ($resumeData['tambahan'] as $item)
<table
class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<input class="input" name="tambahan_nama_kesimpulan[]"
placeholder="Masukkan Nama Kesimpulan" type="text" value="{{ $item['tambahan_nama_kesimpulan'] ?? ''}}">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
<th class="text-center">Luas Bangunan</th>
<th class="text-center">Nilai Pasar Wajar</th>
</tr>
</thead>
</thead>
<tbody>
@if (!empty($resumeData['tambahan']))
{{-- @foreach ($resumeData['tambahan'] as $item) --}}
<tr>
<td class="text-center">
<input type="text" name="tambahan_sertifikat[]"
@@ -324,12 +338,12 @@
class="input number-format" value="{{ $item['nilai'] }}">
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
@endif
</tbody>
</table>
</div>
</div>
</div>
@endforeach
@endif
<div>
@@ -354,44 +368,44 @@
</label>
<div class="input-group w-full flex gap-2">
<ol class="list-decimal pl-5 space-y-2">
<li>LAPORAN RESUME INI DIKELUARKAN DIKARENAKAN BELUM DILAKUKANNYA PEMBAYARAN BIAYA PENILAIAN JAMINAN
<li>LAPORAN RESUME INI DIKELUARKAN DIKARENAKAN BELUM DILAKUKANNYA PEMBAYARAN BIAYA PENILAIAN
JAMINAN
</li>
<li>LAPORAN RESUME INI TIDAK BISA DIJADIKAN SEBAGAI DASAR PENGAJUAN DAN ATAU PENCAIRAN KREDIT, LAPORAN YANG
<li>LAPORAN RESUME INI TIDAK BISA DIJADIKAN SEBAGAI DASAR PENGAJUAN DAN ATAU PENCAIRAN
KREDIT, LAPORAN YANG
DIGUNAKAN TETAP WAJIB BERUPA LAPORAN PENILAIAN JAMINAN (LPJ)
</li>
<li>DETAIL PER METER TANAH DAN BANGUNAN, SARANA PELENGKAP DLL AKAN TERCATAT DI LAPORAN PENILAIAN JAMINAN
</li>
<li>DETAIL PER METER TANAH DAN BANGUNAN, SARANA PELENGKAP DLL AKAN TERCATAT DI LAPORAN
PENILAIAN JAMINAN
(LPJ) NANTI
</li>
</li>
<li>LAPORAN RESUME INI HANYA DIGUNAKAN UNTUK KEPENTINGAN INTERNAL BAGI
</li>
<li>LAPORAN RESUME INI HANYA BERLAKU 14 HARI KALENDER TERHITUNG DARI TANGGAL RESUME INI DIBUAT SESUAI ATURAN
YANG BERLAKU, APABILA LEWAT MAKA HARUS DILAKUKAN ORDER ULANG SESUAI PROSEDUR YANG BERLAKU
</li>
<li>LAPORAN RESUME INI HANYA BERLAKU 14 HARI KALENDER TERHITUNG DARI TANGGAL RESUME INI
DIBUAT SESUAI ATURAN
YANG BERLAKU, APABILA LEWAT MAKA HARUS DILAKUKAN ORDER ULANG SESUAI PROSEDUR YANG
BERLAKU
</li>
<li>Apabila sudah melewati 6 bulan, maka harus penilaian ulang kembali
</li>
</ol>
</div>
</div>
<div class="flex card-footer justify-end gap-5">
<button type="button" class="btn btn-success" onclick="saveResume()">Save</button>
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal']))
<a class="btn btn-info"
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a class="btn btn-primary"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )">
<i class="ki-filled ki-printer"></i> Print
</a>
@endif
</div>
</div>
<div class="flex card-footer justify-end gap-5">
<button type="button" class="btn btn-success" onclick="saveResume()">Save</button>
@if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal']))
<a class="btn btn-info"
href="{{ route('penilai.lampiran') }}?permohonanId={{ request('permohonanId') }}&documentId={{ request('documentId') }}&inspeksiId={{ request('inspeksiId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a class="btn btn-primary"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', '{{ request('inspeksiId') }}', {{ request('jaminanId') }}, )">
<i class="ki-filled ki-printer"></i> Print
</a>
@endif
</div>
</div>
</form>
</div>
@@ -405,11 +419,17 @@
kesimpulan.innerHTML += `
<div class="grid gap-5 w-full" id="kesimpulan-${counter}">
<label class="form-label kesimpulan max-w-56">${counter}. Tambahan</label>
<div class="flex flex-wrap items-baseline w-full">
<div class="tabel-container w-full">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm mt-5">
<input type="text" name="tambahan_nama_kesimpulan[]"
class="input number-format">
<thead>
<tr>
<th class="text-center">Sertipikat</th>
<th class="text-center">Luas Tanah</th>
@@ -419,7 +439,7 @@
</tr>
</thead>
<tbody>
<tr>
<td class="text-center">
<input type="text" name="tambahan_sertifikat[]"
class="input number-format">
@@ -537,6 +557,7 @@
function formToJson(formElement) {
const formData = new FormData(formElement);
const jsonData = {
tanggal_resume: "",
fakta: {
fakta_positif: [],
fakta_negatif: []
@@ -547,6 +568,7 @@
keterangan: ""
};
// Ambil fakta positif
document.querySelectorAll('textarea[name="fakta_positif[]"]').forEach(textarea => {
jsonData.fakta.fakta_positif.push(textarea.value);
@@ -583,8 +605,10 @@
}
});
document.querySelectorAll('table tbody tr').forEach(row => {
document.querySelectorAll('#kesimpulan > div').forEach(row => {
const imbData = {
tambahan_nama_kesimpulan: row.querySelector('input[name="tambahan_nama_kesimpulan[]"]')
?.value || "",
sertifikat: row.querySelector('input[name="tambahan_sertifikat[]"]')?.value || "",
luas_tanah: row.querySelector('input[name="tambahan_luas_tanah[]"]')?.value || "",
luas_bangunan: row.querySelector('input[name="tambahan_luas_bangunan[]"]')?.value || "",
@@ -600,6 +624,9 @@
const keterangan = formElement.querySelector('textarea[name="keterangan"]')?.value || "";
jsonData.keterangan = keterangan;
const tanggal_resume = formElement.querySelector('input[name="tanggal_resume"]')?.value || "";
jsonData.tanggal_resume = tanggal_resume;
return jsonData;
}

View File

@@ -288,8 +288,16 @@
</div>
<div class="flex justify-end gap-5">
<a class="btn btn-outline btn-info "
onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 1 )">
<i class="ki-filled ki-eye"></i>
PRIVIEW
</a>
<a class="btn btn-success"
onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, )">
onclick="checkLaporan('{{ $permohonan->id }}', '{{ $dokumen->id }}', '{{ $inspeksiId }}', {{ $dokumen->jenis_jaminan_id }}, 0 )">
<i class="ki-filled ki-printer"></i>
PRINT OUT
</a>
</div>

View File

@@ -129,50 +129,57 @@
href="{{ route('otorisator.view-laporan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}">
Lihat Laporan
</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')
<a class="btn btn-success"
href="{{ route('penilai.paparan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}">
Lihat Data Paparan
</a>
@if (Auth::user()->hasAnyRole(['administrator', 'DD Appraisal']))
@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
@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>
@if ($dataHeader != 'paparan')
<button class="btn btn-warning" onclick="revisiLaporan({{ $permohonan->id }})">
<i class="ki-filled ki-arrow-circle-right"></i> Revisi
@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
@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
@elseif($dataHeader == 'paparan')
<a class="btn btn-success"
href="{{ route('penilai.paparan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}">
Lihat Data Paparan
</a>
@if (Auth::user()->hasAnyRole(['administrator', 'DD Appraisal']) &&
$permohonan->approval_eo &&
$permohonan->approval_dd == null &&
@if(Auth::user()->hasAnyRole(['administrator','senior-officer']) && $authorization->approve_so==null)
<button onclick="otorisatorData({{ $authorization->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']) &&
$authorization->approve_so &&
$authorization->approve_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>
<button onclick="otorisatorData({{ $authorization->id }},'DD')" type="button" class="btn btn-primary">
<i class="ki-filled ki-double-check"></i>
Otorisator {{ $header ?? '' }}
</button>
@endif
@endif
</div>
</div>
@@ -181,53 +188,162 @@
@push('scripts')
<script>
function otorisatorData(dataId) {
function otorisatorData(dataId, role='') {
const dataHeader = @json($header);
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() }}'
if(dataHeader == 'Paparan'){
if(role == 'DD'){
Swal.fire({
title: 'Apakah Anda yakin?',
text: `Untuk melakukan otorisator ${dataHeader}!`,
icon: 'warning',
html: `
<input id="swal-keterangan" class="swal2-input input" placeholder="Keterangan">
<input id="swal-tanggal-paparan" class="swal2-input input" type="date" placeholder="Tanggal paparan">
`,
focusConfirm: false,
preConfirm: () => {
const keterangan = document.getElementById('swal-keterangan').value;
const tanggalPaparan = document.getElementById('swal-tanggal-paparan').value;
if (!keterangan || !tanggalPaparan) {
Swal.showValidationMessage('Keterangan atau Tanggal Paparan Harus diisi!');
return false;
}
return { keterangan, tanggalPaparan };
},
});
$.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();
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, Lanjutkan!',
cancelButtonText: 'Batal',
}).then((result) => {
if (result.isConfirmed) {
const keterangan = result.value.keterangan || '';
const tanggalPaparan = result.value.tanggalPaparan || '';
$.ajaxSetup({
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) => {
console.error('Error:', error);
Swal.fire('Gagal!', 'Terjadi kesalahan saat melakukan otorisator.',
'error');
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 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');
}
});
}
});
}
}

View File

@@ -36,8 +36,7 @@
@csrf
<input type="hidden" value="{{ $permohonan->id }}" name="permohonan_id">
<input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<!-- Container untuk daftar denah -->
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi }}">
<!-- Container untuk daftar denah -->
<div id="denah-container">
@if (isset($formDenah['denahs']) && is_array($formDenah['denahs']) && count($formDenah['denahs']) > 0)

View File

@@ -146,7 +146,7 @@
<form id="formFoto" method="POST" class="grid gap-5" enctype="multipart/form-data">
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi }}">
<div class="card border border-agi-100 bg-white rounded-lg shadow-md">

View File

@@ -11,10 +11,12 @@
@csrf
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input type="hidden" name="dokument_id" value="{{ request('dokument') }}">
<input type="hidden" name="nomor_registrasi" value="{{ $permohonan->nomor_registrasi }}">
@if (strtolower($permohonan->tujuanPenilaian->name) == 'rap')
<input type="hidden" name="action" value="rap">
<input type="hidden" name="type" value="rap">
@include('lpj::surveyor.components.header')
@include('lpj::surveyor.components.rap')
@else
@@ -59,7 +61,7 @@
@push('scripts')
<script type="text/javascript">
function updateAlamatFields(status) {
// Ambil elemen formulir

View File

@@ -304,7 +304,7 @@
}
function checkLaporan(permohonanId, documentId, inspeksiId, jaminanId) {
function checkLaporan(permohonanId, documentId, inspeksiId, jaminanId, statusLpj) {
// showLoadingSwal('Tunggu...');
fetch(
`{{ url('/penilai/check-laporan') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}`
@@ -315,7 +315,7 @@
// Jika laporan ada, arahkan ke halaman cetak
window.location.href =
`{{ route('penilai.print-out') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}&statusLpj=0&type=${data.status}`;
`{{ route('penilai.print-out') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}&statusLpj=${statusLpj}&type=${data.status}`;
} else {
// Jika laporan belum ada, tampilkan pesan peringatan
Swal.fire({