From 280ed97a502c164c5d4dbaf3388b8158634e5760 Mon Sep 17 00:00:00 2001 From: majid Date: Tue, 3 Dec 2024 15:00:18 +0700 Subject: [PATCH 1/4] update data pembading surveyor --- app/Http/Controllers/PenilaiController.php | 146 +- app/Http/Controllers/SurveyorController.php | 404 ++++-- app/Http/Requests/FormSurveyorRequest.php | 9 +- app/Models/Inspeksi.php | 2 +- app/Models/Regions.php | 4 + .../activity/progres_activity/index.blade.php | 16 +- .../surveyor/components/bangunan.blade.php | 109 +- .../surveyor/components/card-tambah.blade.php | 13 +- .../components/data-pembanding.blade.php | 1220 +++++++---------- .../views/surveyor/components/denah.blade.php | 80 +- .../views/surveyor/components/fakta.blade.php | 22 +- .../views/surveyor/components/foto.blade.php | 67 +- .../surveyor/components/inspeksi.blade.php | 89 +- .../surveyor/components/lingkungan.blade.php | 29 +- .../views/surveyor/components/tanah.blade.php | 9 +- 15 files changed, 1185 insertions(+), 1034 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 357d984..a141468 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Inspeksi; use App\Http\Controllers\Controller; +use Illuminate\Support\Facades\Auth; class PenilaiController extends Controller { @@ -22,7 +23,8 @@ class PenilaiController extends Controller /** * Show the form for creating a new resource. */ - public function lampiran($id){ + public function lampiran($id) + { $permohonan = Permohonan::with('debiture.documents')->find($id); $jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id; @@ -36,7 +38,7 @@ class PenilaiController extends Controller return view('lpj::penilai.lampiran', compact('permohonan', 'formFoto')); - } + } public function create() { @@ -87,67 +89,83 @@ class PenilaiController extends Controller } public function dataForDatatables(Request $request) - { - if (is_null($this->user) || !$this->user->can('penilai.view')) { - //abort(403, 'Sorry! You are not allowed to view users.'); - } - - // Retrieve data from the database - $query = Permohonan::query()->where('status', '=', 'done'); - - // 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('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('jenisfasilitasKredit', 'name', '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->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'jenisfasilitasKredit'])->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, - ]); +{ + if (is_null($this->user) || !$this->user->can('penilai.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); } + + // Retrieve data from the database + $query = Permohonan::query(); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $columns = ['nomor_registrasi', 'debiture.name', 'branch.name', 'user.name', 'tujuanPenilaian.name', 'jenisfasilitasKredit.name']; + + $query->where(function ($q) use ($search, $columns) { + foreach ($columns as $column) { + $q->orWhereRelation(explode('.', $column)[0], explode('.', $column)[1], 'LIKE', '%' . $search . '%'); + } + }); + } + + // Apply whereHas to check penilai_id, role, and user_id specifically for 'penilai' role + $query->whereHas('penilaian.userPenilai', function ($q) { + $q->where('role', 'penilai') // Ensure the role is 'penilai' + ->where('user_id', 12); // Ganti dengan Auth::user()->id jika dinamis + }); + + // 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; + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with([ + 'user', + 'debiture', + 'branch', + 'tujuanPenilaian', + 'jenisfasilitasKredit', + 'penilaian.userPenilai' // Ensure this relation is included + ])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = $request->get('page', 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, + ]); +} + + + + } diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 5e94681..38e5473 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -5,6 +5,7 @@ namespace Modules\Lpj\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Validator; use Maatwebsite\Excel\Facades\Excel; use Modules\Lpj\Exports\BasicDataSurveyorExport; use Illuminate\Support\Facades\DB; @@ -97,12 +98,12 @@ class SurveyorController extends Controller 'penilaian', 'documents.jenisJaminan', ])->findOrFail($id); - + $surveyor = $id; $branches = Branch::all(); $provinces = Province::all(); $bentukTanah = BentukTanah::all(); - + // Get all inspeksi data for this permohonan $inspeksiData = Inspeksi::where('permohonan_id', $id) ->get() @@ -115,7 +116,8 @@ class SurveyorController extends Controller 'data_pembanding' => json_decode($item->data_pembanding, true), ]; }); - + + return view('lpj::surveyor.detail', compact( 'permohonan', 'surveyor', @@ -125,7 +127,7 @@ class SurveyorController extends Controller 'inspeksiData' )); } - + /** * Store form inspeksi. */ @@ -134,10 +136,10 @@ class SurveyorController extends Controller try { // Validate request data $validatedData = $request->validated(); - + // Get action specific rules and process data $processedData = $this->getActionSpecificRules( - $validatedData, + $validatedData, $request->input('type'), $request ); @@ -264,19 +266,19 @@ class SurveyorController extends Controller 'foto_lantai_lainnya' => ['foto_lantai_lainnya', 'name_lantai_lainnya'], 'foto_rute_lainnya' => ['foto_rute_lainnya', 'name_rute_lainnya'], ]; - + $inspeksi = Inspeksi::firstOrNew([ 'permohonan_id' => $request->input('permohonan_id'), 'jenis_jaminan_id' => $request->input('jenis_jaminan_id') ]); - + // Get existing foto_form data if it exists - $existingData = $inspeksi->exists && $inspeksi->foto_form - ? json_decode($inspeksi->foto_form, true) + $existingData = $inspeksi->exists && $inspeksi->foto_form + ? json_decode($inspeksi->foto_form, true) : []; - + $formatFotojson = $existingData; // Start with existing data - + // Process each photo category foreach ($photoCategories as $category => $fields) { // Only update if new files are provided @@ -288,7 +290,7 @@ class SurveyorController extends Controller $formatFotojson[$category] = $this->processPhotoCategory($request, $fields); } } - + // Process single files $singleFiles = ['foto_basement', 'foto_gerbang', 'pendamping']; foreach ($singleFiles as $file) { @@ -300,7 +302,7 @@ class SurveyorController extends Controller $formatFotojson[$file] = $this->uploadFile($request->file($file), $file); } } - + // Update record $inspeksi->foto_form = json_encode($formatFotojson); $inspeksi->save(); @@ -340,34 +342,34 @@ class SurveyorController extends Controller } private function categoryHasNewFiles(Request $request, array $fields): bool -{ - $photoField = $fields[0]; // First element is usually the photo field - return $request->hasFile($photoField) || - (is_array($request->file($photoField)) && count($request->file($photoField)) > 0); -} - -private function deleteFilesForCategory($categoryData) -{ - if (!is_array($categoryData)) { - return; + { + $photoField = $fields[0]; // First element is usually the photo field + return $request->hasFile($photoField) || + (is_array($request->file($photoField)) && count($request->file($photoField)) > 0); } - foreach ($categoryData as $item) { - if (isset($item['foto'])) { - $this->deleteOfFile($item['foto']); + private function deleteFilesForCategory($categoryData) + { + if (!is_array($categoryData)) { + return; + } + + foreach ($categoryData as $item) { + if (isset($item['foto'])) { + $this->deleteOfFile($item['foto']); + } } } -} -private function deleteOfFile($filePath) -{ - if ($filePath && Storage::exists($filePath)) { - Storage::delete($filePath); + private function deleteOfFile($filePath) + { + if ($filePath && Storage::exists($filePath)) { + Storage::delete($filePath); + } } -} - - + + /** * Custom validation request for foto @@ -377,7 +379,7 @@ private function deleteOfFile($filePath) return $request->validate([ 'permohonan_id' => 'required', 'jenis_jaminan_id' => 'required', - 'pendamping' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'pendamping' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', 'foto_objek.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048', 'name_objek.*' => 'required|string|max:255', 'foto_lingkungan.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048', @@ -399,40 +401,40 @@ private function deleteOfFile($filePath) } public function submitSurveyor($id) -{ - try { - // Get button status check result - $buttonStatusCheck = $this->checkButtonStatus($id); - $buttonStatus = json_decode($buttonStatusCheck->getContent(), true); + { + try { + // Get button status check result + $buttonStatusCheck = $this->checkButtonStatus($id); + $buttonStatus = json_decode($buttonStatusCheck->getContent(), true); - // Check if button should be disabled - if ($buttonStatus['buttonDisable']) { + // Check if button should be disabled + if ($buttonStatus['buttonDisable']) { + return response()->json([ + 'success' => false, + 'message' => 'Form belum lengkap. Pastikan semua data telah diisi dengan benar.', + ], 422); + } + + // If validation passes, update permohonan status + // $permohonan = Permohonan::findOrFail($id); + // $permohonan->update([ + // 'status' => 'done', + // 'submitted_at' => now() + // ]); + + return response()->json([ + 'success' => true, + 'message' => 'Form surveyor berhasil disubmit' + ], 200); + + } catch (\Exception $e) { return response()->json([ 'success' => false, - 'message' => 'Form belum lengkap. Pastikan semua data telah diisi dengan benar.', - ], 422); + 'message' => 'Terjadi kesalahan', + 'error' => $e->getMessage() + ], 500); } - - // If validation passes, update permohonan status - // $permohonan = Permohonan::findOrFail($id); - // $permohonan->update([ - // 'status' => 'done', - // 'submitted_at' => now() - // ]); - - return response()->json([ - 'success' => true, - 'message' => 'Form surveyor berhasil disubmit' - ], 200); - - } catch (\Exception $e) { - return response()->json([ - 'success' => false, - 'message' => 'Terjadi kesalahan', - 'error' => $e->getMessage() - ], 500); } -} @@ -442,41 +444,41 @@ private function deleteOfFile($filePath) try { // Get all inspeksi records for this permohonan $inspeksiRecords = Inspeksi::where('permohonan_id', $id)->get(); - + if ($inspeksiRecords->isEmpty()) { return response()->json(['buttonDisable' => true]); } - + foreach ($inspeksiRecords as $inspeksi) { $dataForm = json_decode($inspeksi->data_form, true); $fotoForm = json_decode($inspeksi->foto_form, true); $denahForm = json_decode($inspeksi->denah_form, true); $dataPembanding = json_decode($inspeksi->data_pembanding, true); - + // Get jenis jaminan to check if it needs denah $jenisJaminan = JenisJaminan::find($inspeksi->jenis_jaminan_id); $isTanahBangunan = !in_array( - strtoupper($jenisJaminan->name ?? ''), + strtoupper($jenisJaminan->name ?? ''), ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT'] ); - + // Check if required forms are empty or incomplete if (empty($dataForm) || empty($fotoForm)) { return response()->json(['buttonDisable' => true]); } - + if ($isTanahBangunan && empty($denahForm)) { return response()->json(['buttonDisable' => true]); } - + if (empty($dataPembanding)) { return response()->json(['buttonDisable' => true]); } } - + // If we get here, all checks passed return response()->json(['buttonDisable' => false]); - + } catch (\Exception $e) { return response()->json([ 'error' => 'Something went wrong', @@ -485,7 +487,7 @@ private function deleteOfFile($filePath) ], 500); } } - + @@ -548,41 +550,141 @@ private function deleteOfFile($filePath) } - public function storeDataPembanding(Request $request) + private function formatDataPembanding($request) { - $data = $request->all(); - if (!$data) { - return response()->json(['success' => false, 'message' => 'Invalid data'], 400); + $dataPembanding = []; + $pembandingCount = count($request->input('alamat_pembanding', [])); + + for ($i = 0; $i < $pembandingCount; $i++) { + $pembanding = $this->formatSinglePembanding($request, $i); + + // Perbaikan penanganan foto pembanding + $fotoKey = "foto_objek_pembanding_{$i}"; // Sesuaikan dengan nama field di form + if ($request->hasFile($fotoKey)) { + $pembanding['foto_objek'] = $this->handleFileUpload( + $request->file($fotoKey), + 'pembanding', + "pembanding_{$i}" + ); + } + + $dataPembanding[] = $pembanding; + } + + return $dataPembanding; + } + + private function handleFileUpload($file, $folder, $prefix) + { + if (!$file) { + return null; } + try { + // Buat nama file yang unik + $extension = $file->getClientOriginalExtension(); + $fileName = $prefix . '_' . time() . '_' . uniqid() . '.' . $extension; + + // Pastikan folder exists + $path = storage_path("app/public/{$folder}"); + if (!File::exists($path)) { + File::makeDirectory($path, 0777, true); + } + + // Simpan file + $file->storeAs("public/{$folder}", $fileName); + + // Log untuk debugging + \Log::info("File berhasil disimpan: {$folder}/{$fileName}"); + + return $fileName; + } catch (\Exception $e) { + \Log::error("Error saat upload file: " . $e->getMessage()); + throw $e; + } + } + + private function formatSinglePembanding($request, $index) + { + $fields = [ + 'alamat', 'desa', 'kecamatan', 'kabupaten', 'provinsi', + 'tahun', 'luas_tanah', 'luas_bangunan', 'tahun_bangunan', + 'status_nara_sumber', 'harga', 'nama_nara_sumber', + 'peruntukan', 'penawaran_transaksi', 'nomor_tlp', + 'kordinat_lat', 'kordinat_lng', 'jenis_aset', + ]; + + $pembanding = []; + foreach ($fields as $field) { + $inputName = "{$field}_pembanding"; + $pembanding[$field] = $request->input($inputName)[$index] ?? null; + } + + // Inisialisasi foto_objek sebagai null + $pembanding['foto_objek'] = null; + + return $pembanding; + } + + public function storeDataPembanding(Request $request) + { try { DB::beginTransaction(); - // $action = $request->input('type'); - // $rules = $this->getActionSpecificRules($data, $action, $request); + $validator = $request->validate([ + 'permohonan_id' => 'required|exists:permohonan,id', + 'type' => 'required|string', + 'jenis_jaminan_id' => 'required', + 'foto_objek' => 'nullable|image|max:2048', + 'foto_objek_pembanding_*' => 'nullable|image|max:2048', + ]); - $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first(); - - if (!$inspeksi) { - Inspeksi::create([ - 'permohonan_id' => $request->input('permohonan_id'), - 'data_pembanding' => json_encode($data), - 'name' => $request->input('type'), - 'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), - ]); - } else { - $inspeksi->update(['data_pembanding' => json_encode($data)]); + if ($validator->fails()) { + return response()->json([ + 'success' => false, + 'message' => 'Validasi gagal', + 'errors' => $validator->errors() + ], 422); } + $objekPenilaian = $this->formatObjekPenilaian($request); + if ($request->hasFile('foto_objek')) { + $objekPenilaian['foto_objek'] = $this->handleFileUpload( + $request->file('foto_objek'), + 'pembanding', + 'objek_penilaian' + ); + } + + $formattedData = [ + 'permohonan_id' => $request->input('permohonan_id'), + 'type' => $request->input('type'), + 'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), + 'objek_penilaian' => $objekPenilaian, + 'data_pembanding' => $this->formatDataPembanding($request) + ]; + + $inspeksi = $this->saveInspeksi($formattedData); + DB::commit(); - return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => json_encode($data)], 200); - } catch (Exception $e) { + return response()->json([ + 'success' => true, + 'message' => 'Data berhasil disimpan', + 'data' => $formattedData + ], 200); + + } catch (\Exception $e) { DB::rollBack(); - return response()->json(['success' => false, 'message' => 'Failed to save data: ' . $e->getMessage()], 500); + return response()->json([ + 'success' => false, + 'message' => 'Gagal menyimpan data: ' . $e->getMessage() + ], 500); } } + + /** * Form inspeksi. */ @@ -737,8 +839,9 @@ private function deleteOfFile($filePath) public function dataPembanding($id, $jaminanId) { - $permohonan = Permohonan::with( - [ + try { + // Ambil data permohonan dengan eager loading + $permohonan = Permohonan::with([ 'user', 'debiture.province', 'debiture.city', @@ -747,28 +850,65 @@ private function deleteOfFile($filePath) 'branch', 'tujuanPenilaian', 'penilaian' - ], - )->findOrFail($id); - $surveyor = $id; - $branches = Branch::all(); - $provinces = Province::all(); + ])->findOrFail($id); - $data = $this->getCommonData(); + // Ambil data inspeksi + $inspeksi = Inspeksi::where([ + 'permohonan_id' => $id, + 'jenis_jaminan_id' => $jaminanId + ])->first(); - $inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); - $forminspeksi = null; - if ($inpeksi) { - $forminspeksi = $inpeksi; - // $forminspeksi = json_decode($inpeksi->data_form, true); + // Inisialisasi variabel + $inspectionData = null; + $comparisons = null; + $fotoForm = null; + + + if ($inspeksi) { + + $inspectionData = json_decode($inspeksi->data_form, true); + if (json_last_error() !== JSON_ERROR_NONE) { + throw new \Exception('Error decoding inspection data: ' . json_last_error_msg()); + } + + if ($inspeksi->data_pembanding) { + $comparisons = json_decode($inspeksi->data_pembanding, true); + if (json_last_error() !== JSON_ERROR_NONE) { + throw new \Exception('Error decoding comparison data: ' . json_last_error_msg()); + } + + + } + $fotoForm = json_decode($inspeksi->foto_form, true); + + } + + // Ambil data pendukung + $data = $this->getCommonData(); + $branches = Branch::all(); + $provinces = Province::all(); + + return view('lpj::surveyor.components.data-pembanding', compact( + 'permohonan', + 'id', + 'branches', + 'provinces', + 'inspectionData', + 'comparisons', + 'data', + 'jaminanId', + 'fotoForm' + )); + + } catch (\Exception $e) { + return redirect() + ->back() + ->with('error', 'Terjadi kesalahan saat memuat data: ' . $e->getMessage()); } - - // return response()->json($forminspeksi); - return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces', 'forminspeksi', 'data')); } - private function getHeader(string $type): array { return self::HEADERS[$type] ?? []; @@ -1338,14 +1478,14 @@ private function deleteOfFile($filePath) $data, 'hub_cadeb', true - ) + ) ], 'hub_cadeb_penghuni' => [ $data['hub_cadeb_penghuni'] => $this->getFieldData( $data, 'hub_cadeb_penghuni', true - ) + ) ], 'kordinat_lng' => $data['kordinat_lng'] ?? null, @@ -1407,23 +1547,23 @@ private function deleteOfFile($filePath) $data = $request->all(); $result = []; - foreach ($data['nama_bagunan'] as $index => $bangunan) { - $bangunanData = [ - 'bangunan' => $bangunan, - 'kategori' => [] - ]; + // foreach ($data['nama_bangunan'] as $index => $bangunan) { + // $bangunanData = [ + // 'bangunan' => $bangunan, + // 'kategori' => [] + // ]; - foreach ($data['spek_kategori_bangunan'] as $kategoriIndex => $kategori) { - if (isset($data['spek_bangunan'][$kategori])) { - $bangunanData['kategori'][] = [ - 'kategori' => $kategori, - 'spesifikasi' => $data['spek_bangunan'][$kategori] - ]; - } - } + // foreach ($data['spek_kategori_bangunan'] as $kategoriIndex => $kategori) { + // if (isset($data['spek_bangunan'][$kategori])) { + // $bangunanData['kategori'][] = [ + // 'kategori' => $kategori, + // 'spesifikasi' => $data['spek_bangunan'][$kategori] + // ]; + // } + // } - $result[] = $bangunanData; - } + // $result[] = $bangunanData; + // } return [ 'bangunan' => [ @@ -1459,7 +1599,10 @@ private function deleteOfFile($filePath) 'gol_mas_sekitar' => $data['gol_mas_sekitar'] ?? null, 'tingkat_keramaian' => $data['tingkat_keramaian'] ?? null, 'terletak_diarea' => $data['terletak_diarea'] ?? null, - 'disekitar_lokasi' => $data['disekitar_lokasi'] ?? null, + 'disekitar_lokasi' => $data['disekitar_lokasi'] === 'yes' ? [ + 'kondisi' => $data['kondisi_bagunan_disekitar_lokasi'] ?? null, + 'sifat' => $data['sifat_bagunan_disekitar_lokasi'] ?? null, + ] : $data['disekitar_lokasi'], 'kondisi_bangunan_sekitar' => $data['kondisi_bangunan_sekitar'] ?? null, 'sifat_bangunan_sekitar' => $data['sifat_bangunan_sekitar'] ?? null, 'dekat_makam' => $data['dekat_makam'] ?? null, @@ -1917,7 +2060,6 @@ private function deleteOfFile($filePath) 'luas_unit', true ), - 'jenis_unit' => $data['jenis_unit'] ?? null, 'kondisi_unit' => $data['kondisi_unit'] ?? null, 'posisi_unit' => $data['posisi_unit'] ?? null, 'lantai' => $data['lantai'] ?? null, diff --git a/app/Http/Requests/FormSurveyorRequest.php b/app/Http/Requests/FormSurveyorRequest.php index 3eeafe5..25f32c2 100644 --- a/app/Http/Requests/FormSurveyorRequest.php +++ b/app/Http/Requests/FormSurveyorRequest.php @@ -104,7 +104,7 @@ class FormSurveyorRequest extends FormRequest 'kondisi_bangunan' => 'nullable', 'sifat_bangunan' => 'required|array', 'sifat_bangunan_input' => 'nullable|array', - 'nama_bagunan' => 'required', + 'nama_bagunan' => 'required|nullable', 'spek_kategori_bangunan.*' => 'required', 'spek_bangunan.*' => 'required', 'sarana_pelengkap' => 'required', @@ -122,7 +122,6 @@ class FormSurveyorRequest extends FormRequest 'luas_unit' => 'required', 'luas_unit_sesuai' => 'nullable', 'luas_unit_tidak_sesuai' => 'nullable', - 'jenis_unit' => 'required|array', 'kondisi_unit' => 'required|array', 'posisi_unit' => 'required|array', 'lantai' => 'required|array', @@ -150,8 +149,8 @@ class FormSurveyorRequest extends FormRequest 'tingkat_keramaian' => 'nullable', 'terletak_diarea' => 'nullable', 'disekitar_lokasi' => 'nullable', - 'kondisi_bangunan_sekitar' => 'nullable', - 'sifat_bangunan_sekitar' => 'nullable', + 'kondisi_bagunan_disekitar_lokasi' => 'nullable', + 'sifat_bagunan_disekitar_lokasi' => 'nullable', 'dekat_makam' => 'nullable', 'jarak_makam' => 'nullable', 'nama_makam' => 'nullable', @@ -521,7 +520,7 @@ class FormSurveyorRequest extends FormRequest 'jenis_asset_tidak_sesuai' => 'nullable', 'alamat_sesuai' => 'required', 'alamat_tidak_sesuai' => 'nullable', - + 'hub_cadeb' => 'required', 'hub_cadeb_sesuai' => 'nullable', 'hub_cadeb_tidak_sesuai' => 'nullable', diff --git a/app/Models/Inspeksi.php b/app/Models/Inspeksi.php index ebbe399..47e042a 100644 --- a/app/Models/Inspeksi.php +++ b/app/Models/Inspeksi.php @@ -14,7 +14,7 @@ class Inspeksi extends Model /** * The attributes that are mass assignable. */ - protected $fillable = ['data_form', 'foto_form', 'denah_form','permohonan_id', 'name', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by','jenis_jaminan_id']; + protected $fillable = ['data_form', 'foto_form', 'denah_form','permohonan_id', 'name', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by','jenis_jaminan_id','data_pembanding']; public function permohonan() { diff --git a/app/Models/Regions.php b/app/Models/Regions.php index 7b5519c..f5aef83 100644 --- a/app/Models/Regions.php +++ b/app/Models/Regions.php @@ -23,4 +23,8 @@ class Regions extends Model public function teams(){ return $this->hasMany(Teams::class, 'regions_id', 'id'); } + + public function penilaiTeam(){ + return $this->hasMany(PenilaianTeam::class, 'team_id', 'id'); + } } diff --git a/resources/views/activity/progres_activity/index.blade.php b/resources/views/activity/progres_activity/index.blade.php index 2e4189f..54a05f0 100644 --- a/resources/views/activity/progres_activity/index.blade.php +++ b/resources/views/activity/progres_activity/index.blade.php @@ -51,13 +51,12 @@ @php $sortedTeamsActivity = $teamsActivity->sortBy(function ($item) { - return $item->team->penilaianTeam - ->filter(function ($penilaianTeam) use ($item) { - return $penilaianTeam->user_id == $item->user->id; + return $item->team->regions->penilaiTeam + ->filter(function ($penilaiTeam) use ($item) { + return $penilaiTeam->user_id == $item->user->id; }) ->count(); }); - @endphp @foreach ($sortedTeamsActivity as $index => $item) @@ -75,9 +74,9 @@ @php - $totalTasks = $item->team->penilaianTeam - ->filter(function ($penilaianTeam) use ($item) { - return $penilaianTeam->user_id == $item->user->id; + $totalTasks = $item->team->regions->penilaiTeam + ->filter(function ($penilaiTeam) use ($item) { + return $penilaiTeam->user_id == $item->user->id; }) ->count(); @endphp @@ -208,7 +207,7 @@ tanggal_kunjungan: { title: 'Tgl Kunjungan', render: (item, data) => - `${formatDateFromISO(data.tanggal_kunjungan) || ''}`, + `${formatDateFromISO(data.waktu_penilaian) || ''}`, }, progress: { title: 'Progress', @@ -222,6 +221,7 @@ return `${mulai.getDate()}-${mulai.getMonth() + 1}-${mulai.getFullYear()} - ${selesai.getDate()}-${selesai.getMonth() + 1}-${selesai.getFullYear()}` }, }, + paparan: { title: 'Paparan', render: (item, data) => `${data.paparan || ''}`, diff --git a/resources/views/surveyor/components/bangunan.blade.php b/resources/views/surveyor/components/bangunan.blade.php index 284794c..474bfd6 100644 --- a/resources/views/surveyor/components/bangunan.blade.php +++ b/resources/views/surveyor/components/bangunan.blade.php @@ -8,47 +8,52 @@
- @if (isset($permohonan->debiture->documents)) - @foreach ($permohonan->debiture->documents as $item) - @php - $luas = $item->detail; - $details = json_decode($luas[0]->details, true); - $luas_bangunan = isset($details['luas_bangunan']) ? $details['luas_bangunan'] : 'N/A'; - @endphp - -

{{ $luas_bangunan }} m2

- @endforeach + @if (isset($permohonan->debiture->documents)) + @foreach ($permohonan->debiture->documents as $item) + @php + $luas = $item->detail; + $details = json_decode($luas[0]->details, true); + $luas_bangunan = isset($details['luas_bangunan']) ? $details['luas_bangunan'] : 'N/A'; + @endphp + +

{{ $luas_bangunan }} m2

+ @endforeach - @endif -
-
- - + @endif +
+
+ + + +
+ + +
-
- -
+
-
-
@@ -62,15 +67,14 @@ name || isset($forminspeksi['bangunan']['jenis_bangunan']) == $item->name ? 'checked' : '' }} - onclick="toggleCheckboxVisibility('jenis_bangunan', 'jenis_bangunan_lainnya', ['lainnya'])" - /> + onclick="toggleCheckboxVisibility('jenis_bangunan', 'jenis_bangunan_lainnya', ['lainnya'])" /> {{ $item->name }} @if (strcasecmp($item->name, 'Lainnya') == 0) - - @endif + + @endif @endforeach @endif
@@ -160,7 +164,7 @@ @if ($spek->spek_kategori_bangunan_id == $item->id) @@ -196,16 +200,28 @@
@if (isset($saranaPelengkap)) @foreach ($saranaPelengkap as $item) + @php + $isChecked = false; + $inputValue = ''; + + if (isset($forminspeksi['bangunan']['sarana_pelengkap'])) { + foreach ($forminspeksi['bangunan']['sarana_pelengkap'] as $key => $value) { + if ($key === $item->name) { + $isChecked = true; + $inputValue = $value; + break; + } + } + } + @endphp
+ placeholder="Masukkan {{ $item->name }}..." value="{{ $inputValue }}">
@endforeach @endif @@ -213,6 +229,7 @@
+ diff --git a/resources/views/surveyor/components/card-tambah.blade.php b/resources/views/surveyor/components/card-tambah.blade.php index a720d4a..510c28a 100644 --- a/resources/views/surveyor/components/card-tambah.blade.php +++ b/resources/views/surveyor/components/card-tambah.blade.php @@ -3,9 +3,9 @@ @php $jaminanId = $dokumen->jenisJaminan->id; $currentInspeksi = $inspeksiData[$jaminanId] ?? null; - + $tanahBangunanTypes = ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT']; - + $href = [ [ 'label' => 'form inspeksi', @@ -57,7 +57,14 @@
- + + + + +
+ +
diff --git a/resources/views/surveyor/components/data-pembanding.blade.php b/resources/views/surveyor/components/data-pembanding.blade.php index b90fed1..9dc3a0b 100644 --- a/resources/views/surveyor/components/data-pembanding.blade.php +++ b/resources/views/surveyor/components/data-pembanding.blade.php @@ -5,7 +5,6 @@ @endsection @section('content') - @include('lpj::assetsku.includenya')
+
-

- Data Pembanding -

+

Data Pembanding

+
-
+ {{-- @php + print_r($inspectionData); + @endphp --}} + +
- + class="table table-auto table-border align-middle text-gray-700 font-medium text-sm"> + - - - + + + - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + - - - - - - - - - - - - + - - - + - - - - - - + + + - + - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + - - - - - - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + +
- Nama - - - Objek Penilaian - - - Data Pembanding 1 - ParameterObjek PenilaianData Pembanding 1
- Foto - - @php - $formFoto = json_decode($forminspeksi['foto_form'], true); - $formIns = json_decode($forminspeksi['data_form'], true); - @endphp - - @if (isset($formFoto['object_jaminan']) && - count($formFoto['object_jaminan']) > 0 && - isset($formFoto['object_jaminan'][0]['foto_object'])) - Gambar Pendamping - @else - - @endif - - - - - -
Informasi Dasar
-

Alamat

- +
Foto +
+ Uploaded Image + +
- - - - -
Desa - - - -
Kecamatan - - - -
Kabupaten - - - -
Provinsi - - - -
- Tahun Penilaian - - - - -
- Luas Tanah - - - - -
- Luas Bangunan - - - - -
- Tahun Bangunan - - - - -
- Estimasi Tahun Visual - - - - -
- Kepemilikan - - - - -
- Harga - - - - -
- Tinggi Lantai - - - - -
- Lebar Depan - - - - -
- Lebar Jalan - - - - -
- Sumber - - - - -
- Nomor tlp - - - - -
- Titik Lokasi -
- Koordinat Lat - - - - - - - - - -
- Koordinat Lng - - - - - - - - - -
- Link Internet - - - - -
Lokasi
-

Jarak Ke jalan utama

-
- - - - + +
+ + +
-

Lebar jalan depan aset (m)

-
- - - -
Data Properti
-

Posisi kavling

+
Jenis Aset + - - - - - - - - - - {{-- --}} - -
- -

Tingkat Keramaian (Occupancy)

-
- - - + +
Karakteristik Fisik
-

Kondisi Fisik Tanah

- +
Luas Tanah (m²) + - - - - - + +
-

Beda Ketinggian dengan Jalan

+
Luas Bangunan (m²) + - - - + +
-

Bentuk Tanah

-
- - - - - -
Informasi
-

Lebar Depan

+
Status Narasumber + - - - -
- -

Fasos Fasum

- -
- - - - - - + +
- -

Lain-lain

+
Nama Narasumber + - - - - - -
- Karakteristik Ekonomi - - - - -
Pengunaan
- Zonasi/Tata Kota - - - - -
- KDB - - - - - - + +
- KLB - - - - - -
Lokasi
- KTB + Koordinat +
+ + +
- - - - -
- KDH - - - - - + +
+ + +
- Peraturan + Alamat + - - + + - +
Desa/Kelurahan + + + +
Kecamatan + + + +
Kabupaten/Kota + + + +
Provinsi + + + +
Harga (Rp) + + +
-
-
-
-
- +
+
+
+ + +@endsection - + + +@endpush diff --git a/resources/views/surveyor/components/denah.blade.php b/resources/views/surveyor/components/denah.blade.php index c19ce4c..fb21f36 100644 --- a/resources/views/surveyor/components/denah.blade.php +++ b/resources/views/surveyor/components/denah.blade.php @@ -5,7 +5,7 @@ @endsection @section('content') -@include('lpj::assetsku.includenya') + @include('lpj::assetsku.includenya')
@@ -142,7 +142,8 @@
Gambar foto_denah + alt="Gambar foto_denah" + style="{{ isset($formDenah['foto_denah']) ? 'width: 30rem;' : 'display: none;' }}"> @@ -150,9 +151,7 @@ + accept="image/*" onchange="previewImage(this, 'foto_denah-preview')">
@@ -178,29 +177,32 @@
- +
+ + @endsection @push('scripts') @endpush + diff --git a/resources/views/surveyor/components/fakta.blade.php b/resources/views/surveyor/components/fakta.blade.php index 2dd1e4a..46378f0 100644 --- a/resources/views/surveyor/components/fakta.blade.php +++ b/resources/views/surveyor/components/fakta.blade.php @@ -76,19 +76,32 @@
- @if (isset($arahMataAngin)) @foreach ($arahMataAngin as $item) + @php + $isChecked = false; + $inputValue = ''; + + if (isset($forminspeksi['fakta']['batas_batas'])) { + foreach ($forminspeksi['fakta']['batas_batas'] as $key => $value) { + if ($key === $item->name) { + $isChecked = true; + $inputValue = $value; + break; + } + } + } + @endphp
+ placeholder="Masukkan Batas {{ $item->name }}..." + value="{{ $inputValue }}">
@endforeach @endif @@ -98,6 +111,7 @@
+
diff --git a/resources/views/surveyor/components/foto.blade.php b/resources/views/surveyor/components/foto.blade.php index 82ef211..1d714fd 100644 --- a/resources/views/surveyor/components/foto.blade.php +++ b/resources/views/surveyor/components/foto.blade.php @@ -585,8 +585,12 @@
- - +
+ @@ -598,17 +602,16 @@ @push('scripts') @endpush + + diff --git a/resources/views/surveyor/components/lingkungan.blade.php b/resources/views/surveyor/components/lingkungan.blade.php index d6d2e40..0cf769f 100644 --- a/resources/views/surveyor/components/lingkungan.blade.php +++ b/resources/views/surveyor/components/lingkungan.blade.php @@ -169,25 +169,38 @@ Telah ada bangunan
- @@ -85,6 +85,7 @@ +
name, old('posisi_kavling', $forminspeksi['tanah']['posisi_kavling'] ?? [])) ? 'checked' : '' }} + {{ in_array($item->name, old('posisi_kavling', $forminspeksi['tanah']['posisi_kavling']['posisi_kavling'] ?? [])) ? 'checked' : '' }} onclick="toggleCheckboxVisibility('posisi_kavling', 'posisi_kavling_lainnya', ['Lainnya'])" /> {{ $item->name }} @if (strcasecmp($item->name, 'Lainnya') == 0) + placeholder="Masukkan Posisi Kavling lainnya..." value="{{ old('posisi_kavling_lainnya', $forminspeksi['tanah']['posisi_kavling']['lainnya'] ?? '') }}" /> @endif
@endforeach From 20e249c48d466b26cd3c8a2219309d29e3ef0abe Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 4 Dec 2024 04:12:35 +0000 Subject: [PATCH 2/4] fix The GET method is not supported for route surveyor/storeAproved/25. Supported methods: PUT --- routes/web.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index 29a0477..8ed3e19 100644 --- a/routes/web.php +++ b/routes/web.php @@ -514,7 +514,7 @@ Route::middleware(['auth'])->group(function () { Route::post('store', [SurveyorController::class, 'store'])->name('store'); Route::post('storeDenah', [SurveyorController::class, 'storeDenah'])->name('storeDenah'); Route::put('storeJadwal', [SurveyorController::class, 'storeJadwal'])->name('storeJadwal'); - Route::put('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved'); + Route::get('storeAproved/{id}', [SurveyorController::class, 'storeAproved'])->name('storeAproved'); Route::post('storeFoto', [SurveyorController::class, 'storeFoto'])->name('storeFoto'); Route::post('storeDataPembanding', [SurveyorController::class, 'storeDataPembanding'])->name('storeDataPembanding'); Route::get('checkButtonStatus/{id}', [SurveyorController::class, 'checkButtonStatus'])->name('checkButtonStatus'); From c603a99c0d2d04dbb1f2a6fcb152bc74c07d1b2b Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 4 Dec 2024 12:08:14 +0700 Subject: [PATCH 3/4] update kertas kerja dan column name table inspeksi --- app/Exports/KertasKerjaExport.php | 74 ++++ app/Http/Controllers/PenilaiController.php | 265 ++++++++---- app/Http/Controllers/PenilaianController.php | 11 +- app/Http/Controllers/SurveyorController.php | 11 +- ...2_04_041852_update_name_inspeksi_table.php | 28 ++ resources/views/penilai/show.blade.php | 87 +++- resources/views/penilaian/form.blade.php | 2 +- .../components/data-pembanding.blade.php | 19 +- .../surveyor/components/header.blade.php | 137 +++--- .../surveyor/components/inspeksi.blade.php | 136 +++--- resources/views/surveyor/index.blade.php | 391 ++++++++++-------- routes/web.php | 2 + 12 files changed, 753 insertions(+), 410 deletions(-) create mode 100644 app/Exports/KertasKerjaExport.php create mode 100644 database/migrations/2024_12_04_041852_update_name_inspeksi_table.php diff --git a/app/Exports/KertasKerjaExport.php b/app/Exports/KertasKerjaExport.php new file mode 100644 index 0000000..c931d47 --- /dev/null +++ b/app/Exports/KertasKerjaExport.php @@ -0,0 +1,74 @@ +data = $data; + } + + public function collection() + { + return collect([ + [ + 'Pendekatan pasar', + 'Nama Pemilik Aset', + '', + ], + [ + 'Metode Perbandingan Data Pasar', + 'Nama Pemberi Tugas: ', + '', + '', + ], + [ + 'Tanggal Penilaian: ', + 'Lokasi: ', + '', + '', + ], + [ + 'No.', + 'Objek Penilaian', + 'Data Pembanding 1', + 'Data Pembanding 2', + 'Data Pembanding 3' + ], + ]); + } + + // Tambahkan method map() + public function map($row): array + { + return $row; + + } + + public function headings(): array + { + return []; + } + + public function columnFormats(): array + { + return [ + 'A' => NumberFormat::FORMAT_NUMBER, + 'C' => NumberFormat::FORMAT_NUMBER, + 'D' => NumberFormat::FORMAT_NUMBER, + 'F' => NumberFormat::FORMAT_NUMBER, + 'G' => NumberFormat::FORMAT_NUMBER, + 'P' => NumberFormat::FORMAT_DATE_DATETIME, + 'Q' => NumberFormat::FORMAT_DATE_DATETIME + ]; + } +} diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index a141468..968d631 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -7,7 +7,8 @@ use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Inspeksi; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth; - +use Maatwebsite\Excel\Facades\Excel; +use Modules\Lpj\Exports\KertasKerjaExport; class PenilaiController extends Controller { public $user; @@ -89,83 +90,209 @@ class PenilaiController extends Controller } public function dataForDatatables(Request $request) -{ - if (is_null($this->user) || !$this->user->can('penilai.view')) { - //abort(403, 'Sorry! You are not allowed to view users.'); - } + { + if (is_null($this->user) || !$this->user->can('penilai.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } - // Retrieve data from the database - $query = Permohonan::query(); + // Retrieve data from the database + $query = Permohonan::query(); - // Apply search filter if provided - if ($request->has('search') && !empty($request->get('search'))) { - $search = $request->get('search'); - $columns = ['nomor_registrasi', 'debiture.name', 'branch.name', 'user.name', 'tujuanPenilaian.name', 'jenisfasilitasKredit.name']; + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $columns = ['nomor_registrasi', 'debiture.name', 'branch.name', 'user.name', 'tujuanPenilaian.name', 'jenisfasilitasKredit.name']; - $query->where(function ($q) use ($search, $columns) { - foreach ($columns as $column) { - $q->orWhereRelation(explode('.', $column)[0], explode('.', $column)[1], 'LIKE', '%' . $search . '%'); - } + $query->where(function ($q) use ($search, $columns) { + foreach ($columns as $column) { + $q->orWhereRelation(explode('.', $column)[0], explode('.', $column)[1], 'LIKE', '%' . $search . '%'); + } + }); + } + + // Apply whereHas to check penilai_id, role, and user_id specifically for 'penilai' role + $query->whereHas('penilaian.userPenilai', function ($q) { + $q->where('role', 'penilai') // Ensure the role is 'penilai' + ->where('user_id', 12); // Ganti dengan Auth::user()->id jika dinamis }); + + // 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; + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with([ + 'user', + 'debiture', + 'branch', + 'tujuanPenilaian', + 'jenisfasilitasKredit', + 'penilaian.userPenilai' // Ensure this relation is included + ])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = $request->get('page', 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, + ]); } - // Apply whereHas to check penilai_id, role, and user_id specifically for 'penilai' role - $query->whereHas('penilaian.userPenilai', function ($q) { - $q->where('role', 'penilai') // Ensure the role is 'penilai' - ->where('user_id', 12); // Ganti dengan Auth::user()->id jika dinamis - }); + public function kertas_kerja() + { + $data = [ + [ + 'Pendekatan pasar', + 'Nama Pemilik Aset', + '', + ], + [ + 'Metode Perbandingan Data Pasar', + 'Nama Pemberi Tugas: ', + '', + '', + ], + [ + 'Tanggal Penilaian: ', + 'Lokasi: ', + '', + '', + ], + [ + 'No.', + 'Objek Penilaian', + 'Data Pembanding 1', + 'Data Pembanding 2', + 'Data Pembanding 3' + ],[ + '1', + 'Jenis Aset', + 'Pembanding 1', + 'Pembanding 1', + 'Pembanding 1' + ], + [ + '2', + 'Luas Tanah', + 'Pembanding 2', + 'Pembanding 2', + 'Pembanding 2' + ], + [ + '3', + 'Penawaran/Transaksi', + '', + 'Pembanding 3', + 'Pembanding 3' + ], + [ + '4', + 'Harga penawaran/Transaksi', + '', + 'Pembanding 3', + 'Pembanding 3' + ],[ + '5', + 'Nomor Telepon', + '', + 'Pembanding 3', + 'Pembanding 3' + ], + [ + '6', + 'Estimasi Harga Transaksi', + '', + 'Pembanding 3', + 'Pembanding 3' + ], + [ + '7', + 'Nama Nara sumber', + '', + 'Pembanding 3', + 'Pembanding 3' + ], + [ + '8', + 'Status Nara sumber', + '', + 'Pembanding 3', + 'Pembanding 3' + ], + [ + '9', + 'Waktu Penawaran/Transaksi', + '', + 'Pembanding 3', + 'Pembanding 3' + ], + [ + '10', + 'Titik GPS', + '', + 'Pembanding 3', + ], + [ + '11', + 'Alamat', + '', + 'Pembanding 3', + 'Pembanding 3' + ], + [ + '12', + 'Jarak Pembanding dengan Objek (m)', + '', + 'Pembanding 3', + 'Pembanding 3' + ], + [ + '13', + 'Estimasi Rangking Tanah', + '', + 'Pembanding 3', + 'Pembanding 3' + ], + [ + '14', + 'Estimasi Rangking Bangunan', + '', + 'Pembanding 3', + 'Pembanding 3' + ] - // Apply sorting if provided - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); + ]; + return Excel::download(new KertasKerjaExport($data), 'kertas-kerja.xlsx'); } - // 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; - - $query->skip($offset)->take($size); - } - - // Get the filtered count of records - $filteredRecords = $query->count(); - - // Get the data for the current page - $data = $query->with([ - 'user', - 'debiture', - 'branch', - 'tujuanPenilaian', - 'jenisfasilitasKredit', - 'penilaian.userPenilai' // Ensure this relation is included - ])->get(); - - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); - - // Calculate the current page number - $currentPage = $request->get('page', 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, - ]); -} - - } diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index e0ebfa8..0d4c94a 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -298,10 +298,15 @@ class PenilaianController extends Controller $q->orWhere('status', 'LIKE', '%' . $search . '%'); }); } + $query->whereIn('status', ['registered', 'registrasi-final']); - $query->whereHas('region.teams.teamsUsers.user', function ($q) { - $q->where('id', Auth::user()->id); - }); + + // Filter berdasarkan role + if (Auth::user()->roles[0]->name !== 'administrator') { + $query->whereHas('region.teams.teamsUsers.user', function ($q) { + $q->where('id', Auth::user()->id); + }); + } if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { $order = $request->get('sortOrder'); diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 38e5473..d9bec91 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -22,6 +22,7 @@ use Modules\Lpj\Models\PosisiKavling; use Modules\Lpj\Models\KondisiFisikTanah; use Modules\Lpj\Models\KetinggianTanah; use Modules\Lpj\Models\SifatBangunan; +use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Models\JenisBangunan; use Modules\Lpj\Models\KondisiBangunan; use Modules\Lpj\Models\SpekBangunan; @@ -57,7 +58,7 @@ use Modules\Lpj\Models\DetailDokumenJaminan; use Modules\Lpj\Models\JenisKapal; use Modules\Lpj\Models\JenisKendaraan; use Modules\Lpj\Models\RuteJaminan; -use Modules\Lpj\Models\JenisJaminan; + use Modules\Lpj\Models\HubunganPemilikJaminan; use Modules\Lpj\Models\HubunganPenghuniJaminan; use Modules\Lpj\Models\AnalisaUnit; @@ -550,6 +551,11 @@ class SurveyorController extends Controller } + public function storeFreeze() { + + } + + private function formatDataPembanding($request) { $dataPembanding = []; @@ -1416,8 +1422,7 @@ class SurveyorController extends Controller 'fasilitasObjek' => FasilitasObjek::all(), 'merupakanDaerah' => MerupakanDaerah::all(), 'jenisUnit' => JenisUnit::all(), - - + 'jenisJaminan' => JenisJaminan::all(), ]; } diff --git a/database/migrations/2024_12_04_041852_update_name_inspeksi_table.php b/database/migrations/2024_12_04_041852_update_name_inspeksi_table.php new file mode 100644 index 0000000..424957e --- /dev/null +++ b/database/migrations/2024_12_04_041852_update_name_inspeksi_table.php @@ -0,0 +1,28 @@ +string('name')->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('inspeksi', function (Blueprint $table) { + $table->string('name')->nullable(false)->change(); + }); + } +}; diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php index ef1e068..f88589f 100644 --- a/resources/views/penilai/show.blade.php +++ b/resources/views/penilai/show.blade.php @@ -176,16 +176,67 @@ LAMPIRAN FOTO DAN DOKUMEN - + KERTAS KERJA PAPARAN - - WORKSHEET - +
@@ -211,6 +262,7 @@ +
@endsection + + + diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php index ef62489..88e0105 100644 --- a/resources/views/penilaian/form.blade.php +++ b/resources/views/penilaian/form.blade.php @@ -254,7 +254,7 @@
diff --git a/resources/views/surveyor/components/data-pembanding.blade.php b/resources/views/surveyor/components/data-pembanding.blade.php index 9dc3a0b..046e426 100644 --- a/resources/views/surveyor/components/data-pembanding.blade.php +++ b/resources/views/surveyor/components/data-pembanding.blade.php @@ -67,7 +67,7 @@ alt="Uploaded Image">
@@ -77,7 +77,7 @@
-
@@ -94,19 +94,18 @@ diff --git a/resources/views/surveyor/components/header.blade.php b/resources/views/surveyor/components/header.blade.php index 4674a06..3b669f8 100644 --- a/resources/views/surveyor/components/header.blade.php +++ b/resources/views/surveyor/components/header.blade.php @@ -141,8 +141,8 @@ @endforeach @endif - + {{-- --}}
@@ -162,133 +162,90 @@
-
- - -
- + +
- {{-- Alamat Sesuai --}} -
- @foreach ($permohonan->debiture->documents as $dokumen) - @php - $fields = [ - [ - 'label' => 'Jl.', - 'value' => $dokumen->address ?? '', - 'name' => 'nama_jalan', - 'readonly' => false, - ], - [ - 'label' => 'Provinsi', - 'value' => $dokumen->province->name ?? '', - 'name' => 'provinsi', - 'readonly' => true, - ], - [ - 'label' => 'Kota/Kabupaten', - 'value' => $dokumen->city->name ?? '', - 'name' => 'kota_kabupaten', - 'readonly' => true, - ], - [ - 'label' => 'Kecamatan', - 'value' => $dokumen->district->name ?? '', - 'name' => 'kecamatan', - 'readonly' => true, - ], - [ - 'label' => 'Kelurahan', - 'value' => $dokumen->village->name ?? '', - 'name' => 'desa_kelurahan', - 'readonly' => true, - ], - ]; - @endphp - @foreach ($fields as $field) -
- -
- -
-
- @endforeach - @endforeach -
- - {{-- Alamat Tidak Sesuai --}} -
+
@php - $inputDataLokasi = [ - ['label' => 'Jl.', 'id' => 'address', 'name' => 'address', 'type' => 'text'], + $fields = [ + [ + 'label' => 'Jl.', + 'name' => 'nama_jalan', + 'id' => 'nama_jalan', + 'readonly' => false, + ], [ 'label' => 'Provinsi', - 'id' => 'province_code', 'name' => 'provinsi', + 'id' => 'provinsi', 'type' => 'select', 'options' => $provinces, ], [ 'label' => 'Kota/Kabupaten', - 'id' => 'city_code', 'name' => 'kota_kabupaten', + 'id' => 'kota_kabupaten', 'type' => 'select', 'options' => $provinces, ], [ 'label' => 'Kecamatan', - 'id' => 'district_code', 'name' => 'kecamatan', + 'id' => 'kecamatan', 'type' => 'select', 'options' => $provinces, ], [ - 'label' => 'Desa/Kelurahan', - 'id' => 'village_code', + 'label' => 'Kelurahan', 'name' => 'desa_kelurahan', + 'id' => 'desa_kelurahan', 'type' => 'select', 'options' => $provinces, ], ]; @endphp - @foreach ($inputDataLokasi as $item) + @foreach ($fields as $field)
- +
- @if ($item['type'] === 'text') - - @else - + + @foreach ($field['options'] as $option) + + @endforeach + @else + @endif
@endforeach
+
diff --git a/resources/views/surveyor/components/inspeksi.blade.php b/resources/views/surveyor/components/inspeksi.blade.php index 013c7f1..de979fe 100644 --- a/resources/views/surveyor/components/inspeksi.blade.php +++ b/resources/views/surveyor/components/inspeksi.blade.php @@ -44,8 +44,8 @@ - -