perbaikan tampilan basic data (batas batas, saran pelengkap, dan fasilitas dekat objek)

This commit is contained in:
majid
2024-12-18 11:05:25 +07:00
parent 562f1fb846
commit eaffe2805f
4 changed files with 141 additions and 133 deletions

View File

@@ -102,6 +102,7 @@ class SurveyorController extends Controller
'tujuanPenilaian',
'penilaian',
'documents.jenisJaminan',
'documents',
])->findOrFail($id);
$surveyor = $id;
@@ -112,7 +113,7 @@ class SurveyorController extends Controller
// Get all inspeksi data for this permohonan
$inspeksiData = Inspeksi::where('permohonan_id', $id)
->get()
->keyBy('jenis_jaminan_id')
->keyBy('dokument_id')
->map(function ($item) {
return [
'data_form' => json_decode($item->data_form, true),
@@ -153,7 +154,7 @@ class SurveyorController extends Controller
$inspeksi = Inspeksi::updateOrCreate(
[
'permohonan_id' => $request->input('permohonan_id'),
'jenis_jaminan_id' => $request->input('jenis_jaminan_id')
'dokument_id' => $request->input('dokument_id')
],
[
'data_form' => json_encode($processedData),
@@ -164,6 +165,7 @@ class SurveyorController extends Controller
return response()->json([
'success' => true,
'message' => 'Data berhasil disimpan',
'data' => $processedData
], 200);
} catch (\Exception $e) {
@@ -195,7 +197,7 @@ class SurveyorController extends Controller
$pisah = array_filter(
explode(',', $action),
function($act) use ($allowedActions) {
function ($act) use ($allowedActions) {
return isset($allowedActions[trim($act)]);
}
);
@@ -227,7 +229,7 @@ class SurveyorController extends Controller
$validationRules = [
'luas' => 'required|numeric',
'permohonan_id' => 'required',
'jenis_jaminan_id' => 'required'
'dokument_id' => 'required'
];
if ($request->hasFile('foto_denah')) {
@@ -247,7 +249,7 @@ class SurveyorController extends Controller
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))
->where('dokument_id', $request->input('dokument_id'))
->first();
if ($inspeksi) {
@@ -261,7 +263,7 @@ class SurveyorController extends Controller
} else {
Inspeksi::create([
'permohonan_id' => $request->input('permohonan_id'),
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'),
'dokument_id' => $request->input('dokument_id'),
'denah_form' => json_encode($formatJsonDenah)
]);
}
@@ -293,7 +295,7 @@ class SurveyorController extends Controller
$inspeksi = Inspeksi::firstOrNew([
'permohonan_id' => $request->input('permohonan_id'),
'jenis_jaminan_id' => $request->input('jenis_jaminan_id')
'dokument_id' => $request->input('dokument_id')
]);
// Get existing foto_form data if it exists
@@ -398,24 +400,24 @@ class SurveyorController extends Controller
$maxSize = getMaxFileSize('Foto');
return $request->validate([
'permohonan_id' => 'required',
'jenis_jaminan_id' => 'required',
'pendamping' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
'foto_objek.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
'dokument_id' => 'required',
'pendamping' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'foto_objek.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_objek.*' => 'required|string|max:255',
'foto_lingkungan.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
'foto_lingkungan.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_lingkungan.*' => 'required|string|max:255',
'foto_rute.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
'foto_rute.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_rute.*' => 'required|string|max:255',
'lantai.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
'lantai.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_lantai_unit.*' => 'nullable|string|max:255',
'foto_lantai_unit.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
'foto_lantai_unit.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_rute_lainnya.*' => 'nullable|string',
'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,
'foto_rute_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'foto_lantai_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_lantai_lainnya.*' => 'nullable|string|max:255',
'foto_basement.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
'foto_basement.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_basement.*' => 'nullable|string|max:255',
'foto_gerbang' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:'. $maxSize,
'foto_gerbang' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize,
'name_gerbang' => 'nullable|string|max:255',
]);
}
@@ -557,7 +559,7 @@ class SurveyorController extends Controller
]);
$data['status'] = 'success';
$data['message']= 'Jadwal '.$request->noReg.' berhasil di aprove';
$data['message'] = 'Jadwal '.$request->noReg.' berhasil di aprove';
} catch (\Exception $e) {
$data['status'] = 'error';
$data['message'] = 'Gagal membuat jadwal: ' . $e->getMessage();
@@ -585,9 +587,9 @@ class SurveyorController extends Controller
$fotoPembanding = $request->file('foto_objek_pembanding') ?? [];
$existingData = null;
if ($request->has('permohonan_id') && $request->has('jenis_jaminan_id')) {
if ($request->has('permohonan_id') && $request->has('dokument_id')) {
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))
->where('dokument_id', $request->input('dokument_id'))
->first();
if ($inspeksi) {
@@ -682,7 +684,7 @@ class SurveyorController extends Controller
];
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))
->where('dokument_id', $request->input('dokument_id'))
->first();
if ($inspeksi) {
@@ -699,12 +701,12 @@ class SurveyorController extends Controller
$dataForm = json_decode($inspeksi->data_form, true) ?: [];
// Inisialisasi struktur data jika belum ada
if(!isset($dataForm['bangunan'])) {
if (!isset($dataForm['bangunan'])) {
$dataForm['bangunan'] = [];
$needsSave = true;
}
if(!isset($dataForm['tanah'])) {
if (!isset($dataForm['tanah'])) {
$dataForm['tanah'] = [];
$needsSave = true;
}
@@ -725,13 +727,13 @@ class SurveyorController extends Controller
$dataForm['tanah'][$field][$cekLuas] = $newValue;
}
// Fields untuk bangunan
else if (in_array($field, ['luas_tanah_bagunan'])) {
elseif (in_array($field, ['luas_tanah_bagunan'])) {
$cekBanguan = $dataForm['bangunan']['luas_tanah_bagunan'] == 'sesuai' ? 'sesuai' : 'tidak sesuai';
$dataForm['bangunan'][$field][$cekBanguan] = $newValue;
}
// Fields untuk alamat dalam asset
else if (in_array($field, ['address', 'village_code', 'district_code', 'city_code', 'province_code'])) {
elseif (in_array($field, ['address', 'village_code', 'district_code', 'city_code', 'province_code'])) {
if (!isset($dataForm['asset']['alamat'])) {
$dataForm['asset']['alamat'] = [];
@@ -745,7 +747,7 @@ class SurveyorController extends Controller
$dataForm['asset']['alamat'][$alamatStatus][$field] = $newValue;
}
// Jenis asset dalam asset
else if ($field === 'jenis_asset') {
elseif ($field === 'jenis_asset') {
$assetStatus = $request->input('asset_status', 'sesuai');
$dataForm['asset']['jenis_asset'] = [
$assetStatus => $newValue
@@ -809,7 +811,7 @@ class SurveyorController extends Controller
$inspeksi = Inspeksi::updateOrCreate(
[
'permohonan_id' => $formattedData['permohonan_id'],
'jenis_jaminan_id' => $formattedData['jenis_jaminan_id']
'dokument_id' => $formattedData['dokument_id']
],
[
'data_pembanding' => json_encode($formattedData),
@@ -828,7 +830,7 @@ class SurveyorController extends Controller
$validator = $request->validate([
'permohonan_id' => 'required|exists:permohonan,id',
'type' => 'required|string',
'jenis_jaminan_id' => 'required',
'dokument_id' => 'required',
'foto_objek' => 'nullable|image|max:'.$maxSize,
'foto_objek_pembanding.*' => 'nullable|image|max:'.$maxSize,
]);
@@ -843,7 +845,7 @@ class SurveyorController extends Controller
// Update foto_form
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))
->where('dokument_id', $request->input('dokument_id'))
->first();
if ($inspeksi) {
@@ -868,7 +870,7 @@ class SurveyorController extends Controller
$formattedData = [
'permohonan_id' => $request->input('permohonan_id'),
'type' => $request->input('type'),
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'),
'dokument_id' => $request->input('dokument_id'),
'objek_penilaian' => $objekPenilaian,
'data_pembanding' => $this->formatDataPembanding($request)
];
@@ -899,9 +901,21 @@ class SurveyorController extends Controller
* Form inspeksi.
*/
public function formInspeksi($id, $jaminanId)
public function formInspeksi(Request $request, $id)
{
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId);
$validated = $request->validate([
'form' => 'required|in:create-inspeksi',
'inspeksi' => 'required|exists:permohonan,id',
'dokument' => 'required',
'jenisjaminan' => 'required'
]);
$dokumentId = $validated['dokument'];
$jaminanId = $validated['jenisjaminan'];
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
$link_url_region = Teams::with('regions', 'teamsUsers')
->whereHas('teamsUsers', function ($query) {
$query->where('user_id', Auth::user()->id);
@@ -915,7 +929,7 @@ class SurveyorController extends Controller
$surveyor = $id;
$basicData = $this->getCommonData();
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $dokumentId)->first();
$forminspeksi = null;
if ($inpeksi) {
$forminspeksi = json_decode($inpeksi->data_form, true);
@@ -962,13 +976,23 @@ class SurveyorController extends Controller
* Denah.
*/
public function denah($id, $jaminanId)
public function denah(Request $request, $id)
{
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId);
$validated = $request->validate([
'form' => 'required|in:create-denah',
'denah' => 'required|exists:permohonan,id',
'dokument' => 'required',
'jenisjaminan' => 'required'
]);
$dokumentId = $validated['dokument'];
$jaminanId = $validated['jenisjaminan'];
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
$denah = null;
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $dokumentId)->first();
$formDenah = null;
if ($inpeksi) {
$formDenah = json_decode($inpeksi->denah_form, true);
@@ -982,14 +1006,25 @@ class SurveyorController extends Controller
* Foto.
*/
public function foto($id, $jaminanId)
public function foto(Request $request, $id)
{
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId);
$validated = $request->validate([
'form' => 'required|in:create-foto',
'foto' => 'required|exists:permohonan,id',
'dokument' => 'required',
'jenisjaminan' => 'required'
]);
$dokumentId = $validated['dokument'];
$jaminanId = $validated['jenisjaminan'];
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
$surveyor = $id;
$branches = Branch::all();
$provinces = Province::all();
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $dokumentId)->first();
$formFoto = null;
if ($inpeksi) {
@@ -1003,25 +1038,28 @@ class SurveyorController extends Controller
* Data pembanding.
*/
public function dataPembanding($id, $jaminanId)
public function dataPembanding(Request $request, $id)
{
try {
// Ambil data permohonan dengan eager loading
$permohonan = Permohonan::with([
'user',
'debiture.province',
'debiture.city',
'debiture.district',
'debiture.village',
'branch',
'tujuanPenilaian',
'penilaian'
])->findOrFail($id);
$validated = $request->validate([
'form' => 'required|in:data-pembanding',
'pembanding' => 'required|exists:permohonan,id',
'dokument' => 'required',
'jenisjaminan' => 'required'
]);
$dokumentId = $validated['dokument'];
$jaminanId = $validated['jenisjaminan'];
$permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId);
// Ambil data inspeksi
$inspeksi = Inspeksi::where([
'permohonan_id' => $id,
'jenis_jaminan_id' => $jaminanId
'dokument_id' => $dokumentId
])->first();
// Inisialisasi variabel
@@ -1496,7 +1534,7 @@ class SurveyorController extends Controller
}
private function getPermohonanJaminanId($id, $jaminanId)
public function getPermohonanJaminanId($id, $dokumentId, $jaminanId)
{
return Permohonan::with([
'user',
@@ -1507,15 +1545,11 @@ class SurveyorController extends Controller
'branch',
'tujuanPenilaian',
'penilaian',
'debiture.documents.jenisJaminan',
'debiture.documents' => function ($query) use ($jaminanId) {
$query->where('jenis_jaminan_id', $jaminanId);
'debiture.documents' => function ($query) use ($dokumentId, $jaminanId) {
$query->where('id', $dokumentId)
->where('jenis_jaminan_id', $jaminanId);
}
])
->whereHas('debiture.documents', function ($query) use ($jaminanId) {
$query->where('jenis_jaminan_id', $jaminanId);
})
->findOrFail($id);
])->findOrFail($id);
}
@@ -1763,10 +1797,8 @@ class SurveyorController extends Controller
'sifat_bangunan' => $data['sifat_bangunan'] ?? null,
'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null,
'spesifikasi_bangunan' => $result ?? null,
'sarana_pelengkap' => $this->mapArrayWithInputs(
$data['sarana_pelengkap'] ?? [],
$data['sarana_pelengkap_input'] ?? []
),
'sarana_pelengkap' => $data['sarana_pelengkap'] ?? null,
'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null,
],
];
}
@@ -1808,10 +1840,8 @@ class SurveyorController extends Controller
'jarak_tps' => $data['jarak_tps'] ?? null,
'nama_tps' => $data['nama_tps'] ?? null,
'merupakan_daerah' => $data['merupakan_daerah'] ?? null,
'fasilitas_dekat_object' => $this->mapArrayWithInputs(
$data['fasilitas_dekat_object'] ?? [],
$data['fasilitas_dekat_object_input'] ?? []
),
'fasilitas_dekat_object' => $data['fasilitas_dekat_object'] ?? null,
'fasilitas_dekat_object_input' => $data['fasilitas_dekat_object_input'] ?? null,
]
];
}
@@ -1823,10 +1853,8 @@ class SurveyorController extends Controller
'fakta_positif' => $data['fakta_positif'] ?? null,
'fakta_negatif' => $data['fakta_negatif'] ?? null,
'rute_menuju' => $data['rute_menuju'] ?? null,
'batas_batas' => $this->mapArrayWithInputs(
$data['batas_batas'] ?? [],
$data['batas_batas_input'] ?? []
),
'batas_batas' => $data['batas_batas'] ?? null,
'batas_batas_input' => $data['batas_batas_input'] ?? null,
'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null,
'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null,
'informasi_dokument' => $data['informasi_dokument'] ?? null,
@@ -1844,7 +1872,7 @@ class SurveyorController extends Controller
];
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first();
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('dokument_id', $request->input('dokument_id'))->first();
$fotoTypes = [
@@ -2306,8 +2334,10 @@ class SurveyorController extends Controller
{
$result = [];
foreach ($keys as $index => $key) {
$result[$key] = $values[$index] ?? null;
foreach ($keys as $key) {
// Jika checkbox dicentang, ambil nilai input yang sesuai
// Gunakan nilai dari $values berdasarkan nama checkbox
$result[$key] = $values[$key] ?? null;
}
return $result;
@@ -2315,6 +2345,7 @@ class SurveyorController extends Controller
/**
* Helper method generic untuk mengambil data field
*