Merge branch 'staging' of https://git.putrakuningan.com/daengdeni/lpj into tender

This commit is contained in:
2025-04-08 09:48:41 +07:00
4 changed files with 275 additions and 210 deletions

View File

@@ -1,18 +1,19 @@
<?php <?php
namespace Modules\Lpj\Http\Controllers; namespace Modules\Lpj\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Routing\Controller; use Illuminate\Routing\Controller;
use Modules\Lpj\Http\Requests\BankDataRequest; use Log;
use Modules\Lpj\Models\BankData; use Modules\Location\Models\Province;
use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Http\Requests\BankDataRequest;
use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Models\BankData;
use Modules\Lpj\Services\BankDataService; use Modules\Lpj\Models\Inspeksi;
use Modules\Location\Models\Province; use Modules\Lpj\Models\JenisJaminan;
use Modules\Lpj\Services\BankDataService;
class BankDataController extends Controller class BankDataController extends Controller
{ {
protected $bankDataService; protected $bankDataService;
protected $user; protected $user;
@@ -31,7 +32,7 @@ class BankDataController extends Controller
$inspeksi = Inspeksi::all(); $inspeksi = Inspeksi::all();
foreach ($inspeksi as $item) { foreach ($inspeksi as $item) {
if(isset($item->data_pembanding)){ if (isset($item->data_pembanding)) {
$data_pembanding = json_decode($item->data_pembanding); $data_pembanding = json_decode($item->data_pembanding);
foreach ($data_pembanding->data_pembanding as $dataPembanding) { foreach ($data_pembanding->data_pembanding as $dataPembanding) {
$lat = $dataPembanding->kordinat_lat; $lat = $dataPembanding->kordinat_lat;
@@ -65,6 +66,7 @@ class BankDataController extends Controller
'jenis_aset' => $dataPembanding->jenis_aset, 'jenis_aset' => $dataPembanding->jenis_aset,
'foto_objek' => $dataPembanding->foto_objek, 'foto_objek' => $dataPembanding->foto_objek,
'tanggal' => $dataPembanding->tanggal, 'tanggal' => $dataPembanding->tanggal,
'kategori' => 'data_pembanding',
]; ];
BankData::updateOrCreate( BankData::updateOrCreate(
@@ -75,15 +77,15 @@ class BankDataController extends Controller
$data $data
); );
} }
}else{ } else {
// Invalid coordinates // 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 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' )); return view('lpj::bank-data.index', compact('provinces', 'jenisJaminan'));
} }
public function create() public function create()
@@ -95,7 +97,9 @@ class BankDataController extends Controller
{ {
$data = $request->validated(); $data = $request->validated();
$bankData = $this->bankDataService->createBankData($data); $bankData = $this->bankDataService->createBankData($data);
return redirect()->route('lpj.bank-data.show', $bankData->id)->with('success', 'Bank data created successfully.'); return redirect()
->route('lpj.bank-data.show', $bankData->id)
->with('success', 'Bank data created successfully.');
} }
public function show($id) public function show($id)
@@ -114,7 +118,9 @@ class BankDataController extends Controller
{ {
$data = $request->validated(); $data = $request->validated();
$bankData = $this->bankDataService->updateBankData($id, $data); $bankData = $this->bankDataService->updateBankData($id, $data);
return redirect()->route('lpj.bank-data.show', $bankData->id)->with('success', 'Bank data updated successfully.'); return redirect()
->route('lpj.bank-data.show', $bankData->id)
->with('success', 'Bank data updated successfully.');
} }
public function destroy($id) public function destroy($id)
@@ -142,6 +148,10 @@ class BankDataController extends Controller
$query->ofProvince($search['province_code']); $query->ofProvince($search['province_code']);
} }
if ($search['kategori']) {
$query->where('kategori',$search['kategori']);
}
if ($search['city_code']) { if ($search['city_code']) {
$query->ofCity($search['city_code']); $query->ofCity($search['city_code']);
} }
@@ -161,7 +171,7 @@ class BankDataController extends Controller
if ($search['start_date'] && $search['end_date']) { if ($search['start_date'] && $search['end_date']) {
$query->betweenDates($search['start_date'], $search['end_date']); $query->betweenDates($search['start_date'], $search['end_date']);
} }
} else{ } else {
$search = $request->get('search'); $search = $request->get('search');
$query->where(function ($q) use ($search) { $query->where(function ($q) use ($search) {
$q->where('jenis_aset', 'LIKE', '%' . $search . '%'); $q->where('jenis_aset', 'LIKE', '%' . $search . '%');
@@ -204,6 +214,7 @@ class BankDataController extends Controller
'luas_tanah' => $item->luas_tanah, 'luas_tanah' => $item->luas_tanah,
'luas_bangunan' => $item->luas_bangunan, 'luas_bangunan' => $item->luas_bangunan,
'harga' => $item->harga, 'harga' => $item->harga,
'sumber' => $item->kategori ? ucwords(str_replace('_',' ',$item->kategori)) : '-',
'nilai_pasar' => $item->nilai_pasar, 'nilai_pasar' => $item->nilai_pasar,
'location' => $item->kordinat_lat . ', ' . $item->kordinat_lng, 'location' => $item->kordinat_lat . ', ' . $item->kordinat_lng,
'address' => formatAlamat($item), 'address' => formatAlamat($item),
@@ -233,4 +244,4 @@ class BankDataController extends Controller
'data' => $formattedData, 'data' => $formattedData,
]); ]);
} }
} }

View File

@@ -21,6 +21,8 @@ return new class extends Migration
*/ */
public function down(): void public function down(): void
{ {
Schema::table('permohonan', function (Blueprint $table) {
$table->enum('status_bayar',['sudah_bayar','belum_bayar'])->default('sudah_bayar')->change(); $table->enum('status_bayar',['sudah_bayar','belum_bayar'])->default('sudah_bayar')->change();
});
} }
}; };

View File

@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('bank_data', function (Blueprint $table) {
$table->enum('kategori',['data_pembanding','penilaian','input'])->default('data_pembanding');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('bank_data', function (Blueprint $table) {
$table->dropColumn('kategori');
});
}
};

View File

@@ -16,6 +16,16 @@
<div class="card-body px-5"> <div class="card-body px-5">
<form id="filter-form"> <form id="filter-form">
<div class="grid gap-4 w-full p-5"> <div class="grid gap-4 w-full p-5">
<div>
<label for="kategori" class="block text-sm font-medium text-gray-700">Kategori</label>
<select id="kategori" name="kategori" class="select tomselect w-full @error('kategori') border-danger bg-danger-light @enderror">
<option value="">Semua Kategori</option>
<option value="data_pembanding">Data Pembanding</option>
<option value="penilaian">Penilaian</option>
<option value="input_manual">Input Manual</option>
</select>
</div>
<div> <div>
<label for="jenis_asset" class="block text-sm font-medium text-gray-700">Jenis Asset</label> <label for="jenis_asset" class="block text-sm font-medium text-gray-700">Jenis Asset</label>
<select id="jenis_asset" name="jenis_asset" class="select tomselect w-full @error('jenis_asset') border-danger bg-danger-light @enderror"> <select id="jenis_asset" name="jenis_asset" class="select tomselect w-full @error('jenis_asset') border-danger bg-danger-light @enderror">
@@ -115,6 +125,10 @@
<th class="w-14"> <th class="w-14">
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/> <input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox"/>
</th> </th>
<th class="min-w-[150px]" data-datatable-column="sumber">
<span class="sort"> <span class="sort-label"> Sumber </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[150px]" data-datatable-column="jenis_aset"> <th class="min-w-[150px]" data-datatable-column="jenis_aset">
<span class="sort"> <span class="sort-label"> Jenis Aset </span> <span class="sort"> <span class="sort-label"> Jenis Aset </span>
<span class="sort-icon"> </span> </span> <span class="sort-icon"> </span> </span>
@@ -236,11 +250,18 @@
[lat, lng] = item.location.map(coord => parseFloat(coord)); [lat, lng] = item.location.map(coord => parseFloat(coord));
} }
const markerColors = {
data_pembanding: 'http://maps.google.com/mapfiles/ms/icons/red-dot.png',
penilaian: 'http://maps.google.com/mapfiles/ms/icons/blue-dot.png',
input_manual: 'http://maps.google.com/mapfiles/ms/icons/yellow-dot.png'
};
if (lat && lng) { if (lat && lng) {
const marker = new google.maps.Marker({ const marker = new google.maps.Marker({
position: {lat: lat, lng: lng}, position: {lat: lat, lng: lng},
map: map, map: map,
title: item.jenis_aset title: item.jenis_aset,
icon: markerColors[item.kategori] || 'http://maps.google.com/mapfiles/ms/icons/red-dot.png' // Default to red if category is not recognized
}); });
// Create info window content // Create info window content
@@ -443,6 +464,9 @@
return checkbox.outerHTML.trim(); return checkbox.outerHTML.trim();
}, },
}, },
sumber: {
title: 'Sumber'
},
jenis_aset: { jenis_aset: {
title: 'Jenis Aset' title: 'Jenis Aset'
}, },