update menu penilai lpj dan perbaikan data pembanding
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||
use Modules\Lpj\Models\PenawaranTender;
|
||||
use Modules\Lpj\Models\Penilaian;
|
||||
use Modules\Lpj\Models\JenisDokumen;
|
||||
|
||||
function formatTanggalIndonesia($date, $time = false)
|
||||
{
|
||||
@@ -296,3 +297,17 @@
|
||||
->count();
|
||||
|
||||
}
|
||||
|
||||
|
||||
function getMaxFileSize($jenis)
|
||||
{
|
||||
$jenisDokumen = JenisDokumen::where('name', $jenis)->first();
|
||||
if (!$jenisDokumen) {
|
||||
return 2048;
|
||||
}
|
||||
//konversi ke KB (1 MB = 1024 KB)
|
||||
$maxSizeInKB = (int) $jenisDokumen->max_size * 1024;
|
||||
|
||||
return $maxSizeInKB;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Lpj\Exports\KertasKerjaExport;
|
||||
use App\Http\Controllers\SurveyorController;
|
||||
|
||||
class PenilaiController extends Controller
|
||||
{
|
||||
public $user;
|
||||
@@ -54,14 +56,19 @@ class PenilaiController extends Controller
|
||||
//
|
||||
}
|
||||
|
||||
public function sederhana()
|
||||
public function sederhana($id)
|
||||
{
|
||||
return view('lpj::laporan.sederhana_index');
|
||||
$data = new SurveyorController();
|
||||
$basicData = $data->getCommonData();
|
||||
|
||||
$permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id);
|
||||
return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'basicData'));
|
||||
}
|
||||
|
||||
public function standard()
|
||||
public function standard($id)
|
||||
{
|
||||
return view('lpj::laporan.standard_index');
|
||||
$permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id);
|
||||
return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan'));
|
||||
}
|
||||
|
||||
public function resume(){
|
||||
|
||||
@@ -62,7 +62,6 @@ use Modules\Lpj\Models\DetailDokumenJaminan;
|
||||
use Modules\Lpj\Models\JenisKapal;
|
||||
use Modules\Lpj\Models\JenisKendaraan;
|
||||
use Modules\Lpj\Models\RuteJaminan;
|
||||
|
||||
use Modules\Lpj\Models\HubunganPemilikJaminan;
|
||||
use Modules\Lpj\Models\HubunganPenghuniJaminan;
|
||||
use Modules\Lpj\Models\AnalisaUnit;
|
||||
@@ -216,8 +215,9 @@ class SurveyorController extends Controller
|
||||
public function storeDenah(Request $request)
|
||||
{
|
||||
try {
|
||||
$maxSize = getMaxFileSize('Foto');
|
||||
$validatedData = $request->validate([
|
||||
'foto_denah' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'foto_denah' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'luas' => 'required|numeric',
|
||||
'permohonan_id' => 'required',
|
||||
'jenis_jaminan_id' => 'required'
|
||||
@@ -381,26 +381,27 @@ class SurveyorController extends Controller
|
||||
*/
|
||||
public function validateFotoRequest(Request $request)
|
||||
{
|
||||
$maxSize = getMaxFileSize('Foto');
|
||||
return $request->validate([
|
||||
'permohonan_id' => 'required',
|
||||
'jenis_jaminan_id' => 'required',
|
||||
'pendamping' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'foto_objek.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'pendamping' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'foto_objek.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'name_objek.*' => 'required|string|max:255',
|
||||
'foto_lingkungan.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'foto_lingkungan.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'name_lingkungan.*' => 'required|string|max:255',
|
||||
'foto_rute.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'foto_rute.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'name_rute.*' => 'required|string|max:255',
|
||||
'lantai.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'lantai.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'name_lantai_unit.*' => 'nullable|string|max:255',
|
||||
'foto_lantai_unit.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'foto_lantai_unit.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'name_rute_lainnya.*' => 'nullable|string',
|
||||
'foto_rute_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'foto_lantai_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'foto_rute_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'foto_lantai_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'name_lantai_lainnya.*' => 'nullable|string|max:255',
|
||||
'foto_basement.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'foto_basement.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'name_basement.*' => 'nullable|string|max:255',
|
||||
'foto_gerbang' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
'foto_gerbang' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
|
||||
'name_gerbang' => 'nullable|string|max:255',
|
||||
]);
|
||||
}
|
||||
@@ -555,7 +556,8 @@ class SurveyorController extends Controller
|
||||
}
|
||||
|
||||
|
||||
public function storeFreeze() {
|
||||
public function storeFreeze()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -563,16 +565,16 @@ class SurveyorController extends Controller
|
||||
private function formatDataPembanding($request)
|
||||
{
|
||||
$dataPembanding = [];
|
||||
$pembandingCount = count($request->input('alamat_pembanding', []));
|
||||
$pembandingCount = count($request->input('address_pembanding', []));
|
||||
$fotoPembanding = $request->file('foto_objek_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),
|
||||
// Penanganan foto pembanding
|
||||
if (isset($fotoPembanding[$i]) && $fotoPembanding[$i]->isValid()) {
|
||||
$pembanding['foto_objek'] = $this->handleupdateOrDeleteFile(
|
||||
$fotoPembanding[$i],
|
||||
'pembanding',
|
||||
"pembanding_{$i}"
|
||||
);
|
||||
@@ -584,42 +586,35 @@ class SurveyorController extends Controller
|
||||
return $dataPembanding;
|
||||
}
|
||||
|
||||
private function handleFileUpload($file, $folder, $prefix)
|
||||
{
|
||||
if (!$file) {
|
||||
return null;
|
||||
}
|
||||
|
||||
private function handleupdateOrDeleteFile($file, $type, $prefix)
|
||||
{
|
||||
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);
|
||||
if ($file) {
|
||||
// Generate nama file unik
|
||||
$fileName = $prefix . '_' . uniqid() . '_' . time() . '.' . $file->getClientOriginalExtension();
|
||||
$path = "{$type}/" . date('Y/m');
|
||||
Storage::makeDirectory("public/{$path}");
|
||||
$filePath = $file->storeAs("public/{$path}", $fileName);
|
||||
return str_replace('public/', '', $filePath);
|
||||
}
|
||||
|
||||
// Simpan file
|
||||
$file->storeAs("public/{$folder}", $fileName);
|
||||
return null;
|
||||
|
||||
// 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;
|
||||
}
|
||||
\Log::error('File upload error: ' . $e->getMessage());
|
||||
throw new \Exception("Gagal mengupload file: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private function formatSinglePembanding($request, $index)
|
||||
{
|
||||
$fields = [
|
||||
'alamat', 'desa', 'kecamatan', 'kabupaten', 'provinsi',
|
||||
'address', 'village_code', 'district_code', 'city_code', 'province_code',
|
||||
'tahun', 'luas_tanah', 'luas_bangunan', 'tahun_bangunan',
|
||||
'status_nara_sumber', 'harga', 'nama_nara_sumber',
|
||||
'status_nara_sumber', 'harga', 'harga_diskon', 'diskon','total','nama_nara_sumber',
|
||||
'peruntukan', 'penawaran_transaksi', 'nomor_tlp',
|
||||
'kordinat_lat', 'kordinat_lng', 'jenis_aset',
|
||||
];
|
||||
@@ -636,32 +631,58 @@ class SurveyorController extends Controller
|
||||
return $pembanding;
|
||||
}
|
||||
|
||||
private function formatObjekPenilaian($request)
|
||||
{
|
||||
$fields = [
|
||||
'address', 'village_code', 'district_code', 'city_code', 'province_code',
|
||||
'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',
|
||||
];
|
||||
|
||||
$objekPenilaian = array_reduce($fields, function ($carry, $field) use ($request) {
|
||||
$carry[$field] = $request->input($field);
|
||||
return $carry;
|
||||
}, ['foto_objek' => null]);
|
||||
|
||||
return $objekPenilaian;
|
||||
}
|
||||
|
||||
private function saveInspeksi($formattedData)
|
||||
{
|
||||
$inspeksi = Inspeksi::updateOrCreate(
|
||||
[
|
||||
'permohonan_id' => $formattedData['permohonan_id'],
|
||||
'jenis_jaminan_id' => $formattedData['jenis_jaminan_id']
|
||||
],
|
||||
[
|
||||
'data_pembanding' => json_encode($formattedData),
|
||||
'name' => $formattedData['type']
|
||||
]
|
||||
);
|
||||
|
||||
return $inspeksi;
|
||||
}
|
||||
public function storeDataPembanding(Request $request)
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
$maxSize = getMaxFileSize('Foto');
|
||||
$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',
|
||||
'foto_objek' => 'nullable|image|max:'.$maxSize,
|
||||
'foto_objek_pembanding.*' => 'nullable|image|max:'.$maxSize,
|
||||
]);
|
||||
|
||||
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(
|
||||
$objekPenilaian['foto_objek'] = $this->handleupdateOrDeleteFile(
|
||||
$request->file('foto_objek'),
|
||||
'pembanding',
|
||||
$request['type'] = 'pembanding',
|
||||
'objek_penilaian'
|
||||
);
|
||||
}
|
||||
@@ -681,7 +702,7 @@ class SurveyorController extends Controller
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Data berhasil disimpan',
|
||||
'data' => $formattedData
|
||||
'data' => $objekPenilaian
|
||||
], 200);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
@@ -702,10 +723,6 @@ class SurveyorController extends Controller
|
||||
public function formInspeksi($id, $jaminanId)
|
||||
{
|
||||
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId);
|
||||
|
||||
// Auth::user()->id
|
||||
|
||||
|
||||
$link_url_region = Teams::with('regions', 'teamsUsers')
|
||||
->whereHas('teamsUsers', function ($query) {
|
||||
$query->where('user_id', Auth::user()->id);
|
||||
@@ -719,39 +736,7 @@ class SurveyorController extends Controller
|
||||
$villages = Village::where('district_code', $debitur->district_code)->get();
|
||||
|
||||
$surveyor = $id;
|
||||
$branches = Branch::all();
|
||||
|
||||
$bentukTanah = BentukTanah::all();
|
||||
$konturTanah = KonturTanah::all();
|
||||
$posisiKavling = PosisiKavling::all();
|
||||
$ketinggianTanah = KetinggianTanah::all();
|
||||
$kondisiFisikTanah = KondisiFisikTanah::all();
|
||||
$jenisBangunan = JenisBangunan::all();
|
||||
$kondisiBangunan = KondisiBangunan::all();
|
||||
$sifatBangunan = SifatBangunan::all();
|
||||
$spekKategoriBagunan = SpekKategoritBangunan::all();
|
||||
$spekBangunan = SpekBangunan::all();
|
||||
$saranaPelengkap = SaranaPelengkap::all();
|
||||
$arahMataAngin = ArahMataAngin::all();
|
||||
$lantai = Lantai::all();
|
||||
$viewUnit = ViewUnit::all();
|
||||
$golMasySekitar = GolonganMasySekitar::all();
|
||||
$tingkatKeramaian = TingkatKeramaian::all();
|
||||
$laluLintasLokasi = LaluLintasLokasi::all();
|
||||
$perkerasanJalan = PerkerasanJalan::all();
|
||||
$jenisKendaraan = JenisKendaraan::all();
|
||||
$jenisKapal = JenisKapal::all();
|
||||
$jenisPesawat = JenisPesawat::all();
|
||||
$modelAlatBerat = ModelAlatBerat::all();
|
||||
$hubCadeb = HubunganPemilikJaminan::all();
|
||||
$hubPenghuni = HubunganPenghuniJaminan::all();
|
||||
$jenisJaminan = JenisJaminan::all();
|
||||
$fasilitasObjek = FasilitasObjek::all();
|
||||
$merupakanDaerah = MerupakanDaerah::all();
|
||||
$terletakDiArea = TerletakArea::all();
|
||||
$posisiUnit = PosisiUnit::all();
|
||||
$bentukUnit = BentukUnit::all();
|
||||
|
||||
$basicData = $this->getCommonData();
|
||||
|
||||
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
||||
$forminspeksi = null;
|
||||
@@ -767,38 +752,9 @@ class SurveyorController extends Controller
|
||||
'cities',
|
||||
'districts',
|
||||
'villages',
|
||||
'bentukTanah',
|
||||
'konturTanah',
|
||||
'posisiKavling',
|
||||
'kondisiFisikTanah',
|
||||
'ketinggianTanah',
|
||||
'kondisiBangunan',
|
||||
'jenisBangunan',
|
||||
'sifatBangunan',
|
||||
'spekKategoriBagunan',
|
||||
'spekBangunan',
|
||||
'saranaPelengkap',
|
||||
'arahMataAngin',
|
||||
'lantai',
|
||||
'viewUnit',
|
||||
'golMasySekitar',
|
||||
'tingkatKeramaian',
|
||||
'laluLintasLokasi',
|
||||
'perkerasanJalan',
|
||||
'link_url_region',
|
||||
'forminspeksi',
|
||||
'jenisKendaraan',
|
||||
'jenisKapal',
|
||||
'jenisPesawat',
|
||||
'modelAlatBerat',
|
||||
'hubCadeb',
|
||||
'jenisJaminan',
|
||||
'fasilitasObjek',
|
||||
'merupakanDaerah',
|
||||
'terletakDiArea',
|
||||
'posisiUnit',
|
||||
'bentukUnit',
|
||||
'hubPenghuni'
|
||||
'basicData'
|
||||
));
|
||||
}
|
||||
|
||||
@@ -903,19 +859,26 @@ class SurveyorController extends Controller
|
||||
|
||||
// Ambil data pendukung
|
||||
$data = $this->getCommonData();
|
||||
$branches = Branch::all();
|
||||
$provinces = Province::all();
|
||||
|
||||
$cities = City::where('province_code', $this->getCodeAlamat('province_code', $inspectionData))->get();
|
||||
$districts = District::where('city_code', $this->getCodeAlamat('city_code', $inspectionData))->get();
|
||||
$villages = Village::where('district_code',$this->getCodeAlamat('district_code', $inspectionData))->get();
|
||||
|
||||
|
||||
|
||||
return view('lpj::surveyor.components.data-pembanding', compact(
|
||||
'permohonan',
|
||||
'id',
|
||||
'branches',
|
||||
'provinces',
|
||||
'inspectionData',
|
||||
'comparisons',
|
||||
'data',
|
||||
'jaminanId',
|
||||
'fotoForm'
|
||||
'fotoForm',
|
||||
'cities',
|
||||
'districts',
|
||||
'villages',
|
||||
'provinces'
|
||||
));
|
||||
|
||||
} catch (\Exception $e) {
|
||||
@@ -926,6 +889,19 @@ class SurveyorController extends Controller
|
||||
}
|
||||
|
||||
|
||||
public function getCodeAlamat($code, $inspectionData){
|
||||
$cekAlamat = isset(
|
||||
$inspectionData['asset']['alamat']['sesuai'],
|
||||
)
|
||||
? 'sesuai'
|
||||
: 'tidak sesuai';
|
||||
$selectedProvince =
|
||||
$inspectionData['asset']['alamat'][$cekAlamat][
|
||||
$code
|
||||
] ?? null;
|
||||
return $selectedProvince;
|
||||
}
|
||||
|
||||
|
||||
private function getHeader(string $type): array
|
||||
{
|
||||
@@ -1406,7 +1382,7 @@ class SurveyorController extends Controller
|
||||
{
|
||||
return [
|
||||
'branches' => Branch::all(),
|
||||
'provinces' => Province::all(),
|
||||
|
||||
'bentukTanah' => BentukTanah::all(),
|
||||
'konturTanah' => KonturTanah::all(),
|
||||
'posisiKavling' => PosisiKavling::all(),
|
||||
@@ -1435,10 +1411,13 @@ class SurveyorController extends Controller
|
||||
'merupakanDaerah' => MerupakanDaerah::all(),
|
||||
'jenisUnit' => JenisUnit::all(),
|
||||
'jenisJaminan' => JenisJaminan::all(),
|
||||
'hubCadeb' => HubunganPemilikJaminan::all(),
|
||||
'hubPenghuni' => HubunganPenghuniJaminan::all(),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
|
||||
private const HEADERS = [
|
||||
'bentuk-tanah' => ['Bentuk Tanah', 'bentuk-tanah'],
|
||||
'kontur-tanah' => ['Kontur Tanah', 'kontur-tanah'],
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@section('breadcrumbs')
|
||||
{{-- {{ Breadcrumbs::render(request()->route()->getName()) }}
|
||||
--}}
|
||||
Standard
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
@include('lpj::assetsku.includenya')
|
||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||
<div class="card min-w-full">
|
||||
<div class="card min-w-full">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">
|
||||
Data Jaminan
|
||||
</h3>
|
||||
<div class="flex items-center gap-2">
|
||||
<a href="{{ route('penilai.show', $permohonan->id) }}" class="btn btn-xs btn-info">
|
||||
<i class="ki-filled ki-exit-left"></i> Back
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body grid gap-5 grid-cols-2">
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Nama Debitur</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@if (isset($permohonan->debiture))
|
||||
<p class="text-2sm text-gray-700">{{ $permohonan->debiture->name }}</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Alamat Object</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
<span class="text-2sm text-gray-700">
|
||||
{{formatAlamat($dokumen->pemilik)}}
|
||||
</span>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Nomor Registrasi</label>
|
||||
<div class="flex flex-wrap items-base line w-full">
|
||||
<p class="text-2sm text-gray-700">{{ $permohonan->nomor_registrasi }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Cab/Direktorat</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@if (isset($permohonan->branch))
|
||||
<p class="text-2sm text-gray-700">{{ $permohonan->branch->name }}</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Nomor Laporan</label>
|
||||
<div class="flex flex-wrap items-base line w-full">
|
||||
<p class="text-2sm text-gray-700">{{ $permohonan->nomor_registrasi }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">AO</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@if (isset($permohonan->user))
|
||||
<p class="text-2sm text-gray-700">{{ $permohonan->user->name }}</p>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
Identitas Cadeb/Debitur
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
Deskripsi dan Alamat Aset
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
dokumen
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
Hubungan Cadeb/Debitur dengan pemilik dan penghuni
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('lpj::surveyor.components.tanah')
|
||||
@include('lpj::surveyor.components.bangunan')
|
||||
@include('lpj::surveyor.components.lingkungan')
|
||||
@include('lpj::surveyor.components.fakta')
|
||||
@include('lpj::surveyor.components.informasi')
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
Informasi dan pembanding
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
total nilai pasar wajar
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
nilai asuransi
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-end gap-2" style="margin-right: 20px; margin-top: 20px">
|
||||
<button type="button" class="btn btn-success" id="saveButton" onclick="submitData()">
|
||||
<span id="saveButtonText">Save</span>
|
||||
<div class="spinner-border spinner-border-sm text-light" role="status" style="display: none;"
|
||||
id="saveButtonSpinner">
|
||||
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="loadingOverlay" class="fixed inset-0 bg-black bg-opacity-50 hidden items-center justify-center z-50">
|
||||
<div class="bg-white p-4 rounded-lg">
|
||||
<div class="loader"></div>
|
||||
<p class="mt-2 text-center">Sedang memproses...</p>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
0
resources/views/penilai/components/memo.blade.php
Normal file
0
resources/views/penilai/components/memo.blade.php
Normal file
@@ -1,12 +1,12 @@
|
||||
@include('lpj::surveyor.components.header')
|
||||
|
||||
<div class="card w-full bg-white rounded-lg shadow-md overflow-hidden">
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<div class=" py-4 ">
|
||||
<h1 class="text-md font-medium text-gray-900">Analisa Unit</h1>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
Analisa Unit
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="grid gap-5">
|
||||
|
||||
<!-- Luas tanah -->
|
||||
@@ -60,8 +60,8 @@
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($kondisiBangunan))
|
||||
@foreach ($kondisiBangunan as $item)
|
||||
@if (isset($basicData['kondisiBangunan']))
|
||||
@foreach ($basicData['kondisiBangunan'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="kondisi_unit[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -82,8 +82,8 @@
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($posisiUnit))
|
||||
@foreach ($posisiUnit as $item)
|
||||
@if (isset($basicData['posisiUnit']))
|
||||
@foreach ($basicData['posisiUnit'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="posisi_unit[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -103,8 +103,8 @@
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($lantai))
|
||||
@foreach ($lantai as $item)
|
||||
@if (isset($basicData['lantai']))
|
||||
@foreach ($basicData['lantai'] as $item)
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
|
||||
<input class="checkbox" name="lantai[]" type="checkbox"
|
||||
@@ -130,8 +130,8 @@
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($viewUnit))
|
||||
@foreach ($viewUnit as $item)
|
||||
@if (isset($basicDdata['viewUnit']))
|
||||
@foreach ($basicDdata['viewUnit'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="view[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -151,8 +151,8 @@
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-2">
|
||||
@if (isset($bentukUnit))
|
||||
@foreach ($bentukUnit as $item)
|
||||
@if (isset($basicData['bentukUnit']))
|
||||
@foreach ($basicData['bentukUnit'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="bentuk_unit[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
<div class="card w-full bg-white rounded-lg shadow-md overflow-hidden">
|
||||
<div class="card-body">
|
||||
<div class="">
|
||||
<h1 class="text-md font-medium text-gray-900">Analisa Bangunan</h1>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
Analisa Bangunan
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="grid gap-5">
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Luas Bagunan</label>
|
||||
@@ -61,8 +63,8 @@
|
||||
<label class="form-label max-w-56">Jenis Bangunan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($jenisBangunan))
|
||||
@foreach ($jenisBangunan as $item)
|
||||
@if (isset($basicData['jenisBangunan']))
|
||||
@foreach ($basicData['jenisBangunan'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="jenis_bangunan[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -89,8 +91,8 @@
|
||||
<label class="form-label max-w-56">Kondisi Bangunan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($kondisiBangunan))
|
||||
@foreach ($kondisiBangunan as $item)
|
||||
@if (isset($basicData['kondisiBangunan']))
|
||||
@foreach ($basicData['kondisiBangunan'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="kondisi_bangunan[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -122,8 +124,8 @@
|
||||
<label class="form-label max-w-56">Sifat Bangunan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($sifatBangunan))
|
||||
@foreach ($sifatBangunan as $item)
|
||||
@if (isset($basicData['sifatBangunan']))
|
||||
@foreach ($basicData['sifatBangunan'] as $item)
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56 gap-2.5" style="width: 500px">
|
||||
<input class="checkbox" name="sifat_bangunan[]" type="checkbox"
|
||||
@@ -151,8 +153,8 @@
|
||||
<input type="hidden" name="nama_bagunan[]" value="Bangunan">
|
||||
<label class="building-label form-label">Bangunan 1</label>
|
||||
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2 w-full">
|
||||
@if (@isset($spekKategoriBagunan))
|
||||
@foreach ($spekKategoriBagunan as $item)
|
||||
@if (@isset($basicData['spekKategoriBangunan']))
|
||||
@foreach ($basicData['spekKategoriBangunan'] as $item)
|
||||
<div>
|
||||
<input type="hidden" name="spek_kategori_bangunan[]"
|
||||
value="{{ $item->name }}">
|
||||
@@ -160,7 +162,7 @@
|
||||
class="form-label flex items-center gap-3 text-nowrap">{{ $item->name }}</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4" style="margin-top: 10px">
|
||||
@foreach ($spekBangunan as $spek)
|
||||
@foreach ($basicData['spekBangunan'] as $spek)
|
||||
@if ($spek->spek_kategori_bangunan_id == $item->id)
|
||||
<label class="form-label flex items-center gap-2.5">
|
||||
<input class="checkbox"
|
||||
@@ -198,8 +200,8 @@
|
||||
<label class="form-label max-w-56">Sarana pelengkap</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($saranaPelengkap))
|
||||
@foreach ($saranaPelengkap as $item)
|
||||
@if (isset($basicData['saranaPelengkap']))
|
||||
@foreach ($basicData['saranaPelengkap'] as $item)
|
||||
@php
|
||||
$isChecked = false;
|
||||
$inputValue = '';
|
||||
|
||||
@@ -74,8 +74,11 @@
|
||||
<div class="flex flex-col gap-2">
|
||||
<img id="uploadedImage2" class="max-w-[200px] hidden"
|
||||
alt="Pembanding Image">
|
||||
<input type="file" name="foto_objek_pembanding[]" class="file-input"
|
||||
accept="image/*" onchange="previewImage(this, 'uploadedImage2')">
|
||||
<input type="file"
|
||||
name="foto_objek_pembanding[]"
|
||||
class="file-input"
|
||||
accept="image/*"
|
||||
onchange="previewImage(this, 'uploadedImage2')">
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -190,54 +193,199 @@
|
||||
<tr>
|
||||
<td class="px-4 py-2">Alamat</td>
|
||||
<td class="px-4 py-2">
|
||||
<textarea name="alamat" class="input" rows="2">{{ $inspectionData['alamat'] ?? '' }}</textarea>
|
||||
@php
|
||||
$statusAlamat = isset($inspectionData['asset']['alamat']['sesuai'])
|
||||
? 'sesuai'
|
||||
: 'tidak sesuai';
|
||||
$address =
|
||||
$inspectionData['asset']['alamat'][$statusAlamat]['address'] ??
|
||||
null;
|
||||
@endphp
|
||||
<textarea name="address" class="input py-2" rows="2">{{ $address }}</textarea>
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<textarea name="alamat_pembanding[]" class="input" rows="2"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2">Desa/Kelurahan</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="desa" class="input"
|
||||
value="{{ $inspectionData['desa'] ?? '' }}">
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="desa_pembanding[]" class="input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2">Kecamatan</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="kecamatan" class="input"
|
||||
value="{{ $inspectionData['kecamatan'] ?? '' }}">
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="kecamatan_pembanding[]" class="input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2">Kabupaten/Kota</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="kabupaten" class="input"
|
||||
value="{{ $inspectionData['kabupaten'] ?? '' }}">
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="kabupaten_pembanding[]" class="input">
|
||||
<textarea name="address_pembanding[]" class="input py-2" rows="2"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="px-4 py-2">Provinsi</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="provinsi" class="input"
|
||||
value="{{ $inspectionData['provinsi'] ?? '' }}">
|
||||
<select id="province_code" name="province_code" class="input w-full">
|
||||
@php
|
||||
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
|
||||
? 'sesuai'
|
||||
: 'tidak sesuai';
|
||||
$address =
|
||||
$inspectionData['asset']['alamat'][$statusKey][
|
||||
'province_code'
|
||||
] ?? null;
|
||||
@endphp
|
||||
<option value="">Select Province</option>
|
||||
@foreach ($provinces as $province)
|
||||
@php
|
||||
$statusKey = isset(
|
||||
$inspectionData['asset']['alamat']['sesuai'],
|
||||
)
|
||||
? 'sesuai'
|
||||
: 'tidak sesuai';
|
||||
$selectedProvince =
|
||||
$inspectionData['asset']['alamat'][$statusKey][
|
||||
'province_code'
|
||||
] ?? null;
|
||||
@endphp
|
||||
|
||||
<option value="{{ $province->code }}"
|
||||
{{ $selectedProvince == $province->code ? 'selected' : '' }}>
|
||||
{{ $province->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="provinsi_pembanding[]" class="input">
|
||||
<select id="province_code" name="province_code_pembanding[]"
|
||||
class="input w-full">
|
||||
<option value="">Select Province</option>
|
||||
@foreach ($provinces as $province)
|
||||
|
||||
<option value="{{ $province->code }}">
|
||||
{{ $province->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="px-4 py-2">Harga (Rp)</td>
|
||||
<td class="px-4 py-2">Kabupaten/Kota</td>
|
||||
<td class="px-4 py-2">
|
||||
<select id="city_code" name="city_code" class="select w-full">
|
||||
@php
|
||||
|
||||
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
|
||||
? 'sesuai'
|
||||
: 'tidak sesuai';
|
||||
$selectedCity =
|
||||
$inspectionData['asset']['alamat'][$statusKey][
|
||||
'city_code'
|
||||
] ?? null;
|
||||
@endphp
|
||||
<option value="">Pilih Kota/Kabupaten</option>
|
||||
@if (isset($selectedCity))
|
||||
@foreach ($cities as $city)
|
||||
<option value="{{ $city->code }}"
|
||||
{{ $selectedCity == $city->code ? 'selected' : '' }}>
|
||||
{{ $city->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<select id="city_code" name="city_code_pembanding[]"
|
||||
class="input w-full">
|
||||
|
||||
<option value="">Pilih Kota/Kabupaten</option>
|
||||
@if (isset($cities))
|
||||
@foreach ($cities as $city)
|
||||
<option value="{{ $city->code }}">
|
||||
{{ $city->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="px-4 py-2">Kecamatan</td>
|
||||
<td class="px-4 py-2">
|
||||
<select id="district_code" name="district_code" class="select w-full">
|
||||
@php
|
||||
|
||||
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
|
||||
? 'sesuai'
|
||||
: 'tidak sesuai';
|
||||
$selectedDisrict =
|
||||
$inspectionData['asset']['alamat'][$statusKey][
|
||||
'district_code'
|
||||
] ?? null;
|
||||
@endphp
|
||||
<option value="">Pilih Kecamatan</option>
|
||||
@if (isset($selectedDisrict))
|
||||
@foreach ($districts as $district)
|
||||
<option value="{{ $district->code }}"
|
||||
{{ $selectedDisrict == $district->code ? 'selected' : '' }}>
|
||||
{{ $district->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
|
||||
<select id="district_code" name="district_code_pembanding[]"
|
||||
class="input w-full">
|
||||
|
||||
<option value="">Pilih Kecamatan</option>
|
||||
@if (isset($districts))
|
||||
@foreach ($districts as $district)
|
||||
<option value="{{ $district->code }}">
|
||||
{{ $district->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="px-4 py-2">Desa/Kelurahan</td>
|
||||
<td class="px-4 py-2">
|
||||
<select id="village_code" name="village_code" class="select w-full">
|
||||
@php
|
||||
$statusKey = isset($inspectionData['asset']['alamat']['sesuai'])
|
||||
? 'sesuai'
|
||||
: 'tidak sesuai';
|
||||
$selectedDesa =
|
||||
$inspectionData['asset']['alamat'][$statusKey][
|
||||
'village_code'
|
||||
] ?? null;
|
||||
@endphp
|
||||
<option value="">Pilih Kecamatan</option>
|
||||
@if (isset($selectedDesa))
|
||||
@foreach ($villages as $village)
|
||||
<option value="{{ $village->code }}"
|
||||
{{ $selectedDesa == $village->code ? 'selected' : '' }}>
|
||||
{{ $village->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<select id="village_code" name="village_code_pembanding[]"
|
||||
class="input w-full">
|
||||
|
||||
<option value="">Pilih Kecamatan</option>
|
||||
@if (isset($villages))
|
||||
@foreach ($villages as $village)
|
||||
<option value="{{ $village->code }}">
|
||||
{{ $village->name }}
|
||||
</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="bg-gray-100">
|
||||
<td colspan="3" class="px-4 py-2 font-semibold">Harga Per Meter</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="px-4 py-2">Harga</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="harga" class="input currency-format"
|
||||
value="{{ $inspectionData['harga'] ?? '' }}">
|
||||
@@ -247,6 +395,39 @@
|
||||
class="input currency-format">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2">Diskon</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="harga" class="input currency-format"
|
||||
value="{{ $inspectionData['diskon'] ?? '' }}">
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="diskon_pembanding[]"
|
||||
class="input currency-format">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2">Total</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="total" class="input currency-format"
|
||||
value="{{ $inspectionData['total'] ?? '' }}">
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="total_pembanding[]"
|
||||
class="input currency-format">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-4 py-2">Harga Setelah Diskon</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="harga_diskon" class="input currency-format"
|
||||
value="{{ $inspectionData['harga_diskon'] ?? '' }}">
|
||||
</td>
|
||||
<td class="px-4 py-2">
|
||||
<input type="text" name="harga_diskon_pembanding[]"
|
||||
class="input currency-format">
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -254,7 +435,7 @@
|
||||
|
||||
<div class="card-footer">
|
||||
<div class="flex justify-end gap-2">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<button type="button" onclick="submitData()" class="btn btn-primary">
|
||||
<i class="ki-duotone ki-save-2 fs-2"></i>
|
||||
Simpan
|
||||
</button>
|
||||
@@ -263,7 +444,7 @@
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div </div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Loading Overlay -->
|
||||
@@ -279,55 +460,6 @@
|
||||
<script>
|
||||
let columnCount = 1;
|
||||
|
||||
function fillObjekPenilaian(data) {
|
||||
if (!data) return;
|
||||
|
||||
// Helper function untuk mengisi nilai input dengan aman
|
||||
function setInputValue(selector, value) {
|
||||
const element = document.querySelector(selector);
|
||||
if (element) {
|
||||
element.value = value || '';
|
||||
}
|
||||
}
|
||||
|
||||
// Isi data koordinat
|
||||
if (data.asset) {
|
||||
setInputValue('input[name="kordinat_lat"]', data.asset.kordinat_lat);
|
||||
setInputValue('input[name="kordinat_lng"]', data.asset.kordinat_lng);
|
||||
}
|
||||
|
||||
// Isi data tanah
|
||||
if (data.tanah) {
|
||||
const luasTanah = data.tanah.luas_tanah?.sesuai ||
|
||||
data.tanah.luas_tanah?.['tidak sesuai'] || '';
|
||||
setInputValue('input[name="luas_tanah"]', luasTanah);
|
||||
}
|
||||
|
||||
// Isi data bangunan
|
||||
if (data.bangunan) {
|
||||
const luasBangunan = data.bangunan.luas_tanah_bagunan?.sesuai ||
|
||||
data.bangunan.luas_tanah_bagunan?.['tidak sesuai'] || '';
|
||||
setInputValue('input[name="luas_tanah_bagunan"]', luasBangunan);
|
||||
}
|
||||
|
||||
console.log("tee", data.asset.alamat.sesuai.nama_jalan);
|
||||
|
||||
// Isi data umum
|
||||
setInputValue('input[name="alamat"]', data.asset.alamat.sesuai.nama_jalan);
|
||||
setInputValue('input[name="desa"]', data.desa);
|
||||
setInputValue('input[name="kecamatan"]', data.kecamatan);
|
||||
setInputValue('input[name="kabupaten"]', data.kabupaten);
|
||||
setInputValue('input[name="provinsi"]', data.provinsi);
|
||||
setInputValue('input[name="nama_nara_sumber"]', data.nama_nara_sumber);
|
||||
setInputValue('input[name="harga"]', data.harga);
|
||||
|
||||
// Set jenis aset dengan pengecekan
|
||||
const jenisAsetSelect = document.querySelector('select[name="jenis_aset"]');
|
||||
if (jenisAsetSelect && data.jenis_aset) {
|
||||
jenisAsetSelect.value = data.jenis_aset;
|
||||
}
|
||||
}
|
||||
|
||||
function fillPembandingData(data, index) {
|
||||
if (!data) return;
|
||||
|
||||
@@ -335,9 +467,21 @@
|
||||
function setArrayInputValue(name, value, index) {
|
||||
const element = document.getElementsByName(name)[index];
|
||||
if (element) {
|
||||
if (element.tagName === "SELECT") {
|
||||
// Jika elemen adalah select, set selected value
|
||||
const options = Array.from(element.options);
|
||||
const optionToSelect = options.find(option => option.value === value);
|
||||
if (optionToSelect) {
|
||||
optionToSelect.selected = true;
|
||||
} else {
|
||||
element.selectedIndex = 0; // Pilih default jika tidak ditemukan
|
||||
}
|
||||
} else {
|
||||
// Jika elemen bukan select, langsung set value
|
||||
element.value = value || '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Isi data pembanding
|
||||
const inputs = {
|
||||
@@ -348,12 +492,16 @@
|
||||
'nama_nara_sumber_pembanding[]': data.nama_nara_sumber,
|
||||
'kordinat_lat_pembanding[]': data.kordinat_lat,
|
||||
'kordinat_lng_pembanding[]': data.kordinat_lng,
|
||||
'alamat_pembanding[]': data.alamat,
|
||||
'desa_pembanding[]': data.desa,
|
||||
'kecamatan_pembanding[]': data.kecamatan,
|
||||
'kabupaten_pembanding[]': data.kabupaten,
|
||||
'provinsi_pembanding[]': data.provinsi,
|
||||
'harga_pembanding[]': data.harga
|
||||
'address_pembanding[]': data.address,
|
||||
'village_code_pembanding[]': data.village_code,
|
||||
'district_code_pembanding[]': data.district_code,
|
||||
'city_code_pembanding[]': data.city_code,
|
||||
'province_code_pembanding[]': data.province_code,
|
||||
'harga_pembanding[]': data.harga,
|
||||
'harga_diskon_pembanding[]': data.harga_diskon,
|
||||
'total_pembanding[]': data.total,
|
||||
'diskon_pembanding[]': data.diskon,
|
||||
|
||||
};
|
||||
|
||||
// Isi semua input fields
|
||||
@@ -366,31 +514,22 @@
|
||||
const imageId = `uploadedImage${index + 2}`;
|
||||
const preview = document.getElementById(imageId);
|
||||
if (preview) {
|
||||
preview.src = `/storage/pembanding/${data.foto_objek}`;
|
||||
preview.src = `/storage/${data.foto_objek}`;
|
||||
preview.classList.remove('hidden');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Event listener dengan pengecekan data
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
try {
|
||||
const inspectionData = {!! isset($inspectionData) ? json_encode($inspectionData) : 'null' !!};
|
||||
const comparisons = {!! isset($comparisons) ? json_encode($comparisons) : 'null' !!};
|
||||
|
||||
|
||||
console.log('Inspection Data:', inspectionData); // Debug
|
||||
console.log('Comparisons:', comparisons); // Debug
|
||||
|
||||
if (inspectionData) {
|
||||
fillObjekPenilaian(inspectionData);
|
||||
}
|
||||
|
||||
if (comparisons) {
|
||||
console.log("comparisons", comparisons);
|
||||
|
||||
comparisons.data_pembanding.forEach((comparison, index) => {
|
||||
if (index > 0) { // Skip kolom pertama karena sudah ada di template
|
||||
if (index > 0) {
|
||||
addColumn();
|
||||
}
|
||||
fillPembandingData(comparison, index);
|
||||
@@ -524,7 +663,6 @@
|
||||
document.getElementById('removeColumnBtn').addEventListener('click', removeColumn);
|
||||
|
||||
// Form submission
|
||||
document.getElementById('dataPembandingForm').addEventListener('submit', handleSubmit);
|
||||
|
||||
reinitializeEventListeners();
|
||||
}
|
||||
@@ -545,14 +683,14 @@
|
||||
});
|
||||
}
|
||||
|
||||
function handleSubmit(e) {
|
||||
e.preventDefault();
|
||||
|
||||
function submitData() {
|
||||
const loadingOverlay = document.getElementById('loadingOverlay');
|
||||
loadingOverlay.classList.remove('hidden');
|
||||
loadingOverlay.classList.add('flex');
|
||||
const form = document.querySelector('form');
|
||||
const formData = new FormData(form);
|
||||
|
||||
const formData = new FormData(e.target);
|
||||
console.log('Form data entries:', Array.from(formData.entries()));
|
||||
|
||||
$.ajax({
|
||||
url: '{{ route('surveyor.storeDataPembanding') }}',
|
||||
@@ -575,6 +713,8 @@
|
||||
window.location.href =
|
||||
'{{ route('surveyor.show', ['id' => $permohonan->id]) }}';
|
||||
}
|
||||
console.log(result);
|
||||
|
||||
});
|
||||
} else {
|
||||
Swal.fire({
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
{{-- analisa fakta --}}
|
||||
<div class="card bg-white rounded-lg overflow-hidden">
|
||||
<div class="card-body">
|
||||
<div class=" py-4 ">
|
||||
<h1 class="text-md font-medium text-gray-900">Analisis Fakta</h1>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
Analisis Fakta
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
<div class="grid gap-5">
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">Faktor Positif</label>
|
||||
|
||||
@@ -33,12 +33,7 @@
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||
<span class="text-2sm text-gray-700">
|
||||
{{ $dokumen->pemilik->address ?? '' }},
|
||||
{{ $dokumen->pemilik->village->name ?? '' }},
|
||||
{{ $dokumen->pemilik->district->name ?? '' }},
|
||||
{{ $dokumen->pemilik->city->name ?? '' }},
|
||||
{{ $dokumen->pemilik->province->name ?? '' }} -
|
||||
{{ $dokumen->pemilik->village->postal_code ?? '' }}
|
||||
{{formatAlamat($dokumen->pemilik)}}
|
||||
</span>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
@@ -250,7 +250,7 @@
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<select id="district_code" name="district_code" class="select w-full">
|
||||
<option value="">Pilih Kecamatan</option>
|
||||
@if (isset($districts))
|
||||
@if (isset($data['districts']))
|
||||
@foreach ($districts as $district)
|
||||
@if (isset($debitur))
|
||||
<option value="{{ $district->code }}"
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
<div class="card w-full bg-white rounded-lg shadow-md overflow-hidden">
|
||||
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<div class=" text-white py-4">
|
||||
<h1 class="text-md font-medium text-gray-900">Analisis Lingkungan</h1>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
Analisa Lingkungan
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="grid gap-5">
|
||||
<!-- Jarak dari Objek Utama -->
|
||||
<div class=" rounded-lg">
|
||||
@@ -45,8 +44,8 @@
|
||||
<label class="form-label max-w-56">Perkerasan Jalan</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($perkerasanJalan))
|
||||
@foreach ($perkerasanJalan as $item)
|
||||
@if (isset($basicData['perkerasanJalan']))
|
||||
@foreach ($basisData['perkerasanJalan'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="perkerasan_jalan[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -71,8 +70,8 @@
|
||||
<label class="form-label max-w-56">Lalu Lintas Depan Lokasi</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($laluLintasLokasi))
|
||||
@foreach ($laluLintasLokasi as $item)
|
||||
@if (isset($basicData['laluLintasLokasi']))
|
||||
@foreach ($basicData['laluLintasLokasi'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="lalu_lintas[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -92,8 +91,8 @@
|
||||
<label class="form-label max-w-56">Golongan Masy Sekitar</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($golMasySekitar))
|
||||
@foreach ($golMasySekitar as $item)
|
||||
@if (isset($basicData['golMasySekitar']))
|
||||
@foreach ($basicData['golMasySekitar'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="gol_mas_sekitar[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -113,8 +112,8 @@
|
||||
<label class="form-label max-w-56">Tingkat Keramaian</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($tingkatKeramaian))
|
||||
@foreach ($tingkatKeramaian as $item)
|
||||
@if (isset($basicData['tingkatKeramaian']))
|
||||
@foreach ($basicData['tingkatKeramaian'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="tingkat_keramaian[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -134,8 +133,8 @@
|
||||
<label class="form-label max-w-56">Terletak Di Area</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($terletakDiArea))
|
||||
@foreach ($terletakDiArea as $item)
|
||||
@if (isset($basicData['terletakDiArea']))
|
||||
@foreach ($basicData['terletakDiArea'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="terletak_diarea[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -312,8 +311,8 @@
|
||||
<label class="form-label max-w-56">Merupakan daerah</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($merupakanDaerah))
|
||||
@foreach ($merupakanDaerah as $item)
|
||||
@if (isset($basicData['merupakanDaerah']))
|
||||
@foreach ($basicData['merupakanDaerah'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="merupakan_daerah[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -333,8 +332,8 @@
|
||||
<label class="form-label max-w-56">Fasilitas Umum dekat Object</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($fasilitasObjek))
|
||||
@foreach ($fasilitasObjek as $item)
|
||||
@if (isset($basicData['fasilitasObjek']))
|
||||
@foreach ($basicData['fasilitasObjek'] as $item)
|
||||
@php
|
||||
|
||||
$selectedFasilitas = is_array(
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
@include('lpj::surveyor.components.header')
|
||||
|
||||
<div class="card w-full bg-white rounded-lg shadow-md overflow-hidden">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title uppercase">
|
||||
Analisa Tanah
|
||||
</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
|
||||
<div class="py-4 ">
|
||||
<h1 class="text-md font-medium text-gray-900">Analisa Tanah</h1>
|
||||
</div>
|
||||
<div class="grid gap-5">
|
||||
<!-- Luas tanah -->
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
@@ -92,8 +93,8 @@
|
||||
id="hadap_matangin_tidak_sesuai"
|
||||
name="analisa_tanah_hadap_mata_angin_tidak_sesuai">
|
||||
<option value="">Select Hadap Mata Angin</option>
|
||||
@if (isset($arahMataAngin))
|
||||
@foreach ($arahMataAngin as $item)
|
||||
@if (isset($basicData['arahMataAngin']))
|
||||
@foreach ($basicData['arahMataAngin'] as $item)
|
||||
<option value="{{ $item->name }}"
|
||||
{{ old('hadap_mata_angin_tidak_sesuai', $forminspeksi['tanah']['hadap_mata_angin']['tidak sesuai'] ?? '') == $item->name ? 'selected' : '' }}>
|
||||
{{ $item->name }}
|
||||
@@ -116,8 +117,8 @@
|
||||
<label class="form-label max-w-56">Bentuk Tanah</label>
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($bentukTanah))
|
||||
@foreach ($bentukTanah as $item)
|
||||
@if (isset($basicData['bentukTanah']))
|
||||
@foreach ($basicData['bentukTanah'] as $item)
|
||||
<div class="flex items-center">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="bentuk_tanah[]" type="checkbox"
|
||||
@@ -149,8 +150,8 @@
|
||||
<label class="form-label max-w-56">Kontur Tanah</label>
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($konturTanah))
|
||||
@foreach ($konturTanah as $item)
|
||||
@if (isset($basicData['konturTanah']))
|
||||
@foreach ($basicData['konturTanah'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="kontur_tanah[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
@@ -170,8 +171,8 @@
|
||||
<label class="form-label max-w-56">Beda Ketinggian Dengan Jalan</label>
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($ketinggianTanah))
|
||||
@foreach ($ketinggianTanah as $item)
|
||||
@if (isset($basicData['ketinggianTanah']))
|
||||
@foreach ($basicData['ketinggianTanah'] as $item)
|
||||
<div class="flex flex-col gap-2">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="ketinggian_jalan[]" type="checkbox"
|
||||
@@ -228,8 +229,8 @@
|
||||
<label class="form-label max-w-56">Posisi Kavling</label>
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($posisiKavling))
|
||||
@foreach ($posisiKavling as $item)
|
||||
@if (isset($basicData['posisiKavling']))
|
||||
@foreach ($basicData['posisiKavling'] as $item)
|
||||
<div class="flex items-center">
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="posisi_kavling[]" type="checkbox"
|
||||
@@ -297,8 +298,8 @@
|
||||
<label class="form-label max-w-56">Kondisi Fisik Tanah</label>
|
||||
<div class="flex-wrap items-stretch">
|
||||
<div class="flex flex-col items-start gap-4">
|
||||
@if (isset($kondisiFisikTanah))
|
||||
@foreach ($kondisiFisikTanah as $item)
|
||||
@if (isset($basicData['kondisiFisikTanah']))
|
||||
@foreach ($basicData['kondisiFisikTanah'] as $item)
|
||||
<label class="form-label flex items-center gap-2.5 text-nowrap">
|
||||
<input class="checkbox" name="kondisi_fisik_tanah[]" type="checkbox"
|
||||
value="{{ $item->name }}"
|
||||
|
||||
Reference in New Issue
Block a user