diff --git a/app/Http/Controllers/BankDataController.php b/app/Http/Controllers/BankDataController.php index ac94545..133f7a4 100644 --- a/app/Http/Controllers/BankDataController.php +++ b/app/Http/Controllers/BankDataController.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Modules\Lpj\Http\Requests\BankDataRequest; use Modules\Lpj\Models\BankData; +use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Services\BankDataService; use Modules\Location\Models\Province; @@ -25,6 +26,64 @@ class BankDataController extends Controller $provinces = Province::all(); $jenisJaminan = JenisJaminan::all(); + //insert data pembanding + + $inspeksi = Inspeksi::all(); + + foreach ($inspeksi as $item) { + if(isset($item->data_pembanding)){ + $data_pembanding = json_decode($item->data_pembanding); + foreach ($data_pembanding->data_pembanding as $dataPembanding) { + $lat = trim($dataPembanding->kordinat_lat); + $lng = trim($dataPembanding->kordinat_lng); + + if (!empty($lat) && !empty($lng)) { + $lat = floatval($lat); + $lng = floatval($lng); + + if ($lat >= -90 && $lat <= 90 && $lng >= -180 && $lng <= 180) { + $data = [ + 'address' => $dataPembanding->address, + 'village_code' => $dataPembanding->village_code, + 'district_code' => $dataPembanding->district_code, + 'city_code' => $dataPembanding->city_code, + 'province_code' => $dataPembanding->province_code, + 'tahun' => $dataPembanding->tahun, + 'luas_tanah' => $dataPembanding->luas_tanah, + 'luas_bangunan' => $dataPembanding->luas_bangunan, + 'tahun_bangunan' => $dataPembanding->tahun_bangunan, + 'status_nara_sumber' => $dataPembanding->status_nara_sumber, + 'harga' => $dataPembanding->harga, + 'harga_diskon' => $dataPembanding->harga_diskon, + 'diskon' => str_replace(',','.',$dataPembanding->diskon), + 'total' => $dataPembanding->total, + 'nama_nara_sumber' => $dataPembanding->nama_nara_sumber, + 'peruntukan' => $dataPembanding->peruntukan, + 'penawaran' => $dataPembanding->penawaran, + 'telepon' => $dataPembanding->telepon, + 'hak_properti' => $dataPembanding->hak_properti, + 'jenis_aset' => $dataPembanding->jenis_aset, + 'foto_objek' => $dataPembanding->foto_objek, + 'tanggal' => $dataPembanding->tanggal, + 'harga_penawaran' => $dataPembanding->harga_penawaran, + ]; + + BankData::updateOrCreate( + [ + 'kordinat_lat' => $lat, + 'kordinat_lng' => $lng + ], + $data + ); + } + }else{ + // Invalid coordinates + \Log::warning("Invalid coordinates: Lat: $lat, Lng: $lng");// Do something to handle this situation, such as logging an error or skipping the record + } + } + } + } + return view('lpj::bank-data.index', compact('provinces', 'jenisJaminan' )); } @@ -101,7 +160,7 @@ class BankDataController extends Controller } if ($search['start_date'] && $search['end_date']) { - $query->betweenDates($request->start_date, $search['end_date']); + $query->betweenDates($search['start_date'], $search['end_date']); } } else{ $search = $request->get('search'); @@ -141,14 +200,15 @@ class BankDataController extends Controller return [ 'id' => $item->id, 'jenis_aset' => $item->jenis_aset, - 'tanggal' => $item->tanggal->format('d-m-Y'), + 'tanggal' => $item->tanggal ? $item->tanggal->format('d-m-Y') : '-', 'tahun' => $item->tahun, 'luas_tanah' => $item->luas_tanah, 'luas_bangunan' => $item->luas_bangunan, 'harga' => $item->harga, 'nilai_pasar' => $item->nilai_pasar, 'location' => $item->kordinat_lat . ', ' . $item->kordinat_lng, - 'address' => formatAlamat($item) + 'address' => formatAlamat($item), + 'photos' => json_decode($item->foto_objek, true) ?: [$item->foto_objek], // Add more fields as needed ]; }); @@ -159,6 +219,10 @@ class BankDataController extends Controller // Calculate the current page number $currentPage = $request->get('page', 1); + // Ensure current page doesn't exceed page count + $currentPage = min($currentPage, $pageCount); + + // Return the response data as a JSON object return response()->json([ 'draw' => $request->get('draw'), diff --git a/resources/views/bank-data/index.blade.php b/resources/views/bank-data/index.blade.php index 00b184f..15d718b 100644 --- a/resources/views/bank-data/index.blade.php +++ b/resources/views/bank-data/index.blade.php @@ -166,6 +166,13 @@ + + @endsection @push('scripts') @@ -183,6 +190,26 @@ }); } + function openImageModal(src) { + const modal = document.getElementById('imageModal'); + const modalImage = document.getElementById('modalImage'); + modalImage.src = src; + modal.classList.remove('hidden'); + modal.classList.add('flex'); + } + + function closeImageModal() { + const modal = document.getElementById('imageModal'); + modal.classList.remove('flex'); + modal.classList.add('hidden'); + } + + function changeMainPhoto(thumbnail, index) { + const mainPhoto = thumbnail.closest('.photo-gallery').querySelector('.main-photo img'); + mainPhoto.src = thumbnail.src; + mainPhoto.alt = thumbnail.alt; + } + function updateMapMarkers(data) { // Clear existing markers markers.forEach(marker => marker.setMap(null)); @@ -218,7 +245,7 @@ // Create info window content const contentString = ` -
+

${item.jenis_aset} @@ -320,6 +347,29 @@

+ ${item.photos && item.photos.length > 0 ? ` + + ` : ''} +
+
+ +
`; @@ -354,6 +404,26 @@ } } + + function getDirections(lat, lng) { + console.log('Getting directions to:', lat, lng); + if (navigator.geolocation) { + navigator.geolocation.getCurrentPosition( + (position) => { + const origin = position.coords.latitude + ',' + position.coords.longitude; + const destination = lat + ',' + lng; + const url = `https://www.google.com/maps/dir/?api=1&origin=${origin}&destination=${destination}`; + window.open(url, '_blank'); + }, + () => { + alert('Unable to get your current location. Please enable location services.'); + } + ); + } else { + alert('Geolocation is not supported by your browser.'); + } + } + function initializeDataTable() { const element = document.querySelector('#bank-data-table'); const searchInput = document.getElementById('search'); @@ -422,6 +492,7 @@ dataTable.on('draw', () => { const data = dataTable._data; updateMapMarkers(data); + updatePagination(data); }) // Custom search functionality searchInput.addEventListener('input', function () { @@ -445,6 +516,20 @@ dataTable.reload(); }); + function updatePagination(response) { + const paginationInfo = document.querySelector('[data-datatable-info="true"]'); + + if (paginationInfo) { + if (response.recordsFiltered > 0) { + const start = (response.page - 1) * response.pageSize + 1; + const end = Math.min(start + response.pageSize - 1, response.recordsFiltered); + paginationInfo.textContent = `Showing ${start} to ${end} of ${response.recordsFiltered} entries`; + } else { + paginationInfo.textContent = 'No entries to show'; + } + } + } + function initializeEverything() { initMap(); initializeDataTable(); diff --git a/resources/views/penilaian/otorisator/show.blade.php b/resources/views/penilaian/otorisator/show.blade.php index da74054..45bfc0a 100644 --- a/resources/views/penilaian/otorisator/show.blade.php +++ b/resources/views/penilaian/otorisator/show.blade.php @@ -162,7 +162,7 @@ href="{{ route('otorisator.view-laporan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}"> Lihat Laporan - @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer']) && $permohonan->approval_so == null) + @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer']) && $permohonan->approval_so == 0)