diff --git a/app/Emails/SendJadwalKunjunganEmail.php b/app/Emails/SendJadwalKunjunganEmail.php new file mode 100644 index 0000000..879934a --- /dev/null +++ b/app/Emails/SendJadwalKunjunganEmail.php @@ -0,0 +1,63 @@ +id = $emailData['emailData']['id']; + $this->waktu_penilaian = $emailData['emailData']['waktu_penilaian']; + $this->deskripsi_penilaian = $emailData['emailData']['deskripsi_penilaian']; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + return $this->subject('Jadwal Kunjungan Penilaian Resmi') + ->view('lpj::emails.jadwal-kunjungan'); + } +} diff --git a/app/Emails/SendPenawaranKJPPEmail.php b/app/Emails/SendPenawaranKJPPEmail.php index c779b90..f305489 100644 --- a/app/Emails/SendPenawaranKJPPEmail.php +++ b/app/Emails/SendPenawaranKJPPEmail.php @@ -19,11 +19,12 @@ class SendPenawaranKJPPEmail extends Mailable public $districts; public $cities; public $provinces; + public $user; // Tambahkan user ke data yang dikirimkan ke view, sebagai cc dan bcc /** * Create a new message instance. */ - public function __construct($dp1, $penawaran, $permohonan, $villages, $districts, $cities, $provinces) + public function __construct($dp1, $penawaran, $permohonan, $villages, $districts, $cities, $provinces, $user) { // Assign data yang diterima ke properti $this->dp1 = $dp1; @@ -33,6 +34,7 @@ class SendPenawaranKJPPEmail extends Mailable $this->districts = $districts; $this->cities = $cities; $this->provinces = $provinces; + $this->user = $user; // Tambahkan user ke data yang dikirimkan ke view, sebagai cc dan bcc } /** @@ -50,6 +52,7 @@ class SendPenawaranKJPPEmail extends Mailable 'districts' => $this->districts, 'cities' => $this->cities, 'provinces' => $this->provinces, + 'user' => $this->user // Tambahkan user ke data yang dikirimkan ke view, sebagai cc dan bcc ]); } } diff --git a/app/Exports/CustomFieldExport.php b/app/Exports/CustomFieldExport.php new file mode 100644 index 0000000..5158d70 --- /dev/null +++ b/app/Exports/CustomFieldExport.php @@ -0,0 +1,49 @@ +id, + $row->name, + $row->type, + $row->created_at, + $row->updated_at, + ]; + } + + public function headings(): array + { + return [ + 'ID', + 'Name', + 'Type', + 'Created At', + 'Updated At', + ]; + } + + public function columnFormats(): array + { + return [ + 'A' => NumberFormat::FORMAT_NUMBER, + 'D' => NumberFormat::FORMAT_DATE_DDMMYYYY, + 'E' => NumberFormat::FORMAT_DATE_DDMMYYYY, + ]; + } +} diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index 6a778a0..222460c 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -2,7 +2,8 @@ use Carbon\Carbon; use Illuminate\Support\Facades\DB; -use Modules\Lpj\Models\HolidayCalendar; + use Modules\Lpj\Models\CustomField; + use Modules\Lpj\Models\HolidayCalendar; use Modules\Lpj\Models\PenawaranDetailTender; use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\Penilaian; @@ -359,3 +360,16 @@ function getNomorLaporan($permohonanId, $documentId){ ])->first(); return $laporan->nomor_laporan ?? null; } + +function getCustomField($param){ + if(is_numeric($param)){ + $field = CustomField::find($param); + } else { + $field = CustomField::where(['name' => $param])->first(); + } + if($field){ + return $field; + } else { + return null; + } +} diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 1510f63..adde98d 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -244,6 +244,15 @@ class ActivityController extends Controller // abort(403, 'Sorry! You are not allowed to view users.'); } + $userRole = $user->roles->pluck('name')->first(); + $regionId = null; + + // If user is senior-officer, get their regionId + if ($userRole === 'senior-officer') { + $userTeam = TeamsUsers::with('team')->firstWhere('user_id', $user->id); + $regionId = $userTeam?->team->regions_id; + } + // Retrieve data from the database $query = Permohonan::query(); @@ -289,22 +298,39 @@ class ActivityController extends Controller // Get filtered count $filteredRecords = $query->count(); - // Get data - - $data = null; - $userRole = $user->roles[0]->name ?? null; - - if (in_array($userRole, ['surveyor', 'surveyor-penilai'])) { - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian']) - ->whereHas('penilaian.userPenilai', function ($q) use ($user) { - $q->where('user_id', $user->id); - }) - ->get(); - } else { - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian']) - ->get(); + // Filter by region if user is senior-officer + if ($regionId) { + $query->whereHas('region', function ($q) use ($regionId) { + $q->where('region_id', $regionId); + }); } + // Filter for specific roles + if (in_array($userRole, ['surveyor', 'surveyor-penilai'])) { + $query->whereHas('penilaian.userPenilai', function ($q) use ($user) { + $q->where('user_id', $user->id); + }); + } + + $totalRecords = $query->count(); + + // Pagination + if ($request->has('page') && $request->has('size')) { + $page = (int) $request->get('page', 1); + $size = (int) $request->get('size', 10); + $offset = ($page - 1) * $size; + $query->skip($offset)->take($size); + } + + // Get filtered count + $filteredRecords = $query->count(); + + // Get data with necessary relationships + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian', 'dokumenjaminan'])->get(); + + // Calculate total pages + $pageCount = ceil($totalRecords / $request->get('size', 10)); + diff --git a/app/Http/Controllers/CustomFieldController.php b/app/Http/Controllers/CustomFieldController.php new file mode 100644 index 0000000..b42ab89 --- /dev/null +++ b/app/Http/Controllers/CustomFieldController.php @@ -0,0 +1,153 @@ +validated(); + + if ($validate) { + try { + // Save to database + CustomField::create($validate); + return redirect() + ->route('basicdata.custom-field.index') + ->with('success', 'Custom Field created successfully'); + } catch (Exception $e) { + return redirect() + ->route('basicdata.custom-field.create') + ->with('error', $e->getMessage()); + } + } + } + + public function create() + { + $urutan_prioritas = CustomField::max('urutan_prioritas')+1; + return view('lpj::custom_fields.create', compact('urutan_prioritas')); + } + + public function edit($id) + { + $customField = CustomField::find($id); + $urutan_prioritas = $customField->urutan_prioritas ?? CustomField::max('urutan_prioritas')+1; + return view('lpj::custom_fields.create', compact('customField', 'urutan_prioritas' )); + } + + public function update(CustomFieldRequest $request, $id) + { + $validate = $request->validated(); + + if ($validate) { + try { + // Update in database + $customField = CustomField::find($id); + $customField->update($validate); + return redirect() + ->route('basicdata.custom-field.index') + ->with('success', 'Custom Field updated successfully'); + } catch (Exception $e) { + return redirect() + ->route('basicdata.custom-field.edit', $id) + ->with('error', 'Failed to update custom field'); + } + } + } + + public function destroy($id) + { + try { + // Delete from database + $customField = CustomField::find($id); + $customField->delete(); + + echo json_encode(['success' => true, 'message' => 'Custom Field deleted successfully']); + } catch (Exception $e) { + echo json_encode(['success' => false, 'message' => 'Failed to delete custom field']); + } + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('custom_fields.view')) { + //abort(403, 'Sorry! You are not allowed to view custom fields.'); + } + + // Retrieve data from the database + $query = CustomField::query(); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('name', 'LIKE', "%$search%"); + $q->orWhere('label', 'LIKE', "%$search%"); + $q->orWhere('type', 'LIKE', "%$search%"); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + + public function export() + { + return Excel::download(new CustomFieldExport, 'custom_fields.xlsx'); + } + } diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 78a11c2..f4966ce 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -14,6 +14,7 @@ use Modules\Location\Models\Province; use Modules\Location\Models\Village; use Modules\Lpj\Http\Requests\DokumenJaminanRequest; + use Modules\Lpj\Models\CustomField; use Modules\Lpj\Models\Debiture; use Modules\Lpj\Models\DetailDokumenJaminan; use Modules\Lpj\Models\DokumenJaminan; @@ -88,7 +89,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[$value]) ? json_encode($request->custom_field[$value]) : '' ]; $dokumenJaminan = []; @@ -247,7 +248,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[$value]) ? json_encode($request->custom_field[$value]) : '' ]; $dokumenJaminan = []; @@ -496,6 +497,12 @@ foreach ($document->detail as $detail) { // Only include existing legalitas if its id is in the new set if (in_array($detail->jenis_legalitas_jaminan_id, $newLegalitasIds)) { + $customFields = []; + if($detail->jenisLegalitasJaminan->custom_fields) { + $customFields = CustomField::whereIn('id', $detail->jenisLegalitasJaminan->custom_fields) + ->get(); + } + $existingLegalitas[] = [ 'id' => $detail->id, 'jenis_legalitas_jaminan_id' => $detail->jenis_legalitas_jaminan_id, @@ -507,6 +514,7 @@ $detail->dokumen_nomor, ) ?? $detail->dokumen_nomor, 'custom_field' => $detail->jenisLegalitasJaminan->custom_field, + 'custom_fields' => $customFields, 'custom_field_type' => $detail->jenisLegalitasJaminan->custom_field_type, 'details' => $detail->details, 'keterangan' => $detail->keterangan, @@ -519,6 +527,11 @@ foreach ($newLegalitasJaminan as $legalitas) { if (!Collection::make($existingLegalitas)->contains('jenis_legalitas_jaminan_id', $legalitas->id)) { + $customFields = []; + if($legalitas->custom_fields) { + $customFields = CustomField::whereIn('id', $legalitas->custom_fields)->get(); + } + $newLegalitas[] = [ 'id' => null, 'jenis_legalitas_jaminan_id' => $legalitas->id, @@ -527,6 +540,7 @@ 'dokumen_nomor' => null, 'custom_field' => $legalitas->custom_field, 'custom_field_type' => $legalitas->custom_field_type, + 'custom_fields' => $customFields, 'details' => null, 'keterangan' => null, 'is_existing' => false, diff --git a/app/Http/Controllers/JenisLegalitasJaminanController.php b/app/Http/Controllers/JenisLegalitasJaminanController.php index 9c6f4e9..b087589 100644 --- a/app/Http/Controllers/JenisLegalitasJaminanController.php +++ b/app/Http/Controllers/JenisLegalitasJaminanController.php @@ -8,6 +8,7 @@ use Maatwebsite\Excel\Facades\Excel; use Modules\Lpj\Exports\JenisLegalitasJaminanExport; use Modules\Lpj\Http\Requests\JenisLegalitasJaminanRequest; + use Modules\Lpj\Models\CustomField; use Modules\Lpj\Models\JenisLegalitasJaminan; class JenisLegalitasJaminanController extends Controller @@ -40,13 +41,15 @@ public function create() { - return view('lpj::jenis_legalitas_jaminan.create'); + $customFields = CustomField::orderBy('urutan_prioritas', 'asc')->get(); + return view('lpj::jenis_legalitas_jaminan.create',compact('customFields')); } public function edit($id) { $jenisLegalitasJaminan = JenisLegalitasJaminan::find($id); - return view('lpj::jenis_legalitas_jaminan.create', compact('jenisLegalitasJaminan')); + $customFields = CustomField::orderBy('urutan_prioritas', 'asc')->get(); + return view('lpj::jenis_legalitas_jaminan.create', compact('jenisLegalitasJaminan', 'customFields')); } public function update(JenisLegalitasJaminanRequest $request, $id) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index bf8cbc9..fd5dc3d 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -226,7 +226,7 @@ class PenilaiController extends Controller } } - return view('lpj::penilai.components.memo', compact('permohonan', 'formFoto', 'formPeta', 'provinces', 'basicData', 'memo', 'cities', 'districts', 'villages', 'noLpmemo')); + return view('lpj::penilai.components.memo', compact('permohonan', 'formFoto', 'formPeta', 'provinces', 'basicData', 'memo', 'cities', 'districts', 'villages', 'nomorLaporan')); } @@ -248,7 +248,7 @@ class PenilaiController extends Controller public function edit($id) { $permohonan = Permohonan::with('debiture')->find($id); - return view('lpj::penilai.edit',compact('permohonan')); + return view('lpj::penilai.edit', compact('permohonan')); } @@ -272,7 +272,7 @@ class PenilaiController extends Controller ] ); - if($request->hasFile('file_paparan')) { + if ($request->hasFile('file_paparan')) { $file = $request->file('file_paparan'); $path = $file->store('public/file_paparan'); @@ -282,10 +282,10 @@ class PenilaiController extends Controller } return redirect() - ->route('penilai.show',['id'=>$id])->with('success', 'diperbarui ke status paparan dan dikirim ke So untuk proses lebih lanjut.'); + ->route('penilai.show', ['id' => $id])->with('success', 'diperbarui ke status paparan dan dikirim ke So untuk proses lebih lanjut.'); } catch (\Exception $e) { - return redirect()->route('penilai.show',['id'=>$id])->with('error', 'Terjadi kesalahan saat memproses permohonan.'); + return redirect()->route('penilai.show', ['id' => $id])->with('error', 'Terjadi kesalahan saat memproses permohonan.'); } } @@ -379,12 +379,92 @@ class PenilaiController extends Controller } } - return view('lpj::penilai.components.rap-penilai', compact('permohonan', 'rap', 'provinces', 'cities', + return view('lpj::penilai.components.rap-penilai', compact( + 'permohonan', + 'rap', + 'provinces', + 'cities', 'districts', - 'villages','forminspeksi', 'noLpRAP', 'basicData','cekAlamat')); + 'villages', + 'forminspeksi', + 'nomorLaporan', + 'basicData', + 'cekAlamat' + )); } + public function call_report(Request $request) + { + + $permohonanId = $request->query('permohonanId'); + $documentId = $request->query('documentId'); + $inspeksiId = $request->query('inspeksiId'); + $jaminanId = $request->query('jaminanId'); + $provinces = Province::all(); + $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + // $nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'rap'); + // $basicData = $this->surveyorController->getCommonData(); + // $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); + // Penilai::updateOrCreate( + // [ + // 'permohonan_id' => $permohonanId, + // 'dokument_id' => $documentId, + // 'inspeksi_id' => $inspeksiId, + // ], + // [ + // 'type_penilai' => 'call-report', + // ] + // ); + + // $resume = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); + + // $lpjData = null; + // $rap = null; + // $forminspeksi = null; + // if ($resume) { + // $forminspeksi = json_decode($inspeksi->data_form, true); + // $rap = json_decode($resume->rap, true); + // } + // Default: gunakan data dari debitur + // $debitur = Debiture::find($permohonan->debiture_id); + + // $provinceCode = $debitur->province_code; + // $cityCode = $debitur->city_code; + // $districtCode = $debitur->district_code; + + // $cekAlamat = $forminspeksi['asset']['alamat']['tidak sesuai'] ?? null; + + // if ($cekAlamat) { + // $provinceCode = $cekAlamat['province_code'] ?? $provinceCode; + // $cityCode = $cekAlamat['city_code'] ?? $cityCode; + // $districtCode = $cekAlamat['district_code'] ?? $districtCode; + // } + + // $cities = City::where('province_code', $provinceCode)->get(); + // $districts = District::where('city_code', $cityCode)->get(); + // $villages = Village::where('district_code', $districtCode)->get(); + + // if ($forminspeksi) { + // if (isset($forminspeksi['alamat']['sesuai']['province_code'])) { + // $cities = City::where('province_code', $forminspeksi['alamat']['sesuai']['province_code'])->get(); + // } + + // if (isset($forminspeksi['alamat']['sesuai']['city_code'])) { + // $districts = District::where('city_code', $forminspeksi['alamat']['sesuai']['city_code'])->get(); + // } + + // if (isset($forminspeksi['alamat']['sesuai']['district_code'])) { + // $villages = Village::where('district_code', $forminspeksi['alamat']['sesuai']['district_code'])->get(); + // } + // } + + // return view('lpj::penilai.components.call-report', compact('permohonan', 'rap', 'provinces', 'cities', + // 'districts', + // 'villages','forminspeksi', 'noLpRAP', 'basicData','cekAlamat')); + return view('lpj::penilai.components.call-report', compact('permohonan')); + } + /** * Remove the specified resource from storage. */ @@ -981,8 +1061,12 @@ class PenilaiController extends Controller 'rap' )); // return $pdf; + $cleanNomorLaporan = str_replace(['/', '\\'], '-', $nomorLaporan); $pdf->setPaper('A4', 'portrait'); - return $pdf->stream(); + return response($pdf->output(), 200) + ->header('Content-Type', 'application/pdf') + ->header('Content-Disposition', 'inline; filename="Laporan_' . $tipeLaporan . '_' .$permohonan->debiture->name . '_' . $cleanNomorLaporan .'.pdf"'); + // return $pdf->stream(); } else { // $pdf = view('lpj::' . $viewLaporan, compact( $pdf = PDF::loadView('lpj::' . $viewLaporan, compact( @@ -1022,7 +1106,8 @@ class PenilaiController extends Controller 'standard' => 'penilai.components.print-out-standard', 'resume' => 'penilai.components.print-resume', 'memo' => 'penilai.components.print-memo', - 'rap' => 'penilai.components.print-out-rap' + 'rap' => 'penilai.components.print-out-rap', + 'call-report' => 'penilai.components.print-out-call-report' ]; return $viewMap[$tipe] ?? 'penilai.components.print-resume'; } diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 4160d59..bd4c3ec 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -680,6 +680,7 @@ class PenilaianController extends Controller 'penilaian.userPenilai' => function ($q) { $q->where('role', 'penilai')->with(['user', 'team.regions'])->first(); }, + 'penilai', 'approveSo', 'approveEo', 'approveDd', @@ -833,7 +834,7 @@ class PenilaianController extends Controller } } - public function revisiLaporan($id, Request $request) + public function revisiLaporan(Request $request,$id) { $permohonan = Permohonan::findOrFail($id); $permohonan->update([ diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 45069f7..943a036 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -14,6 +14,8 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Str; use Barryvdh\DomPDF\Facade\Pdf; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Carbon; +use Illuminate\Support\Facades\Mail; use Illuminate\Http\Response; use Modules\Lpj\Models\Debiture; use Modules\Lpj\Models\Permohonan; @@ -77,16 +79,15 @@ use Modules\Lpj\Models\LaluLintasLokasi; use Modules\Lpj\Models\SpekBagunanAnalisaDetail; use Modules\Lpj\Http\Requests\SurveyorRequest; use Modules\Lpj\Http\Requests\FormSurveyorRequest; -use Modules\Lpj\Emails\SendEmail; -use Illuminate\Support\Facades\Mail; +use Modules\Lpj\Emails\SendJadwalKunjunganEmail; class SurveyorController extends Controller { public $user; - /** - * Display a listing of the resource. - */ + + + public function index() { return view('lpj::surveyor.index'); @@ -831,8 +832,6 @@ private function isValidFormat($data) } - - public function checkButtonStatus($id) { try { @@ -901,24 +900,24 @@ private function isValidFormat($data) 'deskripsi_penilaian' => 'required' ]); - // $user = ['user' => 'rustammajid76@gmail.com']; + $penilaian = Penilaian::findOrFail($validate['id']); - // $emailData = [ - // 'email' => 'rustammajid76@gmail.com', - // 'subject' => 'Test', - // 'emailData' => '

Hello, World!

This is the email content. Waktu Penilaian:

' - // ]; + $emailData = [ + 'email' => $penilaian->permohonan->user->email, + 'subject' => 'Jadwal Kunjungan', + 'emailData' => $validate, - // $this->sendMessage($emailData, $user); + ]; - $id = $request->input('id'); - $penilaian = Penilaian::findOrFail($id); + Mail::to($emailData['email'])->send(new SendJadwalKunjunganEmail($emailData, $penilaian->permohonan->nomor_resitrasi, $penilaian->permohonan->debiture)); - if ($validate['waktu_penilaian'] <= $penilaian->tanggal_kunjungan) { + + if (Carbon::parse($validate['waktu_penilaian']) <= Carbon::parse($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'], @@ -1940,7 +1939,7 @@ private function isValidFormat($data) private function updateJenisAsset($permohonan, $request) { - $jenis_jaminan_id = $permohonan->debiture->documents->first()->jenis_jaminan_id; + $jenis_jaminan_id = $permohonan->documents->first()->jenis_jaminan_id; DokumenJaminan::where('permohonan_id', $permohonan->id) ->where('jenis_jaminan_id', $jenis_jaminan_id) ->update([ @@ -1950,7 +1949,7 @@ private function isValidFormat($data) private function updateDetails($permohonan, $key, $newValue) { - $document = $permohonan->debiture->documents->first(); + $document = $permohonan->documents->first(); if (!$document) { throw new \Exception("Document not found"); @@ -1964,18 +1963,18 @@ private function isValidFormat($data) $datas = json_decode($detailsUpdate->details, true) ?? []; - if (is_numeric($newValue)) { - $newValue = [$key => $newValue]; + if (!is_scalar($newValue)) { + throw new \InvalidArgumentException("New value must be a scalar (string/number)"); } - if (!is_array($newValue)) { - throw new \InvalidArgumentException("'{$key}' must be an array or valid JSON string"); - } - - foreach ($newValue as $subKey => $value) { - $datas[$subKey] = $value; // Update atau tambahkan key baru + // Update nilai berdasarkan kunci + if (array_key_exists($key, $datas)) { + $datas[$key] = $newValue; + } else { + throw new \Exception("Key '{$key}' not found in details"); } + // Simpan kembali ke database $detailsUpdate->update([ 'details' => json_encode($datas), ]); @@ -2341,26 +2340,48 @@ private function isValidFormat($data) $data['hub_cadeb_penghuni'] => ($data['hub_cadeb_penghuni'] == 'sesuai') ? $data['hub_cadeb_penghuni_sesuai'] : $data['hub_penghuni_tidak_sesuai'] ], 'pihak_bank' => $data['pihak_bank'] ?? null, - 'nomor_nib' => $data['nomor_nib'] ?? null, + 'kordinat_lng' => $data['kordinat_lng'] ?? null, 'kordinat_lat' => $data['kordinat_lat'] ?? null, ] ]; } + private function updateFormData(array &$dataForm, array $data, $inspeksi, string $section, string $key, string $sesuaiKey, string $tidakSesuaiKey): void + { + if (isset($dataForm[$section][$key])) { + $dataForm[$section][$key] = []; // Reset data + + if ($data[$key] == 'sesuai') { + $dataForm[$section][$key]['sesuai'] = $data[$sesuaiKey] ?? null; + } elseif ($data[$key] == 'tidak sesuai') { + $dataForm[$section][$key]['tidak sesuai'] = $data[$tidakSesuaiKey] ?? null; + } + + if ($inspeksi) { + $inspeksi->data_form = json_encode($dataForm); + $inspeksi->save(); + } + } else { + $data[$key] = $this->getFieldData($data, $key, true); + } + } private function getTanahData(array $data): array { + + $inspeksi = Inspeksi::where('permohonan_id', $data['permohonan_id'])->where('dokument_id', $data['dokument_id'])->first(); + + // Decode data_form dari inspeksi + $dataForm = $inspeksi ? json_decode($inspeksi->data_form, true) : []; + $this->updateFormData($dataForm, $data, $inspeksi, 'tanah', 'luas_tanah', 'luas_tanah_sesuai', 'luas_tanah_tidak_sesuai'); + $this->updateFormData($dataForm, $data, $inspeksi, 'tanah', 'hadap_mata_angin', 'hadap_mata_angin_sesuai', 'hadap_mata_angin_tidak_sesuai'); + // dd($dataForm); + return [ 'tanah' => [ - 'luas_tanah' => $this->getFieldData( - $data, - 'luas_tanah', - true - ), - 'hadap_mata_angin' => [ - $data['hadap_mata_angin'] => $data['hadap_mata_angin'] == 'sesuai' ? $data['hadap_mata_angin_sesuai'] : $data['hadap_mata_angin_tidak_sesuai'] ?? null - ], + 'luas_tanah' => $dataForm['tanah']['luas_tanah'] ?? $data['luas_tanah'], + 'hadap_mata_angin' => $dataForm['tanah']['hadap_mata_angin'] ?? $data['hadap_mata_angin'], 'bentuk_tanah' => $this->getFieldData( $data, 'bentuk_tanah', @@ -2433,14 +2454,16 @@ private function isValidFormat($data) } } + $inspeksi = Inspeksi::where('permohonan_id', $data['permohonan_id'])->where('dokument_id', $data['dokument_id'])->first(); + + // Decode data_form dari inspeksi + $dataForm = $inspeksi ? json_decode($inspeksi->data_form, true) : []; + $this->updateFormData($dataForm, $data, $inspeksi, 'bangunan', 'luas_tanah_bagunan', 'luas_tanah_bagunan_sesuai', 'luas_tanah_bagunan_tidak_sesuai'); + return [ 'bangunan' => [ - 'luas_tanah_bagunan' => $this->getFieldData( - $data, - 'luas_tanah_bagunan', - true - ), + 'luas_tanah_bagunan' => $dataForm['bangunan']['luas_tanah_bagunan'] ?? $data['luas_tanah_bagunan'], 'jenis_bangunan' => $data['jenis_bangunan'] ?? null, 'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null, 'sifat_bangunan' => $data['sifat_bangunan'] ?? null, @@ -3115,6 +3138,7 @@ private function isValidFormat($data) private function getUnitData($data, $request): array { + return [ 'action' => $data['action'] ?? null, 'luas_unit' => $this->getFieldData( @@ -3196,26 +3220,32 @@ private function isValidFormat($data) bool $checkKesesuaian = false, ?string $extraField = null ): array { + $result = []; + if ($checkKesesuaian) { - return [ - $data[$fieldName] ?? '' => ($data[$fieldName] ?? '') === 'sesuai' - ? ($data["{$fieldName}_sesuai"] ?? '') - : ($data["{$fieldName}_tidak_sesuai"] ?? '') - ]; + $isSesuai = ($data[$fieldName] ?? '') === 'sesuai'; + $fieldKey = $isSesuai ? "{$fieldName}_sesuai" : "{$fieldName}_tidak_sesuai"; + + // Hanya simpan key yang dipilih + if ($isSesuai) { + $result['sesuai'] = $data[$fieldKey] ?? null; + } else { + $result['tidak sesuai'] = $data[$fieldKey] ?? null; + } + } else { + $result[$fieldName] = $data[$fieldName] ?? null; + + if ($extraField) { + $result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null; + } } - $result = [ - $fieldName => $data[$fieldName] ?? null - ]; - - if ($extraField) { - $result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null; - } - - return $result; + // Hapus key dengan nilai null untuk memastikan hanya key yang valid yang disimpan + return array_filter($result, fn ($value) => $value !== null); } + public function export(string $type) { $modelClass = $this->getModelClass($type); @@ -3256,10 +3286,11 @@ private function isValidFormat($data) ->first(); if (!$inspeksi) { - return response()->json([ - 'success' => false, - 'message' => 'Data inspeksi tidak ditemukan' - ], 404); + $inspeksi = new Inspeksi(); + $inspeksi->permohonan_id = $request->input('permohonan_id'); + $inspeksi->dokument_id = $request->input('document_id'); + $inspeksi->data_form = json_encode([]); // Inisialisasi data_form kosong + $inspeksi->save(); } // Decode data form yang ada @@ -3416,36 +3447,43 @@ private function isValidFormat($data) public function print_out_inspeksi($permohonan_id, $dokument_id, $jenis_jaminan_id) { - $permohonan = $this->getPermohonanJaminanId( - $permohonan_id, - $dokument_id, - $jenis_jaminan_id - ); + // Ambil data permohonan dan data umum + $permohonan = $this->getPermohonanJaminanId($permohonan_id, $dokument_id, $jenis_jaminan_id); $basicData = $this->getCommonData(); + + // Ambil data inspeksi $inspeksi = Inspeksi::where('permohonan_id', $permohonan_id) ->where('dokument_id', $dokument_id) ->first(); - $forminspeksi = null; - - if ($inspeksi) { - $forminspeksi = json_decode($inspeksi->data_form, true); + if (!$inspeksi) { + // Redirect jika inspeksi tidak ditemukan + return redirect()->back()->with('error', 'Data inspeksi tidak ditemukan.'); } - // Cek jika forminspeksi kosong + // Decode data form inspeksi + $forminspeksi = json_decode($inspeksi->data_form, true); + if (!$forminspeksi) { - // Redirect kembali dengan pesan error - return redirect()->back()->with('error', 'Silahkan isi terlebih dahulu form inspeksi'); + // Redirect jika data form inspeksi kosong + return redirect()->back()->with('error', 'Silahkan isi terlebih dahulu form inspeksi.'); } + // Pilih template PDF berdasarkan nama inspeksi + $templateView = strtolower($inspeksi->name) === 'rap' + ? 'lpj::surveyor.components.print-out.main' + : 'lpj::surveyor.components.print-out.main'; - $pdf = PDF::loadView('lpj::surveyor.components.print-out.main', compact( - 'permohonan', - 'basicData', - 'forminspeksi', - )); + // Generate PDF + $pdf = PDF::loadView($templateView, compact('permohonan', 'basicData', 'forminspeksi')); $pdf->setPaper('A4', 'portrait'); - return $pdf->download('Laporan_data.pdf'); + + // Tentukan nama file PDF + $namaDebiture = $permohonan->debiture->name . '-' . $permohonan->nomor_registrasi; + $fileName = 'inspeksi-' . $namaDebiture . '-data.pdf'; + + return $pdf->download($fileName); } + } diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index e6822a0..b459f71 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -293,12 +293,12 @@ class TenderController extends Controller } // Kalau tidak ada dokumen jaminan maka di arahkan ke halaman dokumen jaminan - if ($permohonan->debiture->documents->isEmpty()) { + if ($permohonan->documents->isEmpty()) { return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id]) ->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!'); } - foreach ($permohonan->debiture->documents as $document) { + foreach ($permohonan->documents as $document) { $village_permohonan = $document->village_code; $district_permohonan = $document->district_code; $city_permohonan = $document->city_code; @@ -338,12 +338,12 @@ class TenderController extends Controller } // Kalau tidak ada dokumen jaminan maka di arahkan ke halaman dokumen jaminan - if ($permohonan->debiture->documents->isEmpty()) { + if ($permohonan->documents->isEmpty()) { return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id]) ->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!'); } - foreach ($permohonan->debiture->documents as $document) { + foreach ($permohonan->documents as $document) { $village_permohonan = $document->village_code; $district_permohonan = $document->district_code; $city_permohonan = $document->city_code; @@ -535,7 +535,7 @@ class TenderController extends Controller return redirect()->route('otorisasitender.penawaran.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk Otorisasi Tender tidak bisa masuk penawaran lagi!'); } - foreach ($permohonan->debiture->documents as $document) { + foreach ($permohonan->documents as $document) { $village_permohonan = $document->village_code; $district_permohonan = $document->district_code; $city_permohonan = $document->city_code; @@ -563,7 +563,7 @@ class TenderController extends Controller return redirect()->route('otorisasitender.penawaran.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk Otorisasi Tender tidak bisa masuk penawaran lagi!'); } - foreach ($permohonan->debiture->documents as $document) { + foreach ($permohonan->documents as $document) { $village_permohonan = $document->village_code; $district_permohonan = $document->district_code; $city_permohonan = $document->city_code; @@ -602,7 +602,7 @@ class TenderController extends Controller return redirect()->route('otorisasitender.penawaran.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk Otorisasi Tender tidak bisa masuk penawaran lagi!'); } - if ($permohonan->debiture->documents->isEmpty()) { + if ($permohonan->documents->isEmpty()) { return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id]) ->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!'); } @@ -679,11 +679,18 @@ class TenderController extends Controller return redirect()->route('otorisasitender.penawaran.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk Otorisasi Tender tidak bisa masuk penawaran lagi!'); } - if ($permohonan->debiture->documents->isEmpty()) { + if ($permohonan->documents->isEmpty()) { return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id]) ->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!'); } + $detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id)->get(); + + + foreach ($detail_penawaran as $detail) { + $this->kirimEmailKJPP($noreg,$detail->kjpp_rekanan_id); + } + $detail_penawaran = PenawaranDetailTender::where('penawaran_id', '=', $penawaran->id) ->where('status', '=', 1) ->pluck('kjpp_rekanan_id') @@ -713,7 +720,7 @@ class TenderController extends Controller ]; }); - foreach ($permohonan->debiture->documents as $document) { + foreach ($permohonan->documents as $document) { $village_permohonan = $document->village_code; $district_permohonan = $document->district_code; $city_permohonan = $document->city_code; @@ -724,6 +731,7 @@ class TenderController extends Controller $districts = District::where('code', $district_permohonan)->get(); $cities = City::where('code', $city_permohonan)->get(); $provinces = Province::where('code', $province_permohonan)->get(); + $user = auth::user(); $subject = 'Send Penawaran Email'; @@ -734,7 +742,8 @@ class TenderController extends Controller 'villages' => $villages, 'districts' => $districts, 'cities' => $cities, - 'provinces' => $provinces + 'provinces' => $provinces, + 'user' => $user, ])->render(); // Dispatch job untuk mengirim email @@ -745,7 +754,8 @@ class TenderController extends Controller $villages, $districts, $cities, - $provinces + $provinces, + $user ); try { @@ -877,7 +887,7 @@ class TenderController extends Controller return redirect()->route('otorisasitender.penawaran.index')->with('error', 'Penawaran dengan nomor registrasi ini sudah masuk Otorisasi Tender tidak bisa masuk penawaran lagi!'); } - if ($permohonan->debiture->documents->isEmpty()) { + if ($permohonan->documents->isEmpty()) { return redirect()->route('debitur.jaminan.create', ['id' => $permohonan->debiture->id]) ->with('error', 'Anda Belum Membuat Dokumen Jaminan. Silahkan isi terlebih dahulu!'); } @@ -907,7 +917,7 @@ class TenderController extends Controller $dp1 = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->first(); - foreach ($permohonan->debiture->documents as $document) { + foreach ($permohonan->documents as $document) { $village_permohonan = $document->village_code; $district_permohonan = $document->district_code; $city_permohonan = $document->city_code; @@ -918,6 +928,7 @@ class TenderController extends Controller $districts = District::where('code', $district_permohonan)->get(); $cities = City::where('code', $city_permohonan)->get(); $provinces = Province::where('code', $province_permohonan)->get(); + $user = auth()->user(); $subject = 'Send Penawaran K J P P Email'; @@ -929,7 +940,8 @@ class TenderController extends Controller 'villages' => $villages, 'districts' => $districts, 'cities' => $cities, - 'provinces' => $provinces + 'provinces' => $provinces, + 'user' => $user, ])->render(); SendPenawaranKJPPTenderJob::dispatch( @@ -940,7 +952,8 @@ class TenderController extends Controller $villages, $districts, $cities, - $provinces + $provinces, + $user ); try { diff --git a/app/Http/Requests/CustomFieldRequest.php b/app/Http/Requests/CustomFieldRequest.php new file mode 100644 index 0000000..9c8730c --- /dev/null +++ b/app/Http/Requests/CustomFieldRequest.php @@ -0,0 +1,58 @@ + 'required|max:255', + 'type' => 'required|in:text,select,radio,checkbox', + 'label' => 'nullable|max:255', + 'urutan_prioritas' => [ + 'nullable', + 'integer', + Rule::unique('custom_fields')->ignore($this->route('custom_field')), + ], + ]; + } + + /** + * Determine if the user is authorized to make this request. + */ + public function authorize(): bool + { + return true; + } + + public function prepareValidationData($data){ + if(!$this->type){ + $this->merge(['type' => 'text']); + } + + if (!$this->urutan_prioritas) { + $maxPrioritas = CustomField::max('urutan_prioritas') ?? 0; + $this->merge(['urutan_prioritas' => $maxPrioritas + 1]); + } + } + + /** + * Get custom messages for validator errors. + * + * @return array + */ + public function messages() + { + return [ + 'urutan_prioritas.unique' => 'Urutan prioritas sudah digunakan. Silakan pilih nomor lain.', + ]; + } +} diff --git a/app/Http/Requests/FormSurveyorRequest.php b/app/Http/Requests/FormSurveyorRequest.php index e29b5cd..8d6ff65 100644 --- a/app/Http/Requests/FormSurveyorRequest.php +++ b/app/Http/Requests/FormSurveyorRequest.php @@ -570,7 +570,6 @@ class FormSurveyorRequest extends FormRequest 'dokument_id' => 'required', 'type' => 'required', 'nomor_registrasi' => 'required', - 'nomor_nib' => 'nullable', 'debitur_perwakilan' => 'required|array', 'jenis_asset_name' => 'nullable|', 'jenis_asset' => 'required', diff --git a/app/Http/Requests/JenisLegalitasJaminanRequest.php b/app/Http/Requests/JenisLegalitasJaminanRequest.php index 82fb205..b6ca8a1 100644 --- a/app/Http/Requests/JenisLegalitasJaminanRequest.php +++ b/app/Http/Requests/JenisLegalitasJaminanRequest.php @@ -20,6 +20,8 @@ 'slug' => 'required|max:255', 'custom_field' => 'nullable|max:255', 'custom_field_type' => 'nullable|max:255', + 'custom_fields' => 'nullable|array', + 'custom_fields.*' => 'required|string|max:255', ]; } @@ -46,5 +48,10 @@ 'slug' => Str::slug($this->name), ]); } + + // Ensure custom_fields is always an array + if (!is_array($this->custom_fields)) { + $this->merge(['custom_fields' => []]); + } } } diff --git a/app/Jobs/SendPenawaranKJPPTenderJob.php b/app/Jobs/SendPenawaranKJPPTenderJob.php index 52045a2..d4debea 100644 --- a/app/Jobs/SendPenawaranKJPPTenderJob.php +++ b/app/Jobs/SendPenawaranKJPPTenderJob.php @@ -22,11 +22,12 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue protected $districts; protected $cities; protected $provinces; + protected $user; /** * Create a new job instance. */ - public function __construct($kjpps, $dp1, $penawaran, $permohonan, $villages, $districts, $cities, $provinces) + public function __construct($kjpps, $dp1, $penawaran, $permohonan, $villages, $districts, $cities, $provinces, $user) { $this->kjpps = $kjpps; $this->dp1 = $dp1; // Simpan keseluruhan array dp1, bukan dp1[0] @@ -36,6 +37,7 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue $this->districts = $districts; $this->cities = $cities; $this->provinces = $provinces; + $this->user = $user; } /** @@ -50,7 +52,8 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue $this->villages, $this->districts, $this->cities, - $this->provinces + $this->provinces, + $this->user // Kirim user ke email sebagai cc dan bcc ); $email->with([ @@ -61,6 +64,7 @@ class SendPenawaranKJPPTenderJob implements ShouldQueue 'districts' => $this->districts, 'cities' => $this->cities, 'provinces' => $this->provinces, + 'user' => $this->user // Kirim user ke email sebagai cc dan bcc ]); $send = Mail::to($this->kjpps)->send($email); diff --git a/app/Jobs/SendPenawaranTenderJob.php b/app/Jobs/SendPenawaranTenderJob.php index 6a37f6c..7c5c685 100644 --- a/app/Jobs/SendPenawaranTenderJob.php +++ b/app/Jobs/SendPenawaranTenderJob.php @@ -21,11 +21,12 @@ class SendPenawaranTenderJob implements ShouldQueue protected $districts; protected $cities; protected $provinces; + protected $user; // Tidak perlu array [0] lagi /** * Create a new job instance. */ - public function __construct($kjpps, $penawaran, $permohonan, $villages, $districts, $cities, $provinces) + public function __construct($kjpps, $penawaran, $permohonan, $villages, $districts, $cities, $provinces,$user) { $this->kjpps = $kjpps; $this->penawaran = $penawaran; @@ -34,6 +35,7 @@ class SendPenawaranTenderJob implements ShouldQueue $this->districts = $districts; $this->cities = $cities; $this->provinces = $provinces; + $this->user = $user; // Simpan user yang dikirim email ke properti } /** @@ -49,6 +51,7 @@ class SendPenawaranTenderJob implements ShouldQueue 'districts' => $this->districts, 'cities' => $this->cities, 'provinces' => $this->provinces, + 'user' => $this->user // Kirim user ke email ke properti sebagai additional data ]); Mail::to($this->kjpps)->send($email); diff --git a/app/Models/CustomField.php b/app/Models/CustomField.php new file mode 100644 index 0000000..8dd41e5 --- /dev/null +++ b/app/Models/CustomField.php @@ -0,0 +1,26 @@ + 'array', + ]; + + public function customFields() + { + return $this->hasMany(CustomField::class); + } } diff --git a/database/migrations/2025_01_30_082943_create_custom_fields_table.php b/database/migrations/2025_01_30_082943_create_custom_fields_table.php new file mode 100644 index 0000000..b8eb922 --- /dev/null +++ b/database/migrations/2025_01_30_082943_create_custom_fields_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('name'); + $table->string('type'); + $table->timestamps(); + $table->softDeletes(); + + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('custom_fields'); + } +}; diff --git a/database/migrations/2025_01_30_085835_add_urutan_prioritas_to_custom_fields_table.php b/database/migrations/2025_01_30_085835_add_urutan_prioritas_to_custom_fields_table.php new file mode 100644 index 0000000..f4250e3 --- /dev/null +++ b/database/migrations/2025_01_30_085835_add_urutan_prioritas_to_custom_fields_table.php @@ -0,0 +1,28 @@ +integer('urutan_prioritas')->nullable()->after('type'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('custom_fields', function (Blueprint $table) { + $table->dropColumn('urutan_prioritas'); + }); + } +}; diff --git a/database/migrations/2025_01_30_091021_add_label_to_custom_fields_table.php b/database/migrations/2025_01_30_091021_add_label_to_custom_fields_table.php new file mode 100644 index 0000000..39f8b30 --- /dev/null +++ b/database/migrations/2025_01_30_091021_add_label_to_custom_fields_table.php @@ -0,0 +1,28 @@ +string('label')->nullable()->after('name'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('custom_fields', function (Blueprint $table) { + $table->dropColumn('label'); + }); + } +}; diff --git a/database/migrations/2025_01_30_091713_add_custom_fields_to_jenis_legalitas_jaminan_table.php b/database/migrations/2025_01_30_091713_add_custom_fields_to_jenis_legalitas_jaminan_table.php new file mode 100644 index 0000000..b4ba94b --- /dev/null +++ b/database/migrations/2025_01_30_091713_add_custom_fields_to_jenis_legalitas_jaminan_table.php @@ -0,0 +1,28 @@ +string('custom_fields')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('jenis_legalitas_jaminan', function (Blueprint $table) { + $table->dropColumn('custom_fields'); + }); + } +}; diff --git a/module.json b/module.json index 4d52030..37e7ebd 100644 --- a/module.json +++ b/module.json @@ -302,7 +302,10 @@ "pemohon-ao", "pemohon-eo", "admin", - "surveyor" + "surveyor", + "senior-officer", + "EO Appraisal", + "DD Appraisal" ] }, { @@ -851,6 +854,17 @@ "administrator", "admin" ] + }, + { + "title": "Custom Field", + "path": "basicdata.custom-field", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] } ] } diff --git a/resources/views/activity/index.blade.php b/resources/views/activity/index.blade.php index 2e73d0c..eda029b 100644 --- a/resources/views/activity/index.blade.php +++ b/resources/views/activity/index.blade.php @@ -4,35 +4,45 @@ {{ Breadcrumbs::render('activity') }} @endsection @section('content') -@push('styles') - + @push('styles') + + @endpush
@@ -219,7 +229,8 @@ tujuan_penilaian_id: { title: 'Tujuan Penilaian', render: (item, data) => { - return data.tujuan_penilaian && data.tujuan_penilaian.name ? `${data.tujuan_penilaian.name}` : '-'; + return data.tujuan_penilaian && data.tujuan_penilaian.name ? + `${data.tujuan_penilaian.name}` : '-'; }, }, status: { @@ -249,17 +260,34 @@ return `${data.status}`; }, }, - actions: { - title: 'Action', - render: (item, data) => ` -
- - - -
`, + title: 'Action', + render: (item, data) => { + const status = data.status; // Anggap status berada di dalam objek data + const dokumenjaminan = data.dokumenjaminan || []; + + return ` +
+ + + + ${ + ['survey', 'done', 'proses-laporan', 'laporan', 'paparan'].includes(status) ? + dokumenjaminan.map(dokumen => { + return ` + + + + `; + }).join('') : '' } - }, +
+ `; + }, +}, + } + + }; let dataTable = new KTDataTable(element, dataTableOptions); @@ -306,7 +334,5 @@ const allChecked = Array.from(statusCheckboxes).every(cb => cb.checked); selectAllCheckbox.checked = allChecked; } - - @endpush diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index fde419a..c29b9d1 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -185,13 +185,13 @@
@endif
- @foreach ($permohonan->debiture->documents as $dokumen) -
documents as $dokumen) +
-
@if (!isset($status)) diff --git a/resources/views/component/form-penilai.blade.php b/resources/views/component/form-penilai.blade.php index 4ccb04b..9b870f6 100644 --- a/resources/views/component/form-penilai.blade.php +++ b/resources/views/component/form-penilai.blade.php @@ -74,8 +74,8 @@
- @if (isset($permohonan->debiture->documents)) - @foreach ($permohonan->debiture->documents as $item) + @if (isset($permohonan->documents)) + @foreach ($permohonan->documents as $item)

{{ $item->jenisJaminan->name }}

@@ -218,7 +218,7 @@
- @foreach ($permohonan->debiture->documents as $dokumen) + @foreach ($permohonan->documents as $dokumen) @php $hubCadebPemilik = $dokumen->pemilik->hubungan_pemilik->name ?? 'N/A'; @endphp @@ -343,13 +343,19 @@

{{ $title ?? 'Data Jaminan' }}

+ @php + use Illuminate\Support\Facades\Route; + @endphp
- @if (isset($id)) - + @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) && + Route::currentRouteName('otorisator.show')) + Back - @else - + + @elseif (Auth::user()->hasAnyRole(['administrator','surveyor']) && Route::currentRouteName('penilai.show')) + Back @endif @@ -367,7 +373,7 @@
- @foreach ($permohonan->debiture->documents as $dokumen) + @foreach ($permohonan->documents as $dokumen) {{ formatAlamat($dokumen->pemilik) }} {{ formatAlamat($dokumen->pemilik) }} @@ -545,7 +551,7 @@ - @foreach ($permohonan->debiture->documents as $dokumen) + @foreach ($permohonan->documents as $dokumen) @if ($dokumen->jenisJaminan) @php $formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true); @@ -616,8 +622,8 @@ -
@@ -670,18 +676,24 @@ Tambah NPW
- -
- +
+ + * Masukkan Angka Saja +
@@ -795,6 +807,10 @@
- diff --git a/resources/views/component/signature-pad.blade.php b/resources/views/component/signature-pad.blade.php index ab69e15..3b55a2f 100644 --- a/resources/views/component/signature-pad.blade.php +++ b/resources/views/component/signature-pad.blade.php @@ -1,6 +1,13 @@

{{ ucfirst($type) }}

+ @if (($type === 'penilai' && Auth::user()->sign)) + + E-Sign + @else
@@ -8,4 +15,5 @@
+ @endif
diff --git a/resources/views/custom_fields/create.blade.php b/resources/views/custom_fields/create.blade.php new file mode 100644 index 0000000..448cdb2 --- /dev/null +++ b/resources/views/custom_fields/create.blade.php @@ -0,0 +1,89 @@ +@php + $route = explode('.', Route::currentRouteName()); +@endphp + +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+ @if(isset($customField->id)) +
+ + @method('PUT') + @else + + @endif + @csrf +
+
+

+ {{ isset($customField->id) ? 'Edit' : 'Tambah' }} Custom Field +

+
+ Back +
+
+
+
+ +
+ + @error('name') + {{ $message }} + @enderror +
+
+
+ +
+ + @error('label') + {{ $message }} + @enderror +
+
+
+ +
+ + @error('type') + {{ $message }} + @enderror +
+
+
+ +
+ + @error('urutan_prioritas') + {{ $message }} + @enderror +
+
+
+ +
+
+
+
+
+@endsection diff --git a/resources/views/custom_fields/index.blade.php b/resources/views/custom_fields/index.blade.php new file mode 100644 index 0000000..908c670 --- /dev/null +++ b/resources/views/custom_fields/index.blade.php @@ -0,0 +1,153 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('basicdata.custom-field') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Custom Field +

+ +
+
+
+ + + + + + + + + + +
+ + + Custom Field + + + Type + + + Urutan Prioritas + + Action
+
+ +
+
+
+@endsection + +@push('scripts') + + +@endpush + diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index ed7805f..e76da06 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -16,16 +16,16 @@

-
- -
-

- {{ $permohonan->nomor_registrasi ?? "-" }} -

-
+
+ +
+

+ {{ $permohonan->nomor_registrasi ?? "-" }} +

+
@if($detail->details) - @if($detail->jenisLegalitasJaminan->custom_field) - @php $custom_field = json_decode($detail->details,true) @endphp -
- -
- + @if($detail->jenisLegalitasJaminan->custom_fields) + @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) +
+ +
+ +
-
+ @endforeach @endif - @else - @if($detail->jenisLegalitasJaminan->custom_field) -
- -
- @if($detail->jenisLegalitasJaminan->custom_field_type === "text") - - @elseif($detail->jenisLegalitasJaminan->custom_field_type === "number") - - @elseif($detail->jenisLegalitasJaminan->custom_field_type === "date") - - @elseif($detail->jenisLegalitasJaminan->custom_field_type === "textarea") - - @else - - @endif + @if($detail->jenisLegalitasJaminan->custom_fields) + @foreach($detail->jenisLegalitasJaminan->custom_fields as $key) +
+ +
+ +
-
+ @endforeach @endif @endif @@ -393,25 +385,17 @@
- @if($item->custom_field) -
- -
- @if($item->custom_field_type === "text") - - @elseif($item->custom_field_type === "number") - - @elseif($item->custom_field_type === "date") - - @elseif($item->custom_field_type === "textarea") - - @else - - @endif + @if($item->custom_fields) + @foreach($item->custom_fields as $field) +
+ +
+ +
-
+ @endforeach @endif
@@ -437,13 +421,13 @@ @push('scripts') {{--Pemilik Jaminan--}} diff --git a/resources/views/emails/jadwal-kunjungan.blade.php b/resources/views/emails/jadwal-kunjungan.blade.php new file mode 100644 index 0000000..42dd5e2 --- /dev/null +++ b/resources/views/emails/jadwal-kunjungan.blade.php @@ -0,0 +1,118 @@ + + + + + + Jadwal Kunjungan + + + + + + diff --git a/resources/views/jenis_jaminan/create.blade.php b/resources/views/jenis_jaminan/create.blade.php index c206f7a..173c692 100644 --- a/resources/views/jenis_jaminan/create.blade.php +++ b/resources/views/jenis_jaminan/create.blade.php @@ -92,28 +92,28 @@ @enderror
- -
- -
- @foreach ($jenisLegalitasJaminan as $row) -
+
-
-
-
- + +
+ +
+
+
+
@endsection diff --git a/resources/views/laporan/index.blade.php b/resources/views/laporan/index.blade.php index 555b890..f07bf16 100644 --- a/resources/views/laporan/index.blade.php +++ b/resources/views/laporan/index.blade.php @@ -189,6 +189,8 @@ const inspeksiId = data.debiture?.documents[0]?.inspeksi[0]?.id || '-'; const dokumenID = data.debiture?.documents[0]?.id || '-'; const jenisJaminanID = data.debiture?.documents[0]?.jenis_jaminan_id || '-'; + const typePenilaian = data.penilai?.type_penilai || ''; + const type = data.penilai?.type || ''; let laporanButton = ''; let resumeButton = ''; @@ -202,17 +204,23 @@ if(data.nilai_liquidasi==null) { laporanButton = ` - Laporn + Laporan `; } - console.log(data.nilai_liquidasi); if(data.status_bayar=="sudah_bayar" && data.nilai_liquidasi >0) { - - laporanButton = ` - + if(data.penilai.type_penilai=='resume' && !data.penilai.resume){ + laporanButton = ` + Laporan `; + } else { + laporanButton = ` + + Laporan + `; + } + } return `${resumeButton} ${laporanButton}`; diff --git a/resources/views/penawaran/kirimEmail.blade.php b/resources/views/penawaran/kirimEmail.blade.php index fa42b41..0af93a7 100644 --- a/resources/views/penawaran/kirimEmail.blade.php +++ b/resources/views/penawaran/kirimEmail.blade.php @@ -76,7 +76,7 @@ } } } - } catch (\Exception $e) { + } catch (Exception $e) { // Handle invalid JSON silently } } @@ -102,10 +102,10 @@
- Aset Jaminan: @foreach ($permohonan->debiture->documents as $document) + Aset Jaminan: @foreach ($permohonan->documents as $document) {{ $document->jenisJaminan->name }} @endforeach - Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document) + Lokasi Jaminan: @foreach ($permohonan->documents as $document) {{ $document->address }}, Kel. @foreach ($villages as $village) {{ $village->name }} @endforeach, Kec. @foreach ($districts as $district) @@ -118,47 +118,44 @@ @endforeach - Luas Tanah / Luas Bangunan: +
Dokumen Jaminan:
@php - $luas_tanah = null; - $luas_bangunan = null; + $n = 1; @endphp - @foreach ($permohonan->debiture->documents as $document) + @foreach ($permohonan->documents as $document) @foreach ($document->detail as $detail) @php $details = json_decode($detail->details); @endphp - @if (is_object($details)) - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' && - isset($details->{'luas_tanah'}) && - is_numeric($details->{'luas_tanah'})) - @php - $luas_tanah = $details->{'luas_tanah'}; - @endphp - @endif - - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' && - isset($details->{'luas_bangunan'}) && - is_numeric($details->{'luas_bangunan'})) - @php - $luas_bangunan = $details->{'luas_bangunan'}; - @endphp - @endif + @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 + / + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
+ @php $n++; @endphp + @elseif (isset($details->luas_tanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 +
+ @php $n++; @endphp + @elseif (isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
+ @php $n++; @endphp @endif @endforeach @endforeach - - @if ($luas_tanah !== null && $luas_bangunan !== null) - {{ $luas_tanah }} m2 / {{ $luas_bangunan }} m2 - @elseif ($luas_tanah !== null) - {{ $luas_tanah }} m2 - @elseif ($luas_bangunan !== null) - {{ $luas_bangunan }} m2 - @endif
@@ -169,10 +166,10 @@
Best Regards,
- {{ $permohonan->user->name }} + {{ $user->name }}

- {{ $permohonan->user->name }} + {{ $user->name }}

diff --git a/resources/views/penawaran/kirimEmailKJPP.blade.php b/resources/views/penawaran/kirimEmailKJPP.blade.php index e9e1981..3f452b0 100644 --- a/resources/views/penawaran/kirimEmailKJPP.blade.php +++ b/resources/views/penawaran/kirimEmailKJPP.blade.php @@ -104,10 +104,10 @@
- Aset Jaminan: @foreach ($permohonan->debiture->documents as $document) + Aset Jaminan: @foreach ($permohonan->documents as $document) {{ $document->jenisJaminan->name }} @endforeach - Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document) + Lokasi Jaminan: @foreach ($permohonan->documents as $document) {{ $document->address }}, Kel. @foreach ($villages as $village) {{ $village->name }} @endforeach, Kec. @foreach ($districts as $district) @@ -120,47 +120,44 @@ @endforeach - Luas Tanah / Luas Bangunan: +
Dokumen Jaminan:
@php - $luas_tanah = null; - $luas_bangunan = null; + $n = 1; @endphp - @foreach ($permohonan->debiture->documents as $document) + @foreach ($permohonan->documents as $document) @foreach ($document->detail as $detail) @php $details = json_decode($detail->details); @endphp - @if (is_object($details)) - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' && - isset($details->{'luas_tanah'}) && - is_numeric($details->{'luas_tanah'})) - @php - $luas_tanah = $details->{'luas_tanah'}; - @endphp - @endif - - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' && - isset($details->{'luas_bangunan'}) && - is_numeric($details->{'luas_bangunan'})) - @php - $luas_bangunan = $details->{'luas_bangunan'}; - @endphp - @endif + @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 + / + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
+ @php $n++; @endphp + @elseif (isset($details->luas_tanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 +
+ @php $n++; @endphp + @elseif (isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
+ @php $n++; @endphp @endif @endforeach @endforeach - - @if ($luas_tanah !== null && $luas_bangunan !== null) - {{ $luas_tanah }} m2 / {{ $luas_bangunan }} m2 - @elseif ($luas_tanah !== null) - {{ $luas_tanah }} m2 - @elseif ($luas_bangunan !== null) - {{ $luas_bangunan }} m2 - @endif
@@ -171,10 +168,10 @@
Best Regards,
- {{ $permohonan->user->name }} + {{ $user->name }}

- {{ $permohonan->user->name }} + {{ $user->name }}

diff --git a/resources/views/penawaran/surat_tender.blade.php b/resources/views/penawaran/surat_tender.blade.php index 7b8f5f0..fe651cd 100644 --- a/resources/views/penawaran/surat_tender.blade.php +++ b/resources/views/penawaran/surat_tender.blade.php @@ -72,14 +72,14 @@
  • Aset Jaminan: - @foreach ($permohonan->debiture->documents as $document) + @foreach ($permohonan->documents as $document) {{ $document->jenisJaminan->name }} @endforeach
  • Lokasi Jaminan: - @foreach ($permohonan->debiture->documents as $document) + @foreach ($permohonan->documents as $document) {{ $document->address }} @if (isset($document->jenisJaminan)) , Kel. @@ -102,48 +102,45 @@ @endforeach
  • -
  • Luas Tanah / Luas Bangunan: +
  • Dokumen Jaminan:
    @php - $luas_tanah = null; - $luas_bangunan = null; + $n = 1; @endphp - @foreach ($permohonan->debiture->documents as $document) + @foreach ($permohonan->documents as $document) @foreach ($document->detail as $detail) @php $details = json_decode($detail->details); @endphp - @if (is_object($details)) - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' && - isset($details->{'luas_tanah'}) && - is_numeric($details->{'luas_tanah'})) - @php - $luas_tanah = $details->{'luas_tanah'}; - @endphp - @endif - - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' && - isset($details->{'luas_bangunan'}) && - is_numeric($details->{'luas_bangunan'})) - @php - $luas_bangunan = $details->{'luas_bangunan'}; - @endphp - @endif + @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
    + Luas Tanah / Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 + / + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
    + @php $n++; @endphp + @elseif (isset($details->luas_tanah)) + {{ $n }}. {{ $detail->name }}
    + Luas Tanah : + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 +
    + @php $n++; @endphp + @elseif (isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
    + Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
    + @php $n++; @endphp @endif @endforeach @endforeach - - @if ($luas_tanah !== null && $luas_bangunan !== null) - {{ $luas_tanah }} m2 / {{ $luas_bangunan }} m2 - @elseif ($luas_tanah !== null) - {{ $luas_tanah }} m2 - @elseif ($luas_bangunan !== null) - {{ $luas_bangunan }} m2 - @endif
@@ -153,10 +150,10 @@

Best Regards,

- {{ $permohonan->user->name }} + {{ auth()->user()->name }}

- {{ $permohonan->user->name }} + {{ auth()->user()->name }}

Sub Direktorat Appraisal diff --git a/resources/views/penawaran/surat_tender_download.blade.php b/resources/views/penawaran/surat_tender_download.blade.php index dcf640c..42180b1 100644 --- a/resources/views/penawaran/surat_tender_download.blade.php +++ b/resources/views/penawaran/surat_tender_download.blade.php @@ -102,10 +102,10 @@
- Aset Jaminan: @foreach ($permohonan->debiture->documents as $document) + Aset Jaminan: @foreach ($permohonan->documents as $document) {{ $document->jenisJaminan->name }} @endforeach - Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document) + Lokasi Jaminan: @foreach ($permohonan->documents as $document) {{ $document->address }}, Kel. @foreach ($villages as $village) {{ $village->name }} @endforeach, Kec. @foreach ($districts as $district) @@ -118,47 +118,44 @@ @endforeach - Luas Tanah / Luas Bangunan: +
Dokumen Jaminan:
@php - $luas_tanah = null; - $luas_bangunan = null; + $n = 1; @endphp - @foreach ($permohonan->debiture->documents as $document) + @foreach ($permohonan->documents as $document) @foreach ($document->detail as $detail) @php $details = json_decode($detail->details); @endphp - @if (is_object($details)) - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' && - isset($details->{'luas_tanah'}) && - is_numeric($details->{'luas_tanah'})) - @php - $luas_tanah = $details->{'luas_tanah'}; - @endphp - @endif - - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' && - isset($details->{'luas_bangunan'}) && - is_numeric($details->{'luas_bangunan'})) - @php - $luas_bangunan = $details->{'luas_bangunan'}; - @endphp - @endif + @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 + / + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
+ @php $n++; @endphp + @elseif (isset($details->luas_tanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 +
+ @php $n++; @endphp + @elseif (isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
+ @php $n++; @endphp @endif @endforeach @endforeach - - @if ($luas_tanah !== null && $luas_bangunan !== null) - {{ $luas_tanah }} m2 / {{ $luas_bangunan }} m2 - @elseif ($luas_tanah !== null) - {{ $luas_tanah }} m2 - @elseif ($luas_bangunan !== null) - {{ $luas_bangunan }} m2 - @endif
@@ -169,10 +166,10 @@
Best Regards,
- {{ $permohonan->user->name }} + {{ auth()->user()->name }}

- {{ $permohonan->user->name }} + {{ auth()->user()->name }}

diff --git a/resources/views/penawaran/surat_tender_kjpp.blade.php b/resources/views/penawaran/surat_tender_kjpp.blade.php index 8edc180..37e54f0 100644 --- a/resources/views/penawaran/surat_tender_kjpp.blade.php +++ b/resources/views/penawaran/surat_tender_kjpp.blade.php @@ -42,7 +42,7 @@ } } } - } catch (\Exception $e) { + } catch (Exception $e) { // Handle invalid JSON silently } } @@ -70,14 +70,14 @@
  • Aset Jaminan: - @foreach ($permohonan->debiture->documents as $document) + @foreach ($permohonan->documents as $document) {{ $document->jenisJaminan->name }} @endforeach
  • Lokasi Jaminan: - @foreach ($permohonan->debiture->documents as $document) + @foreach ($permohonan->documents as $document) {{ $document->address }} @if (isset($document->jenisJaminan)) , Kel. @@ -100,48 +100,45 @@ @endforeach
  • -
  • Luas Tanah / Luas Bangunan: +
  • Dokumen Jaminan:
    @php - $luas_tanah = null; - $luas_bangunan = null; + $n = 1; @endphp - @foreach ($permohonan->debiture->documents as $document) + @foreach ($permohonan->documents as $document) @foreach ($document->detail as $detail) @php $details = json_decode($detail->details); @endphp - @if (is_object($details)) - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' && - isset($details->{'luas_tanah'}) && - is_numeric($details->{'luas_tanah'})) - @php - $luas_tanah = $details->{'luas_tanah'}; - @endphp - @endif - - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' && - isset($details->{'luas_bangunan'}) && - is_numeric($details->{'luas_bangunan'})) - @php - $luas_bangunan = $details->{'luas_bangunan'}; - @endphp - @endif + @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
    + Luas Tanah / Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 + / + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
    + @php $n++; @endphp + @elseif (isset($details->luas_tanah)) + {{ $n }}. {{ $detail->name }}
    + Luas Tanah : + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 +
    + @php $n++; @endphp + @elseif (isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
    + Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
    + @php $n++; @endphp @endif @endforeach @endforeach - - @if ($luas_tanah !== null && $luas_bangunan !== null) - {{ $luas_tanah }} m2 / {{ $luas_bangunan }} m2 - @elseif ($luas_tanah !== null) - {{ $luas_tanah }} m2 - @elseif ($luas_bangunan !== null) - {{ $luas_bangunan }} m2 - @endif
@@ -151,10 +148,10 @@

Best Regards,

- {{ $permohonan->user->name }} + {{ auth()->user()->name }}

- {{ $permohonan->user->name }} + {{ auth()->user()->name }}

Sub Direktorat Appraisal diff --git a/resources/views/penawaran/surat_tender_kjpp_download.blade.php b/resources/views/penawaran/surat_tender_kjpp_download.blade.php index bfd1806..0c14894 100644 --- a/resources/views/penawaran/surat_tender_kjpp_download.blade.php +++ b/resources/views/penawaran/surat_tender_kjpp_download.blade.php @@ -104,10 +104,10 @@
- Aset Jaminan: @foreach ($permohonan->debiture->documents as $document) + Aset Jaminan: @foreach ($permohonan->documents as $document) {{ $document->jenisJaminan->name }} @endforeach - Lokasi Jaminan: @foreach ($permohonan->debiture->documents as $document) + Lokasi Jaminan: @foreach ($permohonan->documents as $document) {{ $document->address }}, Kel. @foreach ($villages as $village) {{ $village->name }} @endforeach, Kec. @foreach ($districts as $district) @@ -120,47 +120,44 @@ @endforeach - Luas Tanah / Luas Bangunan: +
Dokumen Jaminan:
@php - $luas_tanah = null; - $luas_bangunan = null; + $n = 1; @endphp - @foreach ($permohonan->debiture->documents as $document) + @foreach ($permohonan->documents as $document) @foreach ($document->detail as $detail) @php $details = json_decode($detail->details); @endphp - @if (is_object($details)) - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_tanah' && - isset($details->{'luas_tanah'}) && - is_numeric($details->{'luas_tanah'})) - @php - $luas_tanah = $details->{'luas_tanah'}; - @endphp - @endif - - @if ( - $detail->jenisLegalitasJaminan->custom_field === 'luas_bangunan' && - isset($details->{'luas_bangunan'}) && - is_numeric($details->{'luas_bangunan'})) - @php - $luas_bangunan = $details->{'luas_bangunan'}; - @endphp - @endif + @if (isset($details->luas_tanah) && isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah / Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 + / + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
+ @php $n++; @endphp + @elseif (isset($details->luas_tanah)) + {{ $n }}. {{ $detail->name }}
+ Luas Tanah : + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_tanah)) }} + m2 +
+ @php $n++; @endphp + @elseif (isset($details->luas_bangunan)) + {{ $n }}. {{ $detail->name }}
+ Luas Bangunan: + {{ preg_replace('/[^0-9.]/', '', str_replace('m2', '', $details->luas_bangunan)) }} + m2 +
+ @php $n++; @endphp @endif @endforeach @endforeach - - @if ($luas_tanah !== null && $luas_bangunan !== null) - {{ $luas_tanah }} m2 / {{ $luas_bangunan }} m2 - @elseif ($luas_tanah !== null) - {{ $luas_tanah }} m2 - @elseif ($luas_bangunan !== null) - {{ $luas_bangunan }} m2 - @endif
@@ -171,10 +168,10 @@
Best Regards,
- {{ $permohonan->user->name }} + {{ auth()->user()->name }}

- {{ $permohonan->user->name }} + {{ auth()->user()->name }}

diff --git a/resources/views/penilai/components/call-report.blade.php b/resources/views/penilai/components/call-report.blade.php new file mode 100644 index 0000000..6685408 --- /dev/null +++ b/resources/views/penilai/components/call-report.blade.php @@ -0,0 +1,596 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+ @php + $senior_officer = null; + if ($permohonan->debiture && $permohonan->documents) { + foreach ($permohonan->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; + } + } + } + } + } + } + } + + @endphp +
+ @csrf + + + + + + @include('lpj::assetsku.includenya') + {{-- @include('lpj::surveyor.components.header') + @include('lpj::surveyor.components.callReport') --}} + +
+
+

+ CALL Report +

+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ {{-- 250109828129/ --}} + +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+ +
+
+

Menindak lanjuti permintaan + {{$permohonan->tujuanPenilaian->name ?? ''}}, BAG CABang {{ $permohonan->branch->name }} + disampaikan hal sebagai berikut: +

+
+
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ + +
+
+
+ + +
+
+

Penilaian ke lokasi objek telah dilakukan oleh : +

+
+
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+
+
+
+ +
+
+

+ Informasi yang didapatkan sebagai berikut : +

+
+
+
+ +
+ @if (!empty($callReport['fakta']['fakta_positif'])) + @foreach ($callReport['fakta']['fakta_positif'] as $index => $positif) +
+ + +
+ @endforeach + @else +
+ + +
+ @endif + +
+
+ +
+ +
+ @if (!empty($callReport['fakta']['fakta_negatif'])) + @foreach ($callReport['fakta']['fakta_negatif'] as $index => $negatif) +
+ + +
+ @endforeach + @else +
+ + + +
+ @endif + +
+
+
+
+ +
+ + @if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal'])) + + LAMPIRAN FOTO DAN DOKUMEN + + + Print + + @endif +
+
+
+@endsection +@push('scripts') + {{-- --}} + @include('lpj::surveyor.js.utils') +@endpush diff --git a/resources/views/penilai/components/foto-jaminan.blade.php b/resources/views/penilai/components/foto-jaminan.blade.php index c600d1b..73df482 100644 --- a/resources/views/penilai/components/foto-jaminan.blade.php +++ b/resources/views/penilai/components/foto-jaminan.blade.php @@ -58,7 +58,16 @@ page-break-inside: avoid; } + width: 48%; + margin-right: 2%; + float: left; + padding: 5px; + box-sizing: border-box; + page-break-inside: avoid; + } + .photo-item img { + max-width: 100%; max-width: 100%; height: auto; object-fit: contain; @@ -107,6 +116,9 @@ @php $imagePath = storage_path('app/public/' . $item['path']); @endphp + @if ($counter % 2 == 0) +
+ @endif

{{ $item['name'] }}

@if ($statusLpj || file_exists($imagePath)) diff --git a/resources/views/penilai/components/informasi-pembanding.blade.php b/resources/views/penilai/components/informasi-pembanding.blade.php index 3245888..c2f3feb 100644 --- a/resources/views/penilai/components/informasi-pembanding.blade.php +++ b/resources/views/penilai/components/informasi-pembanding.blade.php @@ -28,37 +28,39 @@
- +
- {{ $item['harga_diskon'] }} + Rp. {{ $item['harga'] }}
- +
- {{ $item['harga'] }} + {{ $item['telepon'] }}
- {{ $item['harga'] }} + {{ $item['penawaran'] }}
- {{ $item['luas_tanah'] }} + {{ $item['luas_tanah'] }} + m2
- {{ $item['luas_bangunan'] }} + {{ $item['luas_bangunan'] }} + m2
diff --git a/resources/views/penilai/components/lpj-sederhana-standard.blade.php b/resources/views/penilai/components/lpj-sederhana-standard.blade.php index 3149280..56c8a41 100644 --- a/resources/views/penilai/components/lpj-sederhana-standard.blade.php +++ b/resources/views/penilai/components/lpj-sederhana-standard.blade.php @@ -5,22 +5,21 @@ @endsection @section('content') - + .list-decimal li { + margin-bottom: 0.5rem; + } + @include('lpj::assetsku.includenya')
@@ -34,25 +33,33 @@
  1. PENILAIAN INI DIBUAT BERDASARKAN ATURAN YANG BERLAKU DI SUBDIT APPRAISAL
  2. -
  3. LAPORAN INI DIBUAT BERDASARKAN DATA FOTOCOPY DOKUMEN YANG DITERIMA PENILAI DENGAN ASUMSI BAHWA DATA TERSEBUT SESUAI DENGAN DOKUMEN ASLINYA
  4. -
  5. PENILAI TIDAK MELAKUKAN PEMBUKTIAN LEBIH RINCI ATAU PENGAKUAN TERTULIS DARI PIHAK YANG DITEMUI SAAT PENILAIAN, ATAS INFORMASI YANG DIBERIKAN SECARA LISAN SEHUBUNGAN DENGAN IDENTITAS DIRI DAN HUBUNGAN DI ANTARA PIHAK TERKAIT SAAT MELAKUKAN INSPEKSI OBJEK YANG DINILAI
  6. -
  7. LAPORAN INI DIGUNAKAN HANYA UNTUK KEPENTINGAN INTERNAL DAN DILARANG MENYEBARKAN KEPADA PIHAK KETIGA
  8. +
  9. LAPORAN INI DIBUAT BERDASARKAN DATA FOTOCOPY DOKUMEN YANG DITERIMA PENILAI DENGAN ASUMSI BAHWA DATA + TERSEBUT SESUAI DENGAN DOKUMEN ASLINYA
  10. +
  11. PENILAI TIDAK MELAKUKAN PEMBUKTIAN LEBIH RINCI ATAU PENGAKUAN TERTULIS DARI PIHAK YANG DITEMUI SAAT + PENILAIAN, ATAS INFORMASI YANG DIBERIKAN SECARA LISAN SEHUBUNGAN DENGAN IDENTITAS DIRI DAN HUBUNGAN + DI ANTARA PIHAK TERKAIT SAAT MELAKUKAN INSPEKSI OBJEK YANG DINILAI
  12. +
  13. LAPORAN INI DIGUNAKAN HANYA UNTUK KEPENTINGAN INTERNAL DAN DILARANG MENYEBARKAN KEPADA PIHAK KETIGA +
diff --git a/resources/views/penilai/components/memo.blade.php b/resources/views/penilai/components/memo.blade.php index 71cee50..8f87ac2 100644 --- a/resources/views/penilai/components/memo.blade.php +++ b/resources/views/penilai/components/memo.blade.php @@ -281,7 +281,8 @@ {{-- @include('lpj::penilai.components.foto-lampiran') --}}