update form inspeksi and basic data inspeksi

This commit is contained in:
majid
2024-11-20 17:04:15 +07:00
parent 7e70608ba4
commit deaf9e8e1b
32 changed files with 1341 additions and 666 deletions

View File

@@ -39,8 +39,9 @@ class PenilaiController extends Controller
*/ */
public function show($id) public function show($id)
{ {
$permohonan = Permohonan::with('debiture.documents.jenisjaminan')->find($id); $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id);
// return response()->json(['permohonan' => $permohonan]);
return view('lpj::penilai.show', compact('permohonan')); return view('lpj::penilai.show', compact('permohonan'));
} }

View File

@@ -98,7 +98,7 @@ class PenilaianController extends Controller
if (isset($validatedData['penilai_surveyor_id'])) { if (isset($validatedData['penilai_surveyor_id'])) {
$user_ids[] = $validatedData['penilai_surveyor_id']; $user_ids[] = $validatedData['penilai_surveyor_id'];
}else { } else {
$user_ids[] = $validatedData['penilai_id']; $user_ids[] = $validatedData['penilai_id'];
} }
@@ -126,13 +126,11 @@ class PenilaianController extends Controller
]); ]);
DB::commit(); DB::commit();
return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200);
return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan');
} catch (Exception $e) { } catch (Exception $e) {
DB::rollBack(); DB::rollBack();
return response()->json(['error'=> $e->getMessage()]); return response()->json(['error' => $e->getMessage()]);
// return redirect()->route('penilaian.index')->with('error', $e->getMessage());
} }
} }
} }
@@ -181,10 +179,10 @@ class PenilaianController extends Controller
'status' => 'assign', 'status' => 'assign',
]); ]);
DB::commit(); DB::commit();
return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200);
} catch (Exception $e) { } catch (Exception $e) {
DB::rollBack(); DB::rollBack();
return redirect()->route('penilaian.index')->with('error', $e->getMessage()); return response()->json([ 'success' => false, 'error' => $e->getMessage()]);
} }
} }

View File

@@ -40,6 +40,10 @@ use Modules\Lpj\Models\Lantai;
use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Models\Inspeksi;
use Modules\Lpj\Models\ViewUnit; use Modules\Lpj\Models\ViewUnit;
use Modules\Lpj\Models\ObjekJaminan; use Modules\Lpj\Models\ObjekJaminan;
use Modules\Lpj\Models\ModelAlatBerat;
use Modules\Lpj\Models\JenisPesawat;
use Modules\Lpj\Models\JenisKapal;
use Modules\Lpj\Models\JenisKendaraan;
use Modules\Lpj\Models\RuteJaminan; use Modules\Lpj\Models\RuteJaminan;
use Modules\Lpj\Models\AnalisaUnit; use Modules\Lpj\Models\AnalisaUnit;
use Modules\Lpj\Models\GolonganMasySekitar; use Modules\Lpj\Models\GolonganMasySekitar;
@@ -95,6 +99,10 @@ class SurveyorController extends Controller
$spekBangunan = SpekBangunan::all(); $spekBangunan = SpekBangunan::all();
$saranaPelengkap = SaranaPelengkap::all(); $saranaPelengkap = SaranaPelengkap::all();
$arahMataAngin = ArahMataAngin::all(); $arahMataAngin = ArahMataAngin::all();
$jenisKendaraan = JenisKendaraan::all();
$jenisKapal = JenisKapal::all();
$jenisPesawat = JenisPesawat::all();
$modelAlatBerat = ModelAlatBerat::all();
@@ -148,7 +156,11 @@ class SurveyorController extends Controller
'forminspeksi', 'forminspeksi',
'formDenah', 'formDenah',
'formFoto', 'formFoto',
'jaminanId' 'jaminanId',
'jenisKendaraan',
'jenisKapal',
'jenisPesawat',
'modelAlatBerat'
)); ));
} }
/** /**
@@ -212,7 +224,7 @@ class SurveyorController extends Controller
foreach ($pisah as $act) { foreach ($pisah as $act) {
if (isset($allRules[$act])) { if (isset($allRules[$act])) {
$rules = array_merge($rules, $allRules[$act]); $rules = array_merge($rules, $allRules[$act]);
if ($act == 'tanah' || $act == 'bangunan') { if ($act == 'tanah' || $act == 'bangunan' || $act == 'apartemen-kantor') {
$hasAssetDescriptionRules = true; $hasAssetDescriptionRules = true;
} }
} }
@@ -371,7 +383,7 @@ class SurveyorController extends Controller
,'foto_lantai_unit' => $foto_lantai_unit, ,'foto_lantai_unit' => $foto_lantai_unit,
'foto_lantai_lainnya' => $foto_lantai_lainnya, 'foto_lantai_lainnya' => $foto_lantai_lainnya,
'foto_rute_lainnya' => $foto_rute_lainnya, 'foto_rute_lainnya' => $foto_rute_lainnya,
'basement' => $basement, 'foto_basement' => $basement,
'foto_gerbang' => $gerbang, 'foto_gerbang' => $gerbang,
'pendamping' => $pendamping 'pendamping' => $pendamping
]; ];
@@ -398,19 +410,19 @@ class SurveyorController extends Controller
public function submitSurveyor($id, $jaminanId) public function submitSurveyor($id)
{ {
try { try {
$cekButton = $this->checkButtonStatus($id)->getData(); // $cekButton = $this->checkButtonStatus($id);
if (!$cekButton->buttonDisable) { // if (!$cekButton->buttonDisable) {
$permohonan = Permohonan::find($id); $permohonan = Permohonan::find($id);
$permohonan->update([ $permohonan->update([
'status' => 'done', 'status' => 'done',
]); ]);
return response()->json(['success' => true, 'message' => 'Form surveyor submitted successfully'], 200); return response()->json(['success' => true, 'message' => 'Form surveyor submitted successfully'], 200);
} else { // } else {
return response()->json(['error' => 'Something went wrong'], 400); // return response()->json(['error' => 'Something went wrong'], 400);
} // }
} catch (Exception $e) { } catch (Exception $e) {
return response()->json(['error' => 'Something went wrong', 'message' => $e->getMessage()], 500); return response()->json(['error' => 'Something went wrong', 'message' => $e->getMessage()], 500);
} }
@@ -443,7 +455,11 @@ class SurveyorController extends Controller
return response()->json(['buttonDisable' => true]); return response()->json(['buttonDisable' => true]);
} }
} catch (\Exception $e) { } catch (\Exception $e) {
return response()->json(['buttonDisable' => true]); // return response()->json(['buttonDisable' => true]);
return response()->json([
'error' => 'Something went wrong',
'message' => $e->getMessage()
], 500);
} }
} }
@@ -484,15 +500,7 @@ class SurveyorController extends Controller
} }
} }
// public function sendMessage($emailData, $user)
// {
// try {
// Mail::to('rustammobil1@gmail.com')->send(new SendEmail($emailData, $user));
// } catch (\Throwable $th) {
// return $th;
// }
// }
public function storeAproved($id) public function storeAproved($id)
{ {
@@ -554,7 +562,10 @@ class SurveyorController extends Controller
$tingkatKeramaian = TingkatKeramaian::all(); $tingkatKeramaian = TingkatKeramaian::all();
$laluLintasLokasi = LaluLintasLokasi::all(); $laluLintasLokasi = LaluLintasLokasi::all();
$perkerasanJalan = PerkerasanJalan::all(); $perkerasanJalan = PerkerasanJalan::all();
$jenisKendaraan = JenisKendaraan::all();
$jenisKapal = JenisKapal::all();
$jenisPesawat = JenisPesawat::all();
$modelAlatBerat = ModelAlatBerat::all();
// return response()->json([ // return response()->json([
// 'per'=> // 'per'=>
@@ -591,7 +602,11 @@ class SurveyorController extends Controller
'laluLintasLokasi', 'laluLintasLokasi',
'perkerasanJalan', 'perkerasanJalan',
'link_url_region', 'link_url_region',
'forminspeksi' 'forminspeksi',
'jenisKendaraan',
'jenisKapal',
'jenisPesawat',
'modelAlatBerat'
)); ));
} }
@@ -670,11 +685,12 @@ class SurveyorController extends Controller
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
$forminspeksi = null; $forminspeksi = null;
if ($inpeksi) { if ($inpeksi) {
$forminspeksi = json_decode($inpeksi->data_form, true); $forminspeksi = $inpeksi;
// $forminspeksi = json_decode($inpeksi->data_form, true);
} }
// return response()->json($forminspeksi); // return response()->json($forminspeksi);
return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces')); return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces','forminspeksi'));
} }
@@ -759,6 +775,10 @@ class SurveyorController extends Controller
'lantai-unit' => ['Lantai Unit', 'lantai-unit', Lantai::class], 'lantai-unit' => ['Lantai Unit', 'lantai-unit', Lantai::class],
'view-unit' => ['View Unit', 'view-unit', ViewUnit::class], 'view-unit' => ['View Unit', 'view-unit', ViewUnit::class],
'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar', GolonganMasySekitar::class], 'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar', GolonganMasySekitar::class],
'jenis-pesawat' => ['Jenis Pasawat', 'jenis-pesawat', JenisPesawat::class],
'model-alat-berat' => ['Model Alat Berat', 'model-alat-berat', ModelAlatBerat::class],
'jenis-kapal' => ['Jenis Kapal', 'jenis-kapal', JenisKapal::class],
'jenis-kendaraan' => ['Jenis Kendaraan', 'jenis-kendaraan', JenisKendaraan::class],
]; ];
@@ -906,7 +926,11 @@ class SurveyorController extends Controller
'Golongan Masyarakat Sekitar' => GolonganMasySekitar::class, 'Golongan Masyarakat Sekitar' => GolonganMasySekitar::class,
'Lantai Unit' => Lantai::class, 'Lantai Unit' => Lantai::class,
'View Unit' => ViewUnit::class, 'View Unit' => ViewUnit::class,
'Perkerasan jalan' => PerkerasanJalan::class 'Perkerasan jalan' => PerkerasanJalan::class,
'Jenis pesawat' => JenisPesawat::class,
'Model alat berat' => ModelAlatBerat::class,
'Jenis kapal' => JenisKapal::class,
'Jenis kendaraan' => JenisKendaraan::class,
]; ];
@@ -1039,6 +1063,10 @@ class SurveyorController extends Controller
'spek-bangunan' => SpekBangunan::class, 'spek-bangunan' => SpekBangunan::class,
'lantai-unit' => Lantai::class, 'lantai-unit' => Lantai::class,
'view-unit' => ViewUnit::class, 'view-unit' => ViewUnit::class,
'jenis-pesawat' => JenisPesawat::class,
'model-alat-berat' => ModelAlatBerat::class,
'jenis-kapal' => JenisKapal::class,
'jenis-kendaraan' => JenisKendaraan::class,
]; ];
@@ -1066,6 +1094,10 @@ class SurveyorController extends Controller
'golMasySekitar' => GolonganMasySekitar::all(), 'golMasySekitar' => GolonganMasySekitar::all(),
'tingkatKeramaian' => TingkatKeramaian::all(), 'tingkatKeramaian' => TingkatKeramaian::all(),
'laluLintasLokasi' => LaluLintasLokasi::all(), 'laluLintasLokasi' => LaluLintasLokasi::all(),
'jenisPesawat' => JenisPesawat::all(),
'modelAlatBerat' => ModelAlatBerat::all(),
'jenisKapal' => JenisKapal::all(),
'jenisKendaraan' => JenisKendaraan::all(),
]; ];
} }
@@ -1088,8 +1120,12 @@ class SurveyorController extends Controller
'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan'], 'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan'],
'lantai-unit' => ['Lantai Unit', 'lantai-unit'], 'lantai-unit' => ['Lantai Unit', 'lantai-unit'],
'view-unit' => ['View Unit', 'view-unit'], 'view-unit' => ['View Unit', 'view-unit'],
'perkerasan-jalan' => ['Perkerasan jalan', 'perkerasan-jalan'] 'perkerasan-jalan' => ['Perkerasan jalan', 'perkerasan-jalan'],
]; 'jenis-pesawat' => ['Jenis pesawat', 'jenis-pesawat'],
'model-alat-berat' => ['Model alat berat', 'model-alat-berat'],
'jenis-kapal' => ['Jenis kapal', 'jenis-kapal'],
'jenis-kendaraan' => ['Jenis kendaraan', 'jenis-kendaraan'],
];
private function getAssetData($data) private function getAssetData($data)
{ {
@@ -1193,6 +1229,7 @@ class SurveyorController extends Controller
'fakta_negatif' => $data['fakta_negatif'] ?? null, 'fakta_negatif' => $data['fakta_negatif'] ?? null,
'rute_menuju' => $data['rute_menuju'] ?? null, 'rute_menuju' => $data['rute_menuju'] ?? null,
'batas_batas' => $data['batas_batas'] ?? null, 'batas_batas' => $data['batas_batas'] ?? null,
'batas_batas_input' => $data['batas_batas_input'] ?? null,
'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null, 'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null,
'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null, 'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null,
'informasi_dokument' => $data['informasi_dokument'] ?? null, 'informasi_dokument' => $data['informasi_dokument'] ?? null,
@@ -1343,269 +1380,269 @@ class SurveyorController extends Controller
]; ];
} }
public function getKendaraanData($data, $request): array public function getKendaraanData($data, $request): array
{ {
return [ return [
'action' => $data['action'] ?? null, 'action' => $data['action'] ?? null,
'tanggal_survey' => $data['tanggal_survey'] ?? null, 'tanggal_survey' => $data['tanggal_survey'] ?? null,
'nama_wakil' => $data['nama_wakil'] ?? null, 'nama_wakil' => $data['nama_wakil'] ?? null,
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
'nama_jalan' => $data['nama_jalan'] ?? null, 'nama_jalan' => $data['nama_jalan'] ?? null,
'perumahan_gang' => $data['perumahan_gang'] ?? null, 'perumahan_gang' => $data['perumahan_gang'] ?? null,
'blok_nomor' => $data['blok_nomor'] ?? null, 'blok_nomor' => $data['blok_nomor'] ?? null,
'desa_kelurahan' => $data['desa_kelurahan'] ?? null, 'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
'kecamatan' => $data['kecamatan'] ?? null, 'kecamatan' => $data['kecamatan'] ?? null,
'kota_madya' => $data['kota_madya'] ?? null, 'kota_madya' => $data['kota_madya'] ?? null,
'provinsi' => $data['provinsi'] ?? null, 'provinsi' => $data['provinsi'] ?? null,
'kondisi' => $data['kondisi'] ?? null, 'kondisi' => $data['kondisi'] ?? null,
'nomor_polisi' => $data['nomor_polisi'] ?? null, 'nomor_polisi' => $data['nomor_polisi'] ?? null,
'nomor_polis_tidak_sesuai' => $data['nomor_polis_tidak_sesuai'] ?? null, 'nomor_polis_tidak_sesuai' => $data['nomor_polis_tidak_sesuai'] ?? null,
'merek' => $data['merek'] ?? null, 'merek' => $data['merek'] ?? null,
'merek_tidak_sesuai' => $data['merek_tidak_sesuai'] ?? null, 'merek_tidak_sesuai' => $data['merek_tidak_sesuai'] ?? null,
'warna' => $data['warna'] ?? null, 'warna' => $data['warna'] ?? null,
'warna_tidak_sesuai' => $data['warna_tidak_sesuai'] ?? null, 'warna_tidak_sesuai' => $data['warna_tidak_sesuai'] ?? null,
'nomor_rangka' => $data['nomor_rangka'] ?? null, 'nomor_rangka' => $data['nomor_rangka'] ?? null,
'nomor_rangka_tidak_sesuai' => $data['nomor_rangka_tidak_sesuai'] ?? null, 'nomor_rangka_tidak_sesuai' => $data['nomor_rangka_tidak_sesuai'] ?? null,
'nomor_mesin' => $data['nomor_mesin'] ?? null, 'nomor_mesin' => $data['nomor_mesin'] ?? null,
'nomor_mesin_tidak_sesuai' => $data['nomor_mesin_tidak_sesuai'] ?? null, 'nomor_mesin_tidak_sesuai' => $data['nomor_mesin_tidak_sesuai'] ?? null,
'posisi_kilometer' => $data['posisi_kilometer'] ?? null, 'posisi_kilometer' => $data['posisi_kilometer'] ?? null,
'transmisi' => $data['transmisi'] ?? null, 'transmisi' => $data['transmisi'] ?? null,
'mesin_panel_instrument' => $data['mesin_panel_instrument'] ?? null, 'mesin_panel_instrument' => $data['mesin_panel_instrument'] ?? null,
'fungsi_mesin_panel_instrument' => $data['fungsi_mesin_panel_instrument'] ?? null, 'fungsi_mesin_panel_instrument' => $data['fungsi_mesin_panel_instrument'] ?? null,
'interior' => $data['interior'] ?? null, 'interior' => $data['interior'] ?? null,
'interior' => $data['interior'] ?? null, 'interior' => $data['interior'] ?? null,
'jumlah_pintu' => $data['jumlah_pintu'] ?? null, 'jumlah_pintu' => $data['jumlah_pintu'] ?? null,
'rangka_karoseri' => $data['rangka_karoseri'] ?? null, 'rangka_karoseri' => $data['rangka_karoseri'] ?? null,
'ban' => $data['ban'] ?? null, 'ban' => $data['ban'] ?? null,
'velg' => $data['velg'] ?? null, 'velg' => $data['velg'] ?? null,
'bamper_depan' => $data['bamper_depan'] ?? null, 'bamper_depan' => $data['bamper_depan'] ?? null,
'bamper_belakang' => $data['bamper_belakang'] ?? null, 'bamper_belakang' => $data['bamper_belakang'] ?? null,
'lampu_depan' => $data['lampu_depan'] ?? null, 'lampu_depan' => $data['lampu_depan'] ?? null,
'lampu_belakang' => $data['lampu_belakang'] ?? null, 'lampu_belakang' => $data['lampu_belakang'] ?? null,
'kaca_kendaraan' => $data['kaca_kendaraan'] ?? null, 'kaca_kendaraan' => $data['kaca_kendaraan'] ?? null,
'air_conditioner' => $data['air_conditioner'] ?? null, 'air_conditioner' => $data['air_conditioner'] ?? null,
'tape_radio_cd' => $data['tape_radio_cd'] ?? null, 'tape_radio_cd' => $data['tape_radio_cd'] ?? null,
'sensor_parkir' => $data['sensor_parkir'] ?? null, 'sensor_parkir' => $data['sensor_parkir'] ?? null,
'sensor_camera_recorder' => $data['sensor_camera_recorder'] ?? null, 'sensor_camera_recorder' => $data['sensor_camera_recorder'] ?? null,
'lcd' => $data['lcd'] ?? null, 'lcd' => $data['lcd'] ?? null,
'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null, 'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null,
'airbag' => $data['airbag'] ?? null, 'airbag' => $data['airbag'] ?? null,
'asuransi' => $data['asuransi'] ?? null, 'asuransi' => $data['asuransi'] ?? null,
'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null, 'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null,
'tahun_berakhir' => $data['tahun_berakhir'] ?? null, 'tahun_berakhir' => $data['tahun_berakhir'] ?? null,
'fakta_positif' => $data['fakta_positif'] ?? null, 'fakta_positif' => $data['fakta_positif'] ?? null,
'fakta_negatif' => $data['fakta_negatif'] ?? null, 'fakta_negatif' => $data['fakta_negatif'] ?? null,
'analisa_makro' => $data['analisa_makro'] ?? null, 'analisa_makro' => $data['analisa_makro'] ?? null,
'kesimpulan' => $data['kesimpulan'] ?? null, 'kesimpulan' => $data['kesimpulan'] ?? null,
'catatan' => $data['catatan'] ?? null, 'catatan' => $data['catatan'] ?? null,
]; ];
} }
public function getMesinData($data, $request): array public function getMesinData($data, $request): array
{ {
return [ return [
'action' => $data['action'] ?? null, 'action' => $data['action'] ?? null,
'nama_wakil' => $data['nama_wakil'] ?? null, 'nama_wakil' => $data['nama_wakil'] ?? null,
'nama_jalan' => $data['nama_jalan'] ?? null, 'nama_jalan' => $data['nama_jalan'] ?? null,
'perumahan_gang' => $data['perumahan_gang'] ?? null, 'perumahan_gang' => $data['perumahan_gang'] ?? null,
'blok' => $data['blok'] ?? null, 'blok' => $data['blok'] ?? null,
'desa_kelurahan' => $data['desa_kelurahan'] ?? null, 'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
'kecamatan' => $data['kecamatan'] ?? null, 'kecamatan' => $data['kecamatan'] ?? null,
'kota_madya' => $data['kota_madya'] ?? null, 'kota_madya' => $data['kota_madya'] ?? null,
'provinsi' => $data['provinsi'] ?? null, 'provinsi' => $data['provinsi'] ?? null,
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
'tipe_model' => $data['tipe_model'] ?? null, 'tipe_model' => $data['tipe_model'] ?? null,
'merek' => $data['merek'] ?? null, 'merek' => $data['merek'] ?? null,
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
'negara_pembuat' => $data['negara_pembuat'] ?? null, 'negara_pembuat' => $data['negara_pembuat'] ?? null,
'kondisi_mesin' => $data['kondisi_mesin'] ?? null, 'kondisi_mesin' => $data['kondisi_mesin'] ?? null,
'faktor_positif' => $data['faktor_positif'] ?? null, 'faktor_positif' => $data['faktor_positif'] ?? null,
'faktor_negatif' => $data['faktor_negatif'] ?? null, 'faktor_negatif' => $data['faktor_negatif'] ?? null,
'kesimpulan' => $data['kesimpulan'] ?? null, 'kesimpulan' => $data['kesimpulan'] ?? null,
'catatan' => $data['catatan'] ?? null, 'catatan' => $data['catatan'] ?? null,
]; ];
} }
public function getAlatBeratData($data, $request): array public function getAlatBeratData($data, $request): array
{ {
return [ return [
'action' => $data['action'] ?? null, 'action' => $data['action'] ?? null,
'tanggal_survey' => $data['tanggal_survey'] ?? null, 'tanggal_survey' => $data['tanggal_survey'] ?? null,
'nama_wakil' => $data['nama_wakil'] ?? null, 'nama_wakil' => $data['nama_wakil'] ?? null,
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
'dengan_wadeb' => $data['dengan_wadeb'] ?? null, 'dengan_wadeb' => $data['dengan_wadeb'] ?? null,
'nama_jalan' => $data['nama_jalan'] ?? null, 'nama_jalan' => $data['nama_jalan'] ?? null,
'perumahan_gang' => $data['perumahan_gang'] ?? null, 'perumahan_gang' => $data['perumahan_gang'] ?? null,
'blok' => $data['blok'] ?? null, 'blok' => $data['blok'] ?? null,
'desa_kelurahan' => $data['desa_kelurahan'] ?? null, 'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
'kecamatan' => $data['kecamatan'] ?? null, 'kecamatan' => $data['kecamatan'] ?? null,
'kota_madya' => $data['kota_madya'] ?? null, 'kota_madya' => $data['kota_madya'] ?? null,
'provinsi' => $data['provinsi'] ?? null, 'provinsi' => $data['provinsi'] ?? null,
'jenis_model' => $data['jenis_model'] ?? null, 'jenis_model' => $data['jenis_model'] ?? null,
'nomor_lambung' => $data['nomor_lambung'] ?? null, 'nomor_lambung' => $data['nomor_lambung'] ?? null,
'model_unit' => $data['model_unit'] ?? null, 'model_unit' => $data['model_unit'] ?? null,
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
'merk' => $data['merk'] ?? null, 'merk' => $data['merk'] ?? null,
'negara_pembuat' => $data['negara_pembuat'] ?? null, 'negara_pembuat' => $data['negara_pembuat'] ?? null,
'tahun_pembelian' => $data['tahun_pembelian'] ?? null, 'tahun_pembelian' => $data['tahun_pembelian'] ?? null,
'nomor_faktur' => $data['nomor_faktur'] ?? null, 'nomor_faktur' => $data['nomor_faktur'] ?? null,
'nomor_kontrak' => $data['nomor_kontrak'] ?? null, 'nomor_kontrak' => $data['nomor_kontrak'] ?? null,
'nama_pemilik' => $data['nama_pemilik'] ?? null, 'nama_pemilik' => $data['nama_pemilik'] ?? null,
'alamat_pemilik' => $data['alamat_pemilik'] ?? null, 'alamat_pemilik' => $data['alamat_pemilik'] ?? null,
'nomor_asuransi' => $data['nomor_asuransi'] ?? null, 'nomor_asuransi' => $data['nomor_asuransi'] ?? null,
'nomor_rangka' => $data['nomor_rangka'] ?? null, 'nomor_rangka' => $data['nomor_rangka'] ?? null,
'nomor_mesin' => $data['nomor_mesin'] ?? null, 'nomor_mesin' => $data['nomor_mesin'] ?? null,
'hour_mesters' => $data['hour_mesters'] ?? null, 'hour_mesters' => $data['hour_mesters'] ?? null,
'overhaul_mesin' => $data['overhaul_mesin'] ?? null, 'overhaul_mesin' => $data['overhaul_mesin'] ?? null,
'mesin_panel' => $data['mesin_panel'] ?? null, 'mesin_panel' => $data['mesin_panel'] ?? null,
'fungsi_panel' => $data['fungsi_panel'] ?? null, 'fungsi_panel' => $data['fungsi_panel'] ?? null,
'interior' => $data['interior'] ?? null, 'interior' => $data['interior'] ?? null,
'rangka_Karoseri' => $data['rangka_Karoseri'] ?? null, 'rangka_Karoseri' => $data['rangka_Karoseri'] ?? null,
'ban' => $data['ban'] ?? null, 'ban' => $data['ban'] ?? null,
'velg' => $data['velg'] ?? null, 'velg' => $data['velg'] ?? null,
'air_conditioner' => $data['air_conditioner'] ?? null, 'air_conditioner' => $data['air_conditioner'] ?? null,
'aksesoris' => $data['aksesoris'] ?? null, 'aksesoris' => $data['aksesoris'] ?? null,
'lcd' => $data['lcd'] ?? null, 'lcd' => $data['lcd'] ?? null,
'perlengkapan' => $data['perlengkapan'] ?? null, 'perlengkapan' => $data['perlengkapan'] ?? null,
'asuransi' => $data['asuransi'] ?? null, 'asuransi' => $data['asuransi'] ?? null,
'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null, 'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null,
'tahun_berakhir' => $data['tahun_berakhir'] ?? null, 'tahun_berakhir' => $data['tahun_berakhir'] ?? null,
'sensor_kamera' => $data['sensor_kamera'] ?? null, 'sensor_kamera' => $data['sensor_kamera'] ?? null,
'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null, 'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null,
'air_bag' => $data['air_bag'] ?? null, 'air_bag' => $data['air_bag'] ?? null,
'faktor_positif' => $data['faktor_positif'] ?? null, 'faktor_positif' => $data['faktor_positif'] ?? null,
'faktor_negatif' => $data['faktor_negatif'] ?? null, 'faktor_negatif' => $data['faktor_negatif'] ?? null,
'kesimpulan' => $data['kesimpulan'] ?? null, 'kesimpulan' => $data['kesimpulan'] ?? null,
'catatan' => $data['catatan'] ?? null, 'catatan' => $data['catatan'] ?? null,
]; ];
} }
private function getPesawatData($data, $request): array private function getPesawatData($data, $request): array
{ {
return [ return [
'action' => $data['action'] ?? null, 'action' => $data['action'] ?? null,
'tanggal_survey' => $data['tanggal_survey'] ?? null, 'tanggal_survey' => $data['tanggal_survey'] ?? null,
'nama_wakil' => $data['nama_wakil'] ?? null, 'nama_wakil' => $data['nama_wakil'] ?? null,
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
'bandara' => $data['bandara'] ?? null, 'bandara' => $data['bandara'] ?? null,
'desa_kelurahan' => $data['desa_kelurahan'] ?? null, 'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
'kecamatan' => $data['kecamatan'] ?? null, 'kecamatan' => $data['kecamatan'] ?? null,
'kota_madya' => $data['kota_madya'] ?? null, 'kota_madya' => $data['kota_madya'] ?? null,
'provinsi' => $data['provinsi'] ?? null, 'provinsi' => $data['provinsi'] ?? null,
'jenis_pesawat' => $data['jenis_pesawat'] ?? null, 'jenis_pesawat' => $data['jenis_pesawat'] ?? null,
'size' => $data['size'] ?? null, 'size' => $data['size'] ?? null,
'kondisi' => $data['kondisi'] ?? null, 'kondisi' => $data['kondisi'] ?? null,
'nama_pesawat' => $data['nama_pesawat'] ?? null, 'nama_pesawat' => $data['nama_pesawat'] ?? null,
'model' => $data['model'] ?? null, 'model' => $data['model'] ?? null,
'nomor_registrasi' => $data['nomor_registrasi'] ?? null, 'nomor_registrasi' => $data['nomor_registrasi'] ?? null,
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null, 'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
'certificate_of_airworthines' => $data['certificate_of_airworthines'] ?? null, 'certificate_of_airworthines' => $data['certificate_of_airworthines'] ?? null,
'certificate_of_registration' => $data['certificate_of_registration'] ?? null, 'certificate_of_registration' => $data['certificate_of_registration'] ?? null,
'total_service_hours' => $data['total_service_hours'] ?? null, 'total_service_hours' => $data['total_service_hours'] ?? null,
'total_service_cycles' => $data['total_service_cycles'] ?? null, 'total_service_cycles' => $data['total_service_cycles'] ?? null,
'last_a_check' => $data['last_a_check'] ?? null, 'last_a_check' => $data['last_a_check'] ?? null,
'next_a_check' => $data['next_a_check'] ?? null, 'next_a_check' => $data['next_a_check'] ?? null,
'last_b_check' => $data['last_b_check'] ?? null, 'last_b_check' => $data['last_b_check'] ?? null,
'next_b_check' => $data['next_b_check'] ?? null, 'next_b_check' => $data['next_b_check'] ?? null,
'last_c_check' => $data['last_c_check'] ?? null, 'last_c_check' => $data['last_c_check'] ?? null,
'next_c_check' => $data['next_c_check'] ?? null, 'next_c_check' => $data['next_c_check'] ?? null,
'next_d_check' => $data['next_d_check'] ?? null, 'next_d_check' => $data['next_d_check'] ?? null,
'last_d_check' => $data['last_d_check'] ?? null, 'last_d_check' => $data['last_d_check'] ?? null,
'deskripsi_maintenence' => $data['deskripsi_maintenence'] ?? null, 'deskripsi_maintenence' => $data['deskripsi_maintenence'] ?? null,
'instrument_landing_system' => $data['instrument_landing_system'] ?? null, 'instrument_landing_system' => $data['instrument_landing_system'] ?? null,
'traffic_collision_avoidance_system' => $data['traffic_collision_avoidance_system'] ?? null, 'traffic_collision_avoidance_system' => $data['traffic_collision_avoidance_system'] ?? null,
'windshear' => $data['windshear'] ?? null, 'windshear' => $data['windshear'] ?? null,
'electronic_flight' => $data['electronic_flight'] ?? null, 'electronic_flight' => $data['electronic_flight'] ?? null,
'winglets' => $data['winglets'] ?? null, 'winglets' => $data['winglets'] ?? null,
'deskripsi_konfigurasi' => $data['deskripsi_konfigurasi'] ?? null, 'deskripsi_konfigurasi' => $data['deskripsi_konfigurasi'] ?? null,
'maksimal_penumpang' => $data['maksimal_penumpang'] ?? null, 'maksimal_penumpang' => $data['maksimal_penumpang'] ?? null,
'jumlah_kursi' => $data['jumlah_kursi'] ?? null, 'jumlah_kursi' => $data['jumlah_kursi'] ?? null,
'kursi_pramugari_pramugara' => $data['kursi_pramugari_pramugara'] ?? null, 'kursi_pramugari_pramugara' => $data['kursi_pramugari_pramugara'] ?? null,
'kartu_fitur_keselamatan' => $data['kartu_fitur_keselamatan'] ?? null, 'kartu_fitur_keselamatan' => $data['kartu_fitur_keselamatan'] ?? null,
'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null, 'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null,
'lampu_kabin' => $data['lampu_kabin'] ?? null, 'lampu_kabin' => $data['lampu_kabin'] ?? null,
'lampu_pintu_keluar' => $data['lampu_pintu_keluar'] ?? null, 'lampu_pintu_keluar' => $data['lampu_pintu_keluar'] ?? null,
'intercom_kabin' => $data['intercom_kabin'] ?? null, 'intercom_kabin' => $data['intercom_kabin'] ?? null,
'deskripsi_kabin' => $data['deskripsi_kabin'] ?? null, 'deskripsi_kabin' => $data['deskripsi_kabin'] ?? null,
'badan_pesawat' => $data['badan_pesawat'] ?? null, 'badan_pesawat' => $data['badan_pesawat'] ?? null,
'sayap_pesawat' => $data['sayap_pesawat'] ?? null, 'sayap_pesawat' => $data['sayap_pesawat'] ?? null,
'ekor_pesawat' => $data['ekor_pesawat'] ?? null, 'ekor_pesawat' => $data['ekor_pesawat'] ?? null,
'landing_gear' => $data['landing_gear'] ?? null, 'landing_gear' => $data['landing_gear'] ?? null,
'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null, 'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null,
'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null, 'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null,
'gps' => $data['gps'] ?? null, 'gps' => $data['gps'] ?? null,
'radar' => $data['radar'] ?? null, 'radar' => $data['radar'] ?? null,
'radio_komunikasi' => $data['radio_komunikasi'] ?? null, 'radio_komunikasi' => $data['radio_komunikasi'] ?? null,
'lampu_navigasi' => $data['lampu_navigasi'] ?? null, 'lampu_navigasi' => $data['lampu_navigasi'] ?? null,
'sistem_autopilot' => $data['sistem_autopilot'] ?? null, 'sistem_autopilot' => $data['sistem_autopilot'] ?? null,
'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null, 'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null,
'tangki_bahan_bakar' => $data['tangki_bahan_bakar'] ?? null, 'tangki_bahan_bakar' => $data['tangki_bahan_bakar'] ?? null,
'saluran_pipa_bahan_bakar' => $data['saluran_pipa_bahan_bakar'] ?? null, 'saluran_pipa_bahan_bakar' => $data['saluran_pipa_bahan_bakar'] ?? null,
'pompa_bahan_bakar' => $data['pompa_bahan_bakar'] ?? null, 'pompa_bahan_bakar' => $data['pompa_bahan_bakar'] ?? null,
'sistem_hidrolik_utama' => $data['sistem_hidrolik_utama'] ?? null, 'sistem_hidrolik_utama' => $data['sistem_hidrolik_utama'] ?? null,
'sistem_pendigin_hidrolik' => $data['sistem_pendigin_hidrolik'] ?? null, 'sistem_pendigin_hidrolik' => $data['sistem_pendigin_hidrolik'] ?? null,
'deskripsi_hidrolik' => $data['deskripsi_hidrolik'] ?? null, 'deskripsi_hidrolik' => $data['deskripsi_hidrolik'] ?? null,
'mesin_utama' => $data['mesin_utama'] ?? null, 'mesin_utama' => $data['mesin_utama'] ?? null,
'sistem_pendorong' => $data['sistem_pendorong'] ?? null, 'sistem_pendorong' => $data['sistem_pendorong'] ?? null,
'sistem_pendigin_mesin' => $data['sistem_pendigin_mesin'] ?? null, 'sistem_pendigin_mesin' => $data['sistem_pendigin_mesin'] ?? null,
'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null, 'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null,
'filter_dan_perangkat_pendukung' => $data['filter_dan_perangkat_pendukung'] ?? null, 'filter_dan_perangkat_pendukung' => $data['filter_dan_perangkat_pendukung'] ?? null,
'deskripsi_kondisi_mesin' => $data['deskripsi_kondisi_mesin'] ?? null, 'deskripsi_kondisi_mesin' => $data['deskripsi_kondisi_mesin'] ?? null,
'jaket_pelampung' => $data['jaket_pelampung'] ?? null, 'jaket_pelampung' => $data['jaket_pelampung'] ?? null,
'pintu_darurat' => $data['pintu_darurat'] ?? null, 'pintu_darurat' => $data['pintu_darurat'] ?? null,
'alat_pemadaman_kebakaran' => $data['alat_pemadaman_kebakaran'] ?? null, 'alat_pemadaman_kebakaran' => $data['alat_pemadaman_kebakaran'] ?? null,
'sistem_alaram_darurat' => $data['sistem_alaram_darurat'] ?? null, 'sistem_alaram_darurat' => $data['sistem_alaram_darurat'] ?? null,
'sekoci' => $data['sekoci'] ?? null, 'sekoci' => $data['sekoci'] ?? null,
'masker_oxigen' => $data['masker_oxigen'] ?? null, 'masker_oxigen' => $data['masker_oxigen'] ?? null,
'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null, 'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null,
'deskripsi_fungsi_keselamatan' => $data['deskripsi_fungsi_keselamatan'] ?? null, 'deskripsi_fungsi_keselamatan' => $data['deskripsi_fungsi_keselamatan'] ?? null,
'sistem_ventilasi_ac' => $data['sistem_ventilasi_ac'] ?? null, 'sistem_ventilasi_ac' => $data['sistem_ventilasi_ac'] ?? null,
'sistem_penerangan_kabin' => $data['sistem_penerangan_kabin'] ?? null, 'sistem_penerangan_kabin' => $data['sistem_penerangan_kabin'] ?? null,
'panel_informasi_penumpang' => $data['panel_informasi_penumpang'] ?? null, 'panel_informasi_penumpang' => $data['panel_informasi_penumpang'] ?? null,
'sistem_hiburan_kabin' => $data['sistem_hiburan_kabin'] ?? null, 'sistem_hiburan_kabin' => $data['sistem_hiburan_kabin'] ?? null,
'deskripsi_Interior' => $data['deskripsi_Interior'] ?? null, 'deskripsi_Interior' => $data['deskripsi_Interior'] ?? null,
// Validasi untuk faktor dan kesimpulan // Validasi untuk faktor dan kesimpulan
'faktor_positif' => $data['faktor_positif'] ?? null, 'faktor_positif' => $data['faktor_positif'] ?? null,
'faktor_negatif' => $data['faktor_negatif'] ?? null, 'faktor_negatif' => $data['faktor_negatif'] ?? null,
'kesimpulan' => $data['kesimpulan'] ?? null, 'kesimpulan' => $data['kesimpulan'] ?? null,
'catatan' => $data['catatan'] ?? null, 'catatan' => $data['catatan'] ?? null,
]; ];
} }
private function getUnitData($data, $request): array private function getUnitData($data, $request): array
{ {
return [ return [
'action' => $data['action'] ?? null, 'action' => $data['action'] ?? null,
'luas_unit' => $data['luas_unit'] ?? null, 'luas_unit' => $data['luas_unit'] ?? null,
'luas_unit_tidak_sesuai' => $data['luas_unit_tidak_sesuai'] ?? null, 'luas_unit_tidak_sesuai' => $data['luas_unit_tidak_sesuai'] ?? null,
'jenis_unit' => $data['jenis_unit'] ?? null, 'jenis_unit' => $data['jenis_unit'] ?? null,
'kondisi_unit' => $data['kondisi_unit'] ?? null, 'kondisi_unit' => $data['kondisi_unit'] ?? null,
'posisi_unit' => $data['posisi_unit'] ?? null, 'posisi_unit' => $data['posisi_unit'] ?? null,
'lantai' => $data['lantai'] ?? null, 'lantai' => $data['lantai'] ?? null,
'view' => $data['view'] ?? null, 'view' => $data['view'] ?? null,
'bentuk_unit' => $data['bentuk_unit'] ?? null, 'bentuk_unit' => $data['bentuk_unit'] ?? null,
]; ];
} }

View File

@@ -51,7 +51,7 @@ class FormSurveyorRequest extends FormRequest
foreach ($pisah as $act) { foreach ($pisah as $act) {
if (isset($allRules[$act])) { if (isset($allRules[$act])) {
$rules = array_merge($rules, $allRules[$act]); $rules = array_merge($rules, $allRules[$act]);
if ($act == 'tanah' || $act == 'bangunan') { if ($act == 'tanah' || $act == 'bangunan' || $act == 'apartemen-kantor') {
$hasAssetDescriptionRules = true; $hasAssetDescriptionRules = true;
} }
} }
@@ -537,6 +537,7 @@ class FormSurveyorRequest extends FormRequest
'fakta_negatif' => 'nullable|array', 'fakta_negatif' => 'nullable|array',
'rute_menuju' => 'nullable', 'rute_menuju' => 'nullable',
'batas_batas' => 'nullable|array', 'batas_batas' => 'nullable|array',
'batas_batas_input' => 'nullable|array',
'kondisi_lingkungan' => 'nullable|array', 'kondisi_lingkungan' => 'nullable|array',
'kondisi_lain_bangunan' => 'nullable|array', 'kondisi_lain_bangunan' => 'nullable|array',
'informasi_dokument' => 'nullable', 'informasi_dokument' => 'nullable',

View File

@@ -28,6 +28,10 @@ class SurveyorRequest extends FormRequest
'spek-bangunan' => 'spek_bangunan', 'spek-bangunan' => 'spek_bangunan',
'lantai-unit' => 'lantai', 'lantai-unit' => 'lantai',
'view-unit' => 'view_unit', 'view-unit' => 'view_unit',
'jenis-pesawat' => 'jenis_pesawat',
'model-alat-berat' => 'model_alat_berat',
'jenis-kapal' => 'jenis_kapal',
'jenis-kendaraan' => 'jenis_kendaraan',
]; ];
/** /**

24
app/Models/JenisKapal.php Normal file
View File

@@ -0,0 +1,24 @@
<?php
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\Lpj\Database\Factories\JenisKapalFactory;
class JenisKapal extends Model
{
use HasFactory;
protected $table = 'jenis_kapal';
/**
* The attributes that are mass assignable.
*/
protected $fillable = ['name', 'code', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by'];
// protected static function newFactory(): JenisKapalFactory
// {
// // return JenisKapalFactory::new();
// }
}

View File

@@ -0,0 +1,23 @@
<?php
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\Lpj\Database\Factories\JenisKendaraanFactory;
class JenisKendaraan extends Model
{
use HasFactory;
protected $table = 'jenis_kendaraan';
/**
* The attributes that are mass assignable.
*/
protected $fillable = ['name', 'code', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by'];
// protected static function newFactory(): JenisKendaraanFactory
// {
// // return JenisKendaraanFactory::new();
// }
}

View File

@@ -0,0 +1,23 @@
<?php
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\Lpj\Database\Factories\JenisPesawatFactory;
class JenisPesawat extends Model
{
use HasFactory;
protected $table = 'jenis_pesawat';
/**
* The attributes that are mass assignable.
*/
protected $fillable = ['name', 'code', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by'];
// protected static function newFactory(): JenisPesawatFactory
// {
// // return JenisPesawatFactory::new();
// }
}

View File

@@ -0,0 +1,23 @@
<?php
namespace Modules\Lpj\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Modules\Lpj\Database\Factories\ModelAlatBeratFactory;
class ModelAlatBerat extends Model
{
use HasFactory;
protected $table = 'model_alat_berat';
/**
* The attributes that are mass assignable.
*/
protected $fillable = ['name', 'code', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by'];
// protected static function newFactory(): ModelAlatBeratFactory
// {
// // return ModelAlatBeratFactory::new();
// }
}

View File

@@ -2,6 +2,7 @@
namespace Modules\Lpj\Models; namespace Modules\Lpj\Models;
use Modules\Usermanagement\Models\User;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Modules\Lpj\Database\Factories\PenilaianTeamFactory; use Modules\Lpj\Database\Factories\PenilaianTeamFactory;
@@ -24,7 +25,7 @@ class PenilaianTeam extends Model
public function team(){ public function team(){
return $this->belongsTo(Team::class, 'team_id', 'id'); return $this->belongsTo(Teams::class, 'team_id', 'id');
} }
public function penilaian(){ public function penilaian(){

View File

@@ -0,0 +1,37 @@
<?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::create('jenis_kendaraan', function (Blueprint $table) {
$table->id();
$table->string('code')->unique()->index();
$table->string('name');
$table->boolean('status')->default(true);
$table->char('authorized_status', 1)->nullable();
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('jenis_kendaraan');
}
};

View File

@@ -0,0 +1,36 @@
<?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::create('model_alat_berat', function (Blueprint $table) {
$table->id();
$table->string('code')->unique()->index();
$table->string('name');
$table->boolean('status')->default(true);
$table->char('authorized_status', 1)->nullable();
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('model_alat_berat');
}
};

View File

@@ -0,0 +1,36 @@
<?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::create('jenis_pesawat', function (Blueprint $table) {
$table->id();
$table->string('code')->unique()->index();
$table->string('name');
$table->boolean('status')->default(true);
$table->char('authorized_status', 1)->nullable();
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('jenis_pesawat');
}
};

View File

@@ -0,0 +1,37 @@
<?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::create('jenis_kapal', function (Blueprint $table) {
$table->id();
$table->string('code')->unique()->index();
$table->string('name');
$table->boolean('status')->default(true);
$table->char('authorized_status', 1)->nullable();
$table->timestamps();
$table->timestamp('authorized_at')->nullable();
$table->unsignedBigInteger('authorized_by')->nullable();
$table->softDeletes();
$table->unsignedBigInteger('created_by')->nullable();
$table->unsignedBigInteger('updated_by')->nullable();
$table->unsignedBigInteger('deleted_by')->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('jenis_kapal');
}
};

View File

@@ -567,9 +567,39 @@
"attributes": [], "attributes": [],
"permission": "", "permission": "",
"roles": ["administrator","surveyor"] "roles": ["administrator","surveyor"]
},
{
"title": "Jenis Pesawat",
"path": "basicdata.jenis-pesawat",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator","surveyor"]
},
{
"title": "Jenis kapal",
"path": "basicdata.jenis-kapal",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator","surveyor"]
},
{
"title": "Jenis Kendaraan",
"path": "basicdata.jenis-kendaraan",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator","surveyor"]
},
{
"title": "Model Alat Berat",
"path": "basicdata.model-alat-berat",
"classes": "",
"attributes": [],
"permission": "",
"roles": ["administrator","surveyor"]
} }
] ]
} }
], ],

View File

@@ -210,7 +210,11 @@
}, },
due_date: { due_date: {
title: 'Due Date', title: 'Due Date',
render: (item, data) => `${data.due_date || ''}`, render: (item, data) => {
const mulai = new Date(data.permohonan.created_at);
const selesai = new Date(data.tanggal_kunjungan)
return `${mulai.getDate()}-${mulai.getMonth() + 1}-${mulai.getFullYear()} - ${selesai.getDate()}-${selesai.getMonth() + 1}-${selesai.getFullYear()}`
},
}, },
paparan: { paparan: {
title: 'Paparan', title: 'Paparan',
@@ -236,6 +240,11 @@
}); });
}); });
function formatDateFromISO(isoDateString) { function formatDateFromISO(isoDateString) {
const date = new Date(isoDateString); const date = new Date(isoDateString);
const day = String(date.getDate()).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0');

View File

@@ -5,9 +5,10 @@
@endsection @endsection
@section('content') @section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card pb-2.5">
<div class=" card-grid min-w-full" data-datatable="false" data-datatable-page-size="5"
<div class="card card-grid min-w-full" data-datatable="false" data-datatable-page-size="5"
data-datatable-state-save="false" id="penilai-table" data-api-url="{{ route('penilai.dataForTables') }}"> data-datatable-state-save="false" id="penilai-table" data-api-url="{{ route('penilai.dataForTables') }}">
<div class="card-header py-5 flex-wrap"> <div class="card-header py-5 flex-wrap">
<h3 class="card-title"> <h3 class="card-title">
@@ -29,7 +30,7 @@
<div class="card-body"> <div class="card-body">
<div class="scrollable-x-auto"> <div class="scrollable-x-auto">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" <table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm"
data-datatable-table="true"> data-datatable-table="true">
<thead> <thead>
<tr> <tr>
<th class="w-14"> <th class="w-14">
@@ -86,8 +87,10 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </div>
@endsection @endsection

View File

@@ -88,27 +88,36 @@
{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</p> {{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}</p>
</div> </div>
</div> </div>
</div>
</div>
@foreach($permohonan->debiture->documents as $dokumen)
<div class="card">
<div class="card-body grid gap-5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
@php
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first();
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
@endphp
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Surveyor Surveyor
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">
{{ $permohonan->penilaian->userSurveyor->name }}</p> <p class="flex w-full text-gray-600 font-medium text-sm">{{ $surveyor->userPenilaiTeam->name }}</p>
<p class="flex w-full text-gray-600 font-medium text-sm">
Region 1</p> <p class="flex w-full text-gray-600 font-medium text-sm">{{ $permohonan->region->name }}</p>
</div> </div>
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Penilai Penilai
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $penilai->userPenilaiTeam->name }}</p>
<p class="flex w-full text-gray-600 font-medium text-sm"> <p class="flex w-full text-gray-600 font-medium text-sm">
@foreach ($permohonan->penilaian->teams->teamsUsers as $index => $penilaian) {{ $permohonan->region->name }}
{{ $penilaian->user->name }}{{ $index + 1 < count($permohonan->penilaian->teams->teamsUsers) ? ', ' : '' }}
@endforeach
</p>
<p class="flex w-full text-gray-600 font-medium text-sm">
{{ $permohonan->penilaian->teams->regions->name }}
</p> </p>
</div> </div>
</div> </div>
@@ -154,7 +163,48 @@
PJ/001/001</p> PJ/001/001</p>
</div> </div>
</div> </div>
</div> </div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full card-footer mt-2 ">
<div class="flex gap-5">
<a class="btn btn-primary" href="">
LAMPIRAN FOTO DAN DOKUMEN
</a>
<a class="btn btn-primary" href="">
KERTAS KERJA
</a>
<a class="btn btn-primary" href="">
PAPARAN
</a>
<a class="btn btn-primary" href="">
WORKSHEET
</a>
</div>
<div class="flex justify-end gap-5">
<a class="btn btn-success" href="">
SAVE
</a>
<a class="btn btn-success" href="">
REPORT
</a>
<a class="btn btn-success" href="">
PRINT OUT
</a>
</div>
</div>
</div> </div>
@endforeach
</div> </div>
@endsection @endsection

View File

@@ -4,25 +4,12 @@
{{ Breadcrumbs::render(request()->route()->getName()) }} {{ Breadcrumbs::render(request()->route()->getName()) }}
@endsection @endsection
@push('styles')
<style>
.modal {
width: 50%;
display: flex;
justify-content: center;
align-items: center;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>
@endpush
@section('content') @section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
@include('lpj::component.detail-jaminan',['backLink' => 'penilaian.index']) @include('lpj::component.detail-jaminan', ['backLink' => 'penilaian.index'])
<div class="card pb-2.5"> <div class="card pb-2.5">
<div class="card-header" id="basic_settings"> <div class="card-header" id="basic_settings">
@@ -33,9 +20,7 @@
</div> </div>
<div class="card-body"> <div class="card-body">
<form <form id="form-assignment" class="">
action="{{ isset($penilaian->nomor_registrasi) ? route('penilaian.update', $permohonan) : route('penilaian.store') }}"
method="POST" class="">
@if (isset($penilaian->nomor_registrasi)) @if (isset($penilaian->nomor_registrasi))
@method('PUT') @method('PUT')
@endif @endif
@@ -86,10 +71,8 @@
<option value="berbeda">Berbeda</option> <option value="berbeda">Berbeda</option>
</select> </select>
</div> </div>
<em id="error-surveyor_selection" class="alert text-danger text-sm"></em>
@error('surveyor_selection')
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div> </div>
</div> </div>
@@ -108,9 +91,9 @@
@endforeach @endforeach
</select> </select>
</div> </div>
@error('penilai_surveyor_id')
<em class="alert text-danger text-sm">{{ $message }}</em> <em id="error-penilai_surveyor_id" class="alert text-danger text-sm"></em>
@enderror
</div> </div>
</div> </div>
</div> </div>
@@ -141,9 +124,9 @@
@endif @endif
</select> </select>
</div> </div>
@error('surveyor_id')
<em class="alert text-danger text-sm">{{ $message }}</em> <em id="error-surveyor_id" class="alert text-danger text-sm"></em>
@enderror
</div> </div>
</div> </div>
@elseif($penilaianTeam->isEmpty()) @elseif($penilaianTeam->isEmpty())
@@ -166,9 +149,9 @@
@endif @endif
</select> </select>
</div> </div>
@error('surveyor_id')
<em class="alert text-danger text-sm">{{ $message }}</em> <em id="error-surveyor_id" class="alert text-danger text-sm"></em>
@enderror
</div> </div>
</div> </div>
@endif @endif
@@ -192,9 +175,9 @@
@endif @endif
</select> </select>
</div> </div>
@error('surveyor_region_id')
<em class="alert text-danger text-sm">{{ $message }}</em> <em id="error-surveyor_region_id" class="alert text-danger text-sm"></em>
@enderror
</div> </div>
</div> </div>
@@ -220,9 +203,7 @@
@endif @endif
</select> </select>
</div> </div>
@error('penilai_id') <em id="error-penilai_id" class="alert text-danger text-sm"></em>
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div> </div>
</div> </div>
@elseif($penilaianTeam->isEmpty()) @elseif($penilaianTeam->isEmpty())
@@ -244,9 +225,7 @@
@endif @endif
</select> </select>
</div> </div>
@error('penilai_id') <em id="error-penilai_id" class="alert text-danger text-sm"></em>
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div> </div>
</div> </div>
@endif @endif
@@ -268,9 +247,7 @@
@endif @endif
</select> </select>
</div> </div>
@error('penilai_region_id') <em id="error-penilai_region_id" class="alert text-danger text-sm"></em>
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div> </div>
</div> </div>
</div> </div>
@@ -285,9 +262,8 @@
<input class="input @error('tanggal_kunjungan') border-danger bg-danger-light @enderror" <input class="input @error('tanggal_kunjungan') border-danger bg-danger-light @enderror"
type="datetime-local" name="tanggal_kunjungan" type="datetime-local" name="tanggal_kunjungan"
value="{{ isset($penilaian->tanggal_kunjungan) ? \Carbon\Carbon::createFromTimestamp($penilaian->tanggal_kunjungan)->format('Y-m-d\TH:i') : '' }}"> value="{{ isset($penilaian->tanggal_kunjungan) ? \Carbon\Carbon::createFromTimestamp($penilaian->tanggal_kunjungan)->format('Y-m-d\TH:i') : '' }}">
@error('tanggal_kunjungan')
<em class="alert text-danger text-sm">{{ $message }}</em> <em id="error-tanggal_kunjungan" class="alert text-danger text-sm"></em>
@enderror
</div> </div>
</div> </div>
@@ -300,13 +276,13 @@
<textarea class="textarea @error('keterangan') border-danger bg-danger-light @enderror" rows="3" <textarea class="textarea @error('keterangan') border-danger bg-danger-light @enderror" rows="3"
type="text" name="keterangan">{{ $penilaian->keterangan ?? '' }}</textarea> type="text" name="keterangan">{{ $penilaian->keterangan ?? '' }}</textarea>
</div> </div>
@error('keterangan')
<em class="alert text-danger text-sm">{{ $message }}</em> <em id="error-keterangan" class="alert text-danger text-sm"></em>
@enderror
</div> </div>
</div> </div>
<div class="flex justify-end card-footer mt-2"> <div class="flex justify-end card-footer mt-2">
<button type="submit" class="btn btn-success"> <button type="button" onclick="submitAssignment()" class="btn btn-success">
Aprove Aprove
</button> </button>
@@ -321,8 +297,8 @@
</div> </div>
<div class="modal fade" data-modal="true" id="modal_revisi" data-backdrop="static" data-keyboard="false"> <div class="modal" data-modal="true" id="modal_revisi"">
<div class="modal-content"> <div class="modal-content max-w-[600px] top-[10%]">
<div class="modal-header"> <div class="modal-header">
<h3 class="modal-title">Revisi</h3> <h3 class="modal-title">Revisi</h3>
<button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true"> <button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true">
@@ -368,13 +344,15 @@
<div class="modal-footer justify-end mt-2"> <div class="modal-footer justify-end mt-2">
<div class="flex gap-4"> <div class="flex gap-4">
<button type="button" class="btn btn-light" data-modal-dismiss="true">Cancel</button> <button type="button" class="btn btn-light" data-modal-dismiss="true">Cancel</button>
<button id="btnSubmit" type="submit" class="btn btn-primary" data-modal-dismiss="true">Submit</button> <button id="btnSubmit" type="submit" class="btn btn-primary"
data-modal-dismiss="true">Submit</button>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
@endsection @endsection
@push('scripts') @push('scripts')
<script> <script>
@@ -462,10 +440,57 @@
} }
}); });
}); });
function submitAssignment() {
const formElement = $('#form-assignment')[0];
const formData = new FormData(formElement);
const urlAssignment =
"{{ isset($penilaian->nomor_registrasi) ? route('penilaian.update', $permohonan) : route('penilaian.store') }}";
$.ajax({
url: urlAssignment,
type: 'POST',
data: formData,
processData: false,
contentType: false,
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
success: function(response) {
if (response.success) {
window.location.href =
'{{ route('penilaian.index') }}';
} else {
showErrorMessages(response.errors);
}
console.log(response);
},
error: function(xhr) {
// Handle errors from the server
showErrorMessages(xhr.responseJSON?.errors);
console.error('Error occurred:', xhr.statusText);
console.log('Response:', xhr.responseText);
},
complete: function() {
// Re-enable the button and hide the spinner
$('#saveButton').prop('disabled', false);
$('#saveButtonText').show();
$('#saveButtonSpinner').hide();
}
});
}
function showErrorMessages(errors) {
$('.alert').text('');
if (errors) {
$.each(errors, function(key, value) {
$(`#error-${key}`).text(value[0]);
});
}
}
</script> </script>
<script>
</script>
@endpush @endpush

View File

@@ -102,8 +102,8 @@
class="input tomselect w-full @error('model_unit') border-danger bg-danger-light @enderror" class="input tomselect w-full @error('model_unit') border-danger bg-danger-light @enderror"
name="jenis_model"> name="jenis_model">
<option value="">Select Model Kendaraan </option> <option value="">Select Model Kendaraan </option>
@if (isset($arahMataAngin)) @if (isset($modelAlatBerat))
@foreach ($arahMataAngin as $item) @foreach ($modelAlatBerat as $item)
<option value="{{ $item->name }}" <option value="{{ $item->name }}"
{{ old('') == $item->name ? 'selected' : '' }}>{{ $item->name }} {{ old('') == $item->name ? 'selected' : '' }}>{{ $item->name }}
</option> </option>

View File

@@ -6,7 +6,7 @@
<div class="card-body"> <div class="card-body">
<div class=" py-4 px-6"> <div class=" py-4 ">
<h1 class="text-md font-medium text-gray-900">Analisa Unit</h1> <h1 class="text-md font-medium text-gray-900">Analisa Unit</h1>
</div> </div>
<div class="grid gap-5"> <div class="grid gap-5">
@@ -18,19 +18,18 @@
<div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2"> <div class="grid grid-cols-2 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap"> <label class="form-label flex items-center gap-3 text-nowrap">
<input type="radio" class="radio" name="luas_unit" value="sesuai" <input type="radio" class="radio" name="luas_unit" value="sesuai"
{{ old('luas', isset($analisa) && optional($analisa)->luas) == 'sesuai' ? 'checked' : '' }}> {{ old('luas_unit', $forminspeksi['luas_unit'] ?? '') == 'sesuai' ? 'checked' : '' }}>
<span class="ml-2">Sesuai</span> <span class="ml-2">Sesuai</span>
</label> </label>
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input type="radio" class="radio" name="luas_unit" value="tidak sesuai" <input type="radio" class="radio" name="luas_unit" value="tidak sesuai"
{{ old('luas', isset($analisa) && optional($analisa)->luas) == 'tidak sesuai' ? 'checked' : '' }}> {{ old('luas_unit', $forminspeksi['luas_unit'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
<span class="ml-2">Tidak Sesuai</span> <span class="ml-2">Tidak Sesuai</span>
</label> </label>
</div> </div>
@error('luas') <em id="error-luas_unit" class="alert text-danger text-sm"></em>
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div> </div>
</div> </div>
@@ -44,7 +43,7 @@
@foreach ($jenisBangunan as $item) @foreach ($jenisBangunan as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="jenis_unit[]" type="checkbox" <input class="checkbox" name="jenis_unit[]" type="checkbox"
value="{{ $item->name }}" /> value="{{ $item->name }}" {{ in_array($item->name, old('jenis_unit', $forminspeksi['jenis_unit'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }} {{ $item->name }}
</label> </label>
@endforeach @endforeach
@@ -64,7 +63,7 @@
@foreach ($kondisiBangunan as $item) @foreach ($kondisiBangunan as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="kondisi_unit[]" type="checkbox" <input class="checkbox" name="kondisi_unit[]" type="checkbox"
value="{{ $item->name }}" /> value="{{ $item->name }}" {{ in_array($item->name, old('kondisi_unit', $forminspeksi['kondisi_unit'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }} {{ $item->name }}
</label> </label>
@endforeach @endforeach
@@ -75,7 +74,6 @@
</div> </div>
</div> </div>
<!-- Posisi Unit --> <!-- Posisi Unit -->
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Posisi Unit</label> <label class="form-label max-w-56">Posisi Unit</label>
@@ -86,7 +84,7 @@
@foreach ($ketinggianTanah as $item) @foreach ($ketinggianTanah as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="posisi_unit[]" type="checkbox" <input class="checkbox" name="posisi_unit[]" type="checkbox"
value="{{ $item->name }}" /> value="{{ $item->name }}" {{ in_array($item->name, old('posisi_unit', $forminspeksi['posisi_unit'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }} {{ $item->name }}
</label> </label>
@endforeach @endforeach
@@ -110,7 +108,7 @@
@foreach ($lantai as $item) @foreach ($lantai as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="lantai[]" type="checkbox" <input class="checkbox" name="lantai[]" type="checkbox"
value="{{ $item->name }}" /> value="{{ $item->name }}" {{ in_array($item->name, old('lantai', $forminspeksi['lantai'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }} {{ $item->name }}
</label> </label>
@endforeach @endforeach
@@ -132,7 +130,7 @@
@foreach ($viewUnit as $item) @foreach ($viewUnit as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="view[]" type="checkbox" <input class="checkbox" name="view[]" type="checkbox"
value="{{ $item->name }}" /> value="{{ $item->name }}" {{ in_array($item->name, old('view', $forminspeksi['view'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }} {{ $item->name }}
</label> </label>
@endforeach @endforeach
@@ -152,7 +150,7 @@
@foreach ($bentukTanah as $item) @foreach ($bentukTanah as $item)
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input class="checkbox" name="bentuk_unit[]" type="checkbox" <input class="checkbox" name="bentuk_unit[]" type="checkbox"
value="{{ $item->name }}" /> value="{{ $item->name }}" {{ in_array($item->name, old('bentuk_unit', $forminspeksi['bentuk_unit'] ?? [])) ? 'checked' : '' }} />
{{ $item->name }} {{ $item->name }}
</label> </label>
@endforeach @endforeach

View File

@@ -10,7 +10,7 @@
<div class="card min-w-full"> <div class="card min-w-full">
<div class="card-header"> <div class="card-header">
<h3 class="card-title"> <h3 class="card-title">
Form Inspeksi Data Pembanding
</h3> </h3>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<a href="{{ route('surveyor.show', ['id' => request('pembanding')]) }}?form=data-pembanding" <a href="{{ route('surveyor.show', ['id' => request('pembanding')]) }}?form=data-pembanding"
@@ -50,7 +50,7 @@
<span class="sort-icon"> </span> </span> <span class="sort-icon"> </span> </span>
</th> </th>
<th class="min-w-[50px]" data-datatable-column="actions" <th class="min-w-[50px]" data-datatable-column="actions"
style="min-width: 350px"id="dataPembanding2Header"> style="min-width: 350px"id="dataPembanding2Header">
Data Pembanding 1 Data Pembanding 1
</th> </th>
</tr> </tr>
@@ -61,23 +61,53 @@
Foto Foto
</td> </td>
<td> <td>
<img src="" class="img-responsive" alt="Gambar Pendamping" style="width: 10rem; height: 10rem; display: none;" id="uploadedImage1"> @php
<input type="file" class="file-input" placeholder="" onchange="previewImage(event, 'uploadedImage1')" /> $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']))
<img src="{{ asset('storage/' . $formFoto['object_jaminan'][0]['foto_object']) }}"
class="img-responsive" alt="Gambar Pendamping"
style="width: 10rem; height: 10rem;" id="uploadedImage1">
@else
<img src="#" class="img-responsive" alt="Gambar Pendamping"
style="width: 10rem; height: 10rem; display: none;" id="uploadedImage1">
@endif
<input type="file" class="file-input mt-2" placeholder=""
onchange="previewImage(event, 'uploadedImage1')" />
</td> </td>
<td class="text-center"> <td class="text-center">
<img src="" class="img-responsive" alt="Gambar Pendamping" style="width: 10rem; height: 10rem; display: none;" id="uploadedImage2"> <img src="" class="img-responsive" alt="Gambar Pendamping"
<input type="file" class="file-input" placeholder="" onchange="previewImage(event, 'uploadedImage2')" /> style="width: 10rem; height: 10rem; display: none;" id="uploadedImage2">
<input type="file" class="file-input" placeholder=""
onchange="previewImage(event, 'uploadedImage2')" />
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
Alamat <p>Alamat</p>
<p>Desa</p>
<p>Kecamatan</p>
<p>Kabupaten</p>
<p>Provinsi</p>
</td> </td>
<td> <td>
<input type="text" class="input" placeholder="Objek Penilaian" /> <input type="text" class="input" value="{{ isset($formIns['nama_jalan']) ? $formIns['nama_jalan'] . ' ' . $formIns['desa_kelurahan'] : ""}}" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" value="{{ isset($formIns['kecamatan']) ? $formIns['kecamatan'] : ""}}" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" value="{{ isset($formIns['kota_kabupaten']) ? $formIns['kota_kabupaten'] : ""}}" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" value="{{ isset($formIns['provinsi']) ? $formIns['provinsi'] : ""}}" />
</td> </td>
<td class="text-center"> <td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" /> <input type="text" class="input" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -91,44 +121,249 @@
<input type="text" class="input" placeholder="Data Pembanding 1" /> <input type="text" class="input" placeholder="Data Pembanding 1" />
</td> </td>
</tr> </tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="card-grid min-w-full" data-datatable="false" data-datatable-page-size="5"
data-datatable-state-save="false" id="data-table" data-api-url="">
<div class="card">
<div class="card-header py-5 flex-wrap ">
<h1>Informasi khusus</h1>
</div>
<div class="card-body">
<div class="scrollable-x-auto">
<table id="dataTable"
class="table table-auto table-border align-middle text-gray-700 font-medium text-sm"
data-datatable-table="true">
<thead>
<tr> <tr>
<th class="min-w-[250px]" data-datatable-column="code" style="min-width: 350px"> <td>
<span class="sort"> <span class="sort-label"> Nama </span> Luas Tanah
<span class="sort-icon"> </span> </span> </td>
</th> <td>
<th class="min-w-[250px]" data-datatable-column="name" style="min-width: 350px"> <input type="text" class="input" placeholder="Objek Penilaian" />
<span class="sort"> <span class="sort-label"> Objek Penilaian </span> </td>
<span class="sort-icon"> </span> </span> <td class="text-center">
</th> <input type="text" class="input" placeholder="Data Pembanding 1" />
<th class="min-w-[50px]" data-datatable-column="actions" </td>
style="min-width: 350px"id="dataPembanding2Header"> </tr>
Data Pembanding 1 <tr>
</th> <td>
Luas Bangunan
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
Tahun Bangunan
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr> </tr>
</thead>
<tbody>
<tr>
<td>
Estimasi Tahun Visual
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
Kepemilikan
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
Harga
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
Tinggi Lantai
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
Lebar Depan
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
Lebar Jalan
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
Sumber
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
Nomor tlp
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
Titik Lokasi
</td>
<td>
<div class="flex items-center">
<input type="text" class="input" placeholder="Objek Penilaian" value="{{ isset($formIns['kordinat_lat']) ? $formIns['kordinat_lat'] : ""}}" />
<input type="text" class="input" placeholder="Objek Penilaian" value="{{ isset($formIns['kordinat_lng']) ? $formIns['kordinat_lng'] : ""}}" />
</div>
</td>
<td class="text-center">
<div class="flex items-center">
<input type="text" class="input" placeholder="Data pembanding" />
<input type="text" class="input" placeholder="Data pembanding" />
</div>
</td>
</tr>
<tr>
<td>
Link Internet
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td colspan="3">Lokasi</td>
</tr>
<tr>
<td>
<p>Jarak Ke jalan utama</p>
<p>Lebar jalan depan aset (m)</p>
<p>Posisi kavling</p>
<p>Tingkat Keramaian (Occupancy)</p>
</td>
<td>
<input type="text" class="input mt-2" placeholder="Objek Penilaian" value="{{ isset($formIns['jarak_jalan_utama']) ? $formIns['jarak_jalan_utama'] : ""}}" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" value="{{ isset($formIns['jarak_cbd_point']) ? $formIns['jarak_cbd_point'] : ""}}" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" value="{{ isset($formIns['posisi_kavling']) ? $formIns['posisi_kavling'][0] : ""}}" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" value="{{ isset($formIns['tingkat_keramaian']) ? $formIns['tingkat_keramaian'][0] : ""}}" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td colspan="3">Karakteristik Fisik</td>
</tr>
<tr>
<td>
<p>Kondisi Fisik Tanah</p>
<p>Beda Ketinggian dengan Jalan</p>
<p>Bentuk Tanah</p>
<p>Lebar Depan</p>
<p>Fasos Fasum</p>
<p>Lain-lain</p>
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" value="{{ isset($formIns['kondisi_fisik_tanah']) ? $formIns['kondisi_fisik_tanah'][0] : ""}}" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" value="{{ isset($formIns['ketinggian_jalan']) ? $formIns['ketinggian_jalan'][0] : ""}}" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" value="{{ isset($formIns['bentuk_tanah']) ? $formIns['bentuk_tanah'][0] : ""}}" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" value="{{ isset($formIns['bentuk_tanah']) ? $formIns['bentuk_tanah'][0] : ""}}" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
Karakteristik Ekonomi
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
</td>
<td class="text-center">
<input type="text" class="input" placeholder="Data Pembanding 1" />
</td>
</tr>
<tr>
<td>
<p>Pengunaan</p>
<p>Zonasi/Tata Kota</p>
<p> KDB, KLB, KTB, KDH & Peraturan Lainnya</p>
</td>
<td>
<input type="text" class="input" placeholder="Objek Penilaian" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" />
</td>
<td>
<input type="text" class="input" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Data Pembanding 1" />
<input type="text" class="input mt-2" placeholder="Objek Penilaian" />
</td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@@ -142,24 +377,23 @@
document.getElementById('addColumnBtn').addEventListener('click', function() { document.getElementById('addColumnBtn').addEventListener('click', function() {
columnCount++; columnCount++;
// Create new header cell
const newHeader = document.createElement('th'); const newHeader = document.createElement('th');
newHeader.className = 'min-w-[350px] text-center'; newHeader.className = 'min-w-[350px] text-center';
newHeader.style = 'min-width: 350px'; newHeader.style.minWidth = '350px';
newHeader.innerHTML = `Data Pembanding ${columnCount}`; newHeader.textContent = `Data Pembanding ${columnCount}`;
document.querySelector('#dataTable thead tr').appendChild(newHeader); document.querySelector('#dataTable thead tr').appendChild(newHeader);
// Tampilkan tombol hapus kolom
document.getElementById('removeColumnBtn').style.display = 'inline-block'; document.getElementById('removeColumnBtn').style.display = 'inline-block';
// Tambahkan sel baru ke setiap baris di tbody
const rows = document.querySelectorAll('#dataTable tbody tr'); const rows = document.querySelectorAll('#dataTable tbody tr');
rows.forEach((row, index) => { rows.forEach((row, index) => {
const newCell = document.createElement('td'); const newCell = document.createElement('td');
newCell.className = 'text-center'; newCell.className = 'text-center';
// Hanya baris pertama yang memiliki input file
if (index === 0) { if (index === 0) {
// Buat elemen gambar dan input file untuk baris pertama
const imgElement = document.createElement('img'); const imgElement = document.createElement('img');
imgElement.src = ''; imgElement.src = '';
imgElement.className = 'img-responsive'; imgElement.className = 'img-responsive';
@@ -167,7 +401,7 @@
imgElement.style.width = '10rem'; imgElement.style.width = '10rem';
imgElement.style.height = '10rem'; imgElement.style.height = '10rem';
imgElement.style.display = 'none'; imgElement.style.display = 'none';
imgElement.id = `uploadedImage${columnCount}-${index + 1}`; // ID unik untuk setiap gambar imgElement.id = `uploadedImage${columnCount}-${index + 1}`;
const fileInput = document.createElement('input'); const fileInput = document.createElement('input');
fileInput.type = 'file'; fileInput.type = 'file';
@@ -177,21 +411,30 @@
previewImage(event, imgElement.id); previewImage(event, imgElement.id);
}; };
// Tambahkan elemen gambar dan input file ke sel baru
newCell.appendChild(imgElement); newCell.appendChild(imgElement);
newCell.appendChild(fileInput); newCell.appendChild(fileInput);
} else { } else {
// Untuk baris lainnya, hanya tambahkan input teks // Other rows get text inputs
const textInput = document.createElement('input'); const numInputs = row.querySelectorAll('input').length;
textInput.type = 'text'; for (let i = 0; i < numInputs; i++) {
textInput.className = 'input'; const textInput = document.createElement('input');
textInput.placeholder = `Data Pembanding ${columnCount}`; textInput.type = 'text';
newCell.appendChild(textInput); textInput.className = 'input mt-2';
textInput.placeholder = `Data Pembanding ${columnCount}`;
newCell.appendChild(textInput);
}
} }
// Tambahkan sel baru ke baris
row.appendChild(newCell); row.appendChild(newCell);
}); });
// Update colspan on label row
const colspanRow = document.createElement('tr');
const colspanCell = document.createElement('td');
colspanCell.colSpan = 3 + columnCount - 1;
colspanCell.textContent = `Data Pembanding ${columnCount}`;
colspanRow.appendChild(colspanCell);
document.querySelector('#dataTable tbody').insertBefore(colspanRow, rows[0]);
}); });
document.getElementById('removeColumnBtn').addEventListener('click', function() { document.getElementById('removeColumnBtn').addEventListener('click', function() {

View File

@@ -10,7 +10,7 @@
<div class="card min-w-full"> <div class="card min-w-full">
<div class="card-header"> <div class="card-header">
<h3 class="card-title"> <h3 class="card-title">
Data Jaminan Denah
</h3> </h3>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<a href="{{ route('surveyor.show', ['id' => request('denah')]) }}?form=denah" <a href="{{ route('surveyor.show', ['id' => request('denah')]) }}?form=denah"
@@ -140,9 +140,10 @@
</label> </label>
<div class="w-full grid gap-5"> <div class="w-full grid gap-5">
<img id="foto_denah-preview" <img id="foto_denah-preview"
src="{{ isset($formFoto['foto_denah']) ? asset('storage/' . old('foto_denah', $formFoto['foto_denah'])) : '#' }}" src="{{ isset($formDenah['foto_denah']) ? asset('storage/' . old('foto_denah', $formDenah['foto_denah'])) : '' }}"
alt="Gambar foto_denah" style="{{ isset($formFoto['foto_denah']) ? 'width: 30rem;' : 'display: none;' }}"> alt="Gambar foto_denah" style="{{ isset($formDenah['foto_denah']) ? 'width: 30rem;' : 'display: none;' }}">
<div class="input-group w-full flex gap-2"> <div class="input-group w-full flex gap-2">
<input type="file" <input type="file"
@@ -175,9 +176,9 @@
</div> </div>
</div> </div>
@error('luas')
<em class="alert text-danger text-sm">{{ $message }}</em> <em id="error-luas" class="alert text-danger text-sm"></em>
@enderror
</div> </div>
</div> </div>
<div class="flex justify-end gap-2" style="margin-right: 20px; margin-top: 20px"> <div class="flex justify-end gap-2" style="margin-right: 20px; margin-top: 20px">

View File

@@ -79,16 +79,13 @@
</div> </div>
</div> </div>
<form id="formFoto" method="POST" class="grid gap-5" enctype="multipart/form-data"> <form id="formFoto" method="POST" class="grid gap-5" enctype="multipart/form-data">
<input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}"> <input type="hidden" name="permohonan_id" value="{{ $permohonan->id }}">
<input type="hidden" name="jenis_jaminan_id" value="{{ request('jenis_jaminan') }}"> <input type="hidden" name="jenis_jaminan_id" value="{{ request('jenis_jaminan') }}">
<div class="card bg-white rounded-lg shadow-md"> <div class="card bg-white rounded-lg shadow-md">
<div class="card-body"> <div class="card-body">
<div class=" text-white py-4 px-6 flex items-center justify-between"> <div class=" text-white py-4 flex items-center justify-between">
<h1 class="text-md font-medium text-gray-900">Rute Menuju Lokasi</h1> <h1 class="text-md font-medium text-gray-900">Rute Menuju Lokasi</h1>
<button id="btnRute" type="button" class="btn btn-primary btn-sm"> <button id="btnRute" type="button" class="btn btn-primary btn-sm">
<i class="ki-filled ki-plus text-lg"></i> <i class="ki-filled ki-plus text-lg"></i>
@@ -131,6 +128,7 @@
<i class="ki-filled ki-trash"></i> <i class="ki-filled ki-trash"></i>
</button> </button>
</div> </div>
</div>
@endforeach @endforeach
@else @else
<div id="inputContainerRute" style="margin-top: 10px"> <div id="inputContainerRute" style="margin-top: 10px">
@@ -162,7 +160,6 @@
</div> </div>
<span class="alert text-danger text-sm"></span> <span class="alert text-danger text-sm"></span>
</div> </div>
@endif @endif
<div id="inputContainerGerbang" style="margin-top: 10px"> <div id="inputContainerGerbang" style="margin-top: 10px">
<div class="flex w-full items-center justify-center gap-4 mb-4"> <div class="flex w-full items-center justify-center gap-4 mb-4">
@@ -191,14 +188,16 @@
<div id="ruteLainnya" style="margin-top: 10px"> <div id="ruteLainnya" style="margin-top: 10px">
@if (isset($formFoto['foto_rute_lainnya']) && is_array($formFoto['foto_rute_lainnya'])) @if (isset($formFoto['foto_rute_lainnya']) && is_array($formFoto['foto_rute_lainnya']))
@foreach ($formFoto['foto_rute_lainnya'] as $Index => $photo) @foreach ($formFoto['foto_rute_lainnya'] as $Index => $photo)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5" id="photoContainer"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5"
id="photoContainer">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Masukkan nama rute lainnya Masukkan nama rute lainnya
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col lg:flex-row gap-2 w-full"> <div class="flex flex-col lg:flex-row gap-2 w-full">
<div class="flex flex-wrap items-baseline px-2"> <div class="flex flex-wrap items-baseline px-2">
<input class="input" type="text" name="name_rute_lainnya[]" value="{{$photo['name_rute_lainnya']}}"> <input class="input" type="text" name="name_rute_lainnya[]"
value="{{ $photo['name_rute_lainnya'] }}">
</div> </div>
<div class="input-group w-full flex flex-col gap-2"> <div class="input-group w-full flex flex-col gap-2">
<img id="foto_rute_lainnya-preview-" <img id="foto_rute_lainnya-preview-"
@@ -208,10 +207,10 @@
<div class="input-group w-full flex gap-2"> <div class="input-group w-full flex gap-2">
<input type="file" name="foto_rute_lainnya[]" <input type="file" name="foto_rute_lainnya[]"
class="file-input file-input-bordered w-full" class="file-input file-input-bordered w-full"
value="{{ $photo['foto_rute_lainnya'] }}" value="{{ $photo['foto_rute_lainnya'] }}" accept="image/*"
accept="image/*" onchange="previewImage(this, 'foto_rute_lainnya-preview-{{ $index }}')"> onchange="previewImage(this, 'foto_rute_lainnya-preview-{{ $index }}')">
<button type="button" id="btnCamera-{{ $index }}" class="btn btn-light" <button type="button" id="btnCamera-{{ $index }}"
data-modal-toggle="#cameraModal"> class="btn btn-light" data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera <i class="ki-outline ki-abstract-33"></i> Camera
</button> </button>
</div> </div>
@@ -229,19 +228,16 @@
<button type="button" class="btn btn-primary btn-sm" id="btnAddMore" style="margin-top: 10px"> <button type="button" class="btn btn-primary btn-sm" id="btnAddMore" style="margin-top: 10px">
<i class="ki-outline ki-plus text-2sm"></i> Lainnya <i class="ki-outline ki-plus text-2sm"></i> Lainnya
</button> </button>
</div>
</div> </div>
</div> </div>
<div class="card bg-white rounded-lg shadow-md"> <div class="card bg-white rounded-lg shadow-md">
<div class="card-body"> <div class="card-body">
<div class=" text-white py-4 px-6 flex items-center justify-between"> <div class="text-white py-4 flex items-center justify-between">
<h1 class="text-md font-medium text-gray-900">Objek Jaminan</h1> <h1 class="text-md font-medium text-gray-900">Objek Jaminan</h1>
</div> </div>
@php @php
// Array untuk menyimpan kategori yang sudah diproses
$processedCategories = []; $processedCategories = [];
@endphp @endphp
@@ -334,22 +330,20 @@
} }
@endphp @endphp
@if (count($objekViews) > 0) @if (count($objekViews) > 0)
@foreach ($objekViews as $view) @foreach ($objekViews as $view)
<div class="flex flex-wrap gap-4 {{ !$loop->first ? 'mt-2' : '' }}"> <div class="flex flex-wrap gap-4 {{ !$loop->first ? 'mt-2' : '' }}">
<div class="flex w-full gap-4"> <div class="flex w-full gap-4">
<label class="form-label max-w-56"><span <label class="form-label max-w-56"><span
class="form-label">{{ $view['label'] }}</span> class="form-label">{{ $view['label'] }}</span></label>
</label>
<input type="hidden" class="form-control" <input type="hidden" class="form-control"
name="name_objek[]" value="{{ $view['label'] }}" /> name="name_objek[]" value="{{ $view['label'] }}" />
<div class="w-full grid gap-5"> <div class="w-full grid gap-5">
<img id="foto_object_jaminan_preview_{{ $view['index'] }}" <img id="foto_object_jaminan_preview_{{ $view['index'] }}"
src="{{ isset($formFoto['object_jaminan'][$view['index']]['foto_object']) ? asset('storage/' . $formFoto['object_jaminan'][$view['index']]['foto_object']) : '' }}" src="{{ isset($formFoto['object_jaminan'][$view['index']]['foto_object']) ? asset('storage/' . $formFoto['object_jaminan'][$view['index']]['foto_object']) : '' }}"
alt="{{ $view['label'] }}" class="mb-2 w-48 h-auto" alt="{{ $view['label'] }}" class="mb-2 w-48 h-auto"
onchange="previewImage(this, 'foto_object_jaminan_preview_{{ $view['index'] }}')" style="{{ isset($formFoto['object_jaminan'][$view['index']]['foto_object']) ? '' : 'display: none;' }} width: 30rem;">
style="{{ isset($formFoto['foto_object']) ? '' : 'display: none;' }} width: 30rem;">
<div class="input-group w-full flex gap-2"> <div class="input-group w-full flex gap-2">
<input type="file" name="foto_objek[]" <input type="file" name="foto_objek[]"
class="file-input file-input-bordered w-full" class="file-input file-input-bordered w-full"
@@ -357,11 +351,10 @@
<button type="button" id="btnCamera" <button type="button" id="btnCamera"
class="btn btn-light" class="btn btn-light"
data-modal-toggle="#cameraModal"> data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera <i class="ki-outline ki-abstract-33"></i> Camera
</button> </button>
</div> </div>
<textarea name="deskripsi_objek[]" class="textarea" rows="3" placeholder="Deskripsi">{{ isset($formFoto['object_jaminan'][$view['index']]) ? str_replace($view['label'] . ': ', '', $formFoto['object_jaminan'][$view['index']]['deskripsi_objek']) : '' }}</textarea>
<textarea name="deskripsi_objek[]" class="textarea" rows="3" placeholder="Deskripsi">{{ isset($formFoto) && isset($formFoto['object_jaminan'][$view['index']]) ? str_replace($view['label'] . ': ', '', $formFoto['object_jaminan'][$view['index']]['deskripsi_objek']) : '' }}</textarea>
</div> </div>
</div> </div>
<span class="alert text-danger text-sm"></span> <span class="alert text-danger text-sm"></span>
@@ -370,7 +363,6 @@
@endif @endif
@php @php
// Tandai kategori sebagai sudah diproses
$processedCategories[] = $kategori; $processedCategories[] = $kategori;
@endphp @endphp
@endif @endif
@@ -381,8 +373,8 @@
@endforeach @endforeach
<div class="flex flex-wrap gap-4 w-full"> <div class="flex flex-wrap gap-4 w-full">
<div class="w-full "> <div class="w-full">
<div class=" text-white py-4 px-6 flex items-center justify-between w-full"> <div class="text-white py-4 flex items-center justify-between w-full">
<label class="form-label"> <label class="form-label">
<span class="form-label">Lantai</span> <span class="form-label">Lantai</span>
</label> </label>
@@ -399,7 +391,6 @@
<span class="form-label">Foto Lantai 1</span> <span class="form-label">Foto Lantai 1</span>
</label> </label>
<div class="w-full grid gap-5"> <div class="w-full grid gap-5">
<img src="{{ asset('storage/' . old('foto_lantai_unit', $item['foto_lantai_unit'])) }}" <img src="{{ asset('storage/' . old('foto_lantai_unit', $item['foto_lantai_unit'])) }}"
alt="Gambar Pendamping" style="width: 30rem;"> alt="Gambar Pendamping" style="width: 30rem;">
<input type="hidden" name="name_lantai_unit[]" value="lantai"> <input type="hidden" name="name_lantai_unit[]" value="lantai">
@@ -411,17 +402,13 @@
<i class="ki-filled ki-trash"></i> <i class="ki-filled ki-trash"></i>
</button> </button>
</div> </div>
</div> </div>
<span id="inputLantaiError" class="alert text-danger text-sm"></span> <span id="inputLantaiError" class="alert text-danger text-sm"></span>
</div> </div>
@endforeach @endforeach
@else @else
<div id="inputContainerLantai" class="w-full"> <div id="inputContainerLantai" class="w-full">
<div class="flex w-full items-center justify-center gap-4"> <div class="flex w-full items-center justify-center gap-4">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
<span class="form-label">Foto Lantai 1</span> <span class="form-label">Foto Lantai 1</span>
</label> </label>
@@ -432,7 +419,7 @@
capture="camera"> capture="camera">
<button type="button" id="btnCamera" class="btn btn-light" <button type="button" id="btnCamera" class="btn btn-light"
data-modal-toggle="#cameraModal"> data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera <i class="ki-outline ki-abstract-33"></i> Camera
</button> </button>
</div> </div>
<button type="button" class="btn btn-danger btn-sm delete-btn" <button type="button" class="btn btn-danger btn-sm delete-btn"
@@ -448,41 +435,32 @@
<div id="inputContainerBasement" class="w-full" style="margin-top: 10px"> <div id="inputContainerBasement" class="w-full" style="margin-top: 10px">
<div class="flex w-full items-center justify-center gap-4"> <div class="flex w-full items-center justify-center gap-4">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
<span class="form-label">Basement</span> <span class="form-label">Basement</span>
</label> </label>
<div class="input-group w-full flex flex-col gap-2"> <div class="input-group w-full flex flex-col gap-2">
<input type="hidden" name="name_basement" value="basement"> <input type="hidden" name="name_basement" value="basement">
<img id="foto_basement_preview"
<img id="foto_basement" src="{{ isset($formFoto['foto_basement']) ? asset('storage/' . old('foto_basement', $formFoto['foto_basement'])) : '#' }}"
src="{{ isset($formFoto['foto_basement']) ? asset('storage/' . old('foto_basement', $formFoto['foto_basement'])) : '#' }}" alt="Gambar foto_basement" style="width: 30rem;"
alt="Gambar foto_basement" style="width: 30rem;" onerror="this.style.display='none';"
onerror="this.style.display='none';" onchange="previewImage(this, 'foto_basement_preview')">
onchange="previewImage(this, 'foto_basement')"> <div class="input-group w-full flex gap-2">
<div class="input-group w-full flex gap-2"> <input id="inputBasement" type="file" name="foto_basement"
<input id="inputLantai" type="file" name="foto_basement" class="file-input file-input-bordered w-full" accept="image/*" capture="camera">
class="file-input file-input-bordered w-full" accept="image/*" <button type="button" id="btnCamera" class="btn btn-light" data-modal-toggle="#cameraModal">
capture="camera"> <i class="ki-outline ki-abstract-33"></i> Camera
<button type="button" id="btnCamera" class="btn btn-light" </button>
data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera
</button>
</div>
</div> </div>
<button type="button" class="btn btn-danger btn-sm delete-btn" </div>
style="display: none;" id="btnDelete"> <button type="button" class="btn btn-danger btn-sm delete-btn" style="display: none;" id="btnDelete">
<i class="ki-filled ki-trash"></i> <i class="ki-filled ki-trash"></i>
</button> </button>
</div> </div>
<span id="alertBasement" class="alert text-danger text-sm"></span> <span id="alertBasement" class="alert text-danger text-sm"></span>
</div>
</div> <div id="lantaiLainnya" style="margin-top: 10px"></div>
<div id="lantaiLainnya" style="margin-top: 10px">
</div>
<button type="button" class="btn btn-primary btn-sm" id="btnAddMoreObject" <button type="button" class="btn btn-primary btn-sm" id="btnAddMoreObject"
style="margin-top: 10px"> style="margin-top: 10px">
@@ -494,81 +472,68 @@
</div> </div>
</div> </div>
<div class="card bg-white rounded-lg shadow-md"> <div class="card bg-white rounded-lg shadow-md">
<div class="card-body"> <div class="card-body">
<div class=" text-white py-4 px-6 flex items-center justify-between"> <div class="text-white py-4 flex items-center justify-between">
<h1 class="text-md font-medium text-gray-900">Lingkungan</h1> <h1 class="text-md font-medium text-gray-900">Lingkungan</h1>
<button id="btnLingkungan" type="button" class="btn btn-primary btn-sm"> <button id="btnLingkungan" type="button" class="btn btn-primary btn-sm">
<i class="ki-filled ki-plus text-lg"></i> <i class="ki-filled ki-plus text-lg"></i>
</button> </button>
</div> </div>
@if (isset($formFoto['lingkungan']) && !is_array($formFoto['lingkungan']) && !empty($formFoto['lingkungan']))
@foreach ($formFoto['lingkungan'] as $item)
<div id="inputContainerLingkungan" style="margin-top: 10px">
<div class="flex w-full items-center justify-center gap-4 mb-4">
<label class="form-label max-w-56">
<span class="form-label">Lingkungan</span>
</label>
<div class="w-full grid gap-5">
<img src="{{ asset('storage/' . old('foto_lingkungan', $item['foto_lingkungan'])) }}"
alt="Gambar Pendamping" style="width: 30rem;">
<div class="input-group w-full flex gap-2">
<input type="hidden" name="name_lingkungan[]" value="lingkungan">
<input id="inputLingkungan" type="file" name="foto_lingkungan[]"
class="file-input file-input-bordered w-full" accept="image/*"
capture="camera">
<button type="button" id="btnCamera" class="btn btn-light"
data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera
</button>
</div>
<button type="button" class="btn btn-danger btn-sm delete-btn"
style="display: none;" id="btnDelete">
<i class="ki-filled ki-trash"></i>
</button>
</div>
</div>
<span class="alert text-danger text-sm"></span>
@if (isset($formFoto['lingkungan']) && is_array($formFoto['lingkungan']) && count($formFoto['lingkungan']) > 0)
@foreach ($formFoto['lingkungan'] as $key => $item)
<div id="inputContainerLingkungan_{{ $key }}" style="margin-top: 10px">
<div class="flex w-full items-center justify-center gap-4 mb-4">
<label class="form-label max-w-56">
<span class="form-label">Lingkungan</span>
</label>
<div class="w-full grid gap-5">
<img id="foto_lingkungan_preview_{{ $key }}"
src="{{ asset('storage/' . old('foto_lingkungan.' . $key, $item['foto_lingkungan'])) }}"
alt="Gambar Lingkungan" style="width: 30rem;">
<input type="hidden" name="name_lingkungan[]" value="lingkungan">
<div class="input-group w-full flex gap-2">
<input id="inputLingkungan_{{ $key }}" type="file" name="foto_lingkungan[]"
class="file-input file-input-bordered w-full" accept="image/*" capture="camera">
<button type="button" id="btnCamera" class="btn btn-light" data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera
</button>
</div> </div>
@endforeach <button type="button" class="btn btn-danger btn-sm delete-btn" style="display: none;" id="btnDelete">
@else <i class="ki-filled ki-trash"></i>
<div id="inputContainerLingkungan" style="margin-top: 10px"> </button>
<div class="flex w-full items-center justify-center gap-4 mb-4"> </div>
<label class="form-label max-w-56">
<span class="form-label">Lingkungan</span>
</label>
<div class="input-group w-full flex gap-2">
<input type="hidden" name="name_lingkungan[]" value="lingkungan">
<input id="inputLingkungan" type="file" name="foto_lingkungan[]"
class="file-input file-input-bordered w-full" accept="image/*" capture="camera">
<button type="button" id="btnCamera" class="btn btn-light"
data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera
</button>
</div>
<button type="button" class="btn btn-danger btn-sm delete-btn" style="display: none;"
id="btnDelete">
<i class="ki-filled ki-trash"></i>
</button>
</div>
<span class="alert text-danger text-sm"></span>
</div> </div>
@endif <span class="alert text-danger text-sm"></span>
</div>
@endforeach
@else
<div id="inputContainerLingkungan_0" style="margin-top: 10px">
<div class="flex w-full items-center justify-center gap-4 mb-4">
<label class="form-label max-w-56">
<span class="form-label">Lingkungan</span>
</label>
<div class="input-group w-full flex gap-2">
<input type="hidden" name="name_lingkungan[]" value="lingkungan">
<input id="inputLingkungan_0" type="file" name="foto_lingkungan[]"
class="file-input file-input-bordered w-full" accept="image/*" capture="camera">
<button type="button" id="btnCamera" class="btn btn-light" data-modal-toggle="#cameraModal">
<i class="ki-outline ki-abstract-33"></i> Camera
</button>
</div>
<button type="button" class="btn btn-danger btn-sm delete-btn" style="display: none;" id="btnDelete">
<i class="ki-filled ki-trash"></i>
</button>
</div>
<span class="alert text-danger text-sm"></span>
</div>
@endif
</div> </div>
</div> </div>
<div class="card bg-white rounded-lg shadow-md"> <div class="card bg-white rounded-lg shadow-md">
<div class="card-body"> <div class="card-body">
<div class=" text-white py-4 flex items-center justify-between">
<div class=" text-white py-4 px-6 flex items-center justify-between">
<h1 class="text-md font-medium text-gray-900">Pendamping</h1> <h1 class="text-md font-medium text-gray-900">Pendamping</h1>
</div> </div>
<div style="margin-top: 5px"> <div style="margin-top: 5px">
@@ -619,9 +584,8 @@
</div> </div>
</form> </form>
{{--
</div>
</div> --}}
</div> </div>
@@ -720,24 +684,14 @@
@push('scripts') @push('scripts')
<script> <script>
// function previewImage(input, previewId) {
// if (input.files && input.files[0]) {
// var reader = new FileReader();
// reader.onload = function(e) {
// $('#' + previewId).attr('src', e.target.result).show();
// }
// reader.readAsDataURL(input.files[0]);
// } else {
// $('#' + previewId).hide();
// }
// }
function submitFoto() { function submitFoto() {
const formElement = $('#formFoto')[0]; const formElement = $('#formFoto')[0];
const formData = new FormData(formElement); const formData = new FormData(formElement);
for (const [key, value] of formData.entries()) { // for (const [key, value] of formData.entries()) {
console.log(`Key: ${key}, Value: ${value}`); // console.log(`Key: ${key}, Value: ${value}`);
} // }
// Disable the button and show the spinner // Disable the button and show the spinner
$('#saveButtonFoto').prop('disabled', true); $('#saveButtonFoto').prop('disabled', true);
@@ -755,11 +709,11 @@
'X-CSRF-TOKEN': '{{ csrf_token() }}' 'X-CSRF-TOKEN': '{{ csrf_token() }}'
}, },
success: function(response) { success: function(response) {
// if (response.success) { if (response.success) {
// window.location.href = window.location.href =
// '{{ route('surveyor.show', ['id' => $permohonan->id]) }}?form=foto'; '{{ route('surveyor.show', ['id' => $permohonan->id]) }}?form=foto';
// } }
console.log(response);
}, },
error: function(xhr, status, error) { error: function(xhr, status, error) {
let errors = xhr.responseJSON?.errors; let errors = xhr.responseJSON?.errors;
@@ -818,7 +772,7 @@
<div class="flex flex-wrap items-baseline px-2"> <div class="flex flex-wrap items-baseline px-2">
<input class="input" type="text" name="name_${inputName}[]"> <input class="input" type="text" name="name_${inputName}[]">
</div> </div>
<div class="input-group w-full flex flex-col gap-2"> <div class=" w-full flex flex-col gap-2">
<img id="foto_${inputName}-preview" <img id="foto_${inputName}-preview"
src="{{ isset($formFoto['gerbang']) ? asset('storage/' . $formFoto['gerbang']) : '' }}" src="{{ isset($formFoto['gerbang']) ? asset('storage/' . $formFoto['gerbang']) : '' }}"
alt="Foto Gerbong" class="mt-2 max-w-full h-auto" alt="Foto Gerbong" class="mt-2 max-w-full h-auto"
@@ -826,7 +780,7 @@
<div class="input-group w-full flex gap-2"> <div class="input-group w-full flex gap-2">
<input id="inputPendamping" type="file" name="foto_${inputName}[]" <input id="inputLainnya" type="file" name="foto_${inputName}[]"
class="file-input file-input-bordered w-full" accept="image/*" capture="camera" class="file-input file-input-bordered w-full" accept="image/*" capture="camera"
onchange="previewImage(this, 'foto_${inputName}-preview')" onchange="previewImage(this, 'foto_${inputName}-preview')"
> >
@@ -1086,3 +1040,7 @@
}); });
</script> </script>
@endpush @endpush

View File

@@ -100,22 +100,26 @@
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2"> <div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap"> <label class="form-label flex items-center gap-3 text-nowrap">
<input onclick="toggleJenisAsset('jenis_asset')" type="radio" class="radio" <input onclick="toggleJenisAsset('jenis_asset')" type="radio" class="radio"
name="jenis_asset" value="sesuai" {{ old('jenis_asset', $forminspeksi['jenis_asset'] ?? '') == 'sesuai' ? 'checked' : '' }}> name="jenis_asset" value="sesuai"
{{ old('jenis_asset', $forminspeksi['jenis_asset'] ?? '') == 'sesuai' ? 'checked' : '' }}>
<span class="ml-2">Ya</span> <span class="ml-2">Ya</span>
</label> </label>
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input onclick="toggleJenisAsset('jenis_asset')" type="radio" class="radio" <input onclick="toggleJenisAsset('jenis_asset')" type="radio" class="radio"
name="jenis_asset" value="tidak sesuai" {{ old('jenis_asset', $forminspeksi['jenis_asset'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}> name="jenis_asset" value="tidak sesuai"
{{ old('jenis_asset', $forminspeksi['jenis_asset'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
<span class="ml-2">Tidak</span> <span class="ml-2">Tidak</span>
</label> </label>
<!-- Select dropdown untuk "Tidak Sesuai" --> <!-- Select dropdown untuk "Tidak Sesuai" -->
<select id="jenis_asset" <select id="jenis_asset"
class="input w-full @error('jenis_asset_tidak_sesuai') border-danger bg-danger-light @enderror" class="input w-full @error('jenis_asset_tidak_sesuai') border-danger bg-danger-light @enderror"
name="jenis_asset_tidak_sesuai" style="{{ old('jenis_asset', $forminspeksi['jenis_asset'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}"> name="jenis_asset_tidak_sesuai"
style="{{ old('jenis_asset', $forminspeksi['jenis_asset'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
<option value="">Select Jenis asset</option> <option value="">Select Jenis asset</option>
@if (isset($arahMataAngin)) @if (isset($arahMataAngin))
@foreach ($arahMataAngin as $item) @foreach ($arahMataAngin as $item)
<option value="{{ $item->name }}" {{ old('jenis_asset_tidak_sesuai', $forminspeksi['jenis_asset_tidak_sesuai'] ?? '') == $item->name ? 'selected' : '' }}> <option value="{{ $item->name }}"
{{ old('jenis_asset_tidak_sesuai', $forminspeksi['jenis_asset_tidak_sesuai'] ?? '') == $item->name ? 'selected' : '' }}>
{{ $item->name }} {{ $item->name }}
</option> </option>
@endforeach @endforeach
@@ -133,11 +137,7 @@
@foreach ($permohonan->debiture->documents as $dokumen) @foreach ($permohonan->debiture->documents as $dokumen)
<span class="text-2sm text-gray-700"> <span class="text-2sm text-gray-700">
{{ $dokumen->pemilik->address ?? '' }}, {{ formatAlamat($dokumen) }}
<br> {{ $dokumen->pemilik->village->name ?? '' }},
{{ $dokumen->pemilik->district->name ?? '' }}, {{ $dokumen->pemilik->city->name ?? '' }},
{{ $dokumen->pemilik->province->name ?? '' }} -
{{ $dokumen->pemilik->village->postal_code ?? '' }}
</span> </span>
@endforeach @endforeach
@@ -145,22 +145,25 @@
<div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2"> <div class="grid grid-cols-3 md:grid-cols-3 gap-4 mt-2">
<label class="form-label flex items-center gap-3 text-nowrap"> <label class="form-label flex items-center gap-3 text-nowrap">
<input onclick="toggleTidakSesuai('alamat_sesuai','alamat_tidak_sesuai')" type="radio" <input onclick="toggleTidakSesuai('alamat_sesuai','alamat_tidak_sesuai')" type="radio"
class="radio" name="alamat_sesuai" value="sesuai" {{ old('alamat_sesuai', $forminspeksi['alamat_sesuai'] ?? '') == 'sesuai' ? 'checked' : '' }}> class="radio" name="alamat_sesuai" value="sesuai"
{{ old('alamat_sesuai', $forminspeksi['alamat_sesuai'] ?? '') == 'sesuai' ? 'checked' : '' }}>
<span class="ml-2">Ya</span> <span class="ml-2">Ya</span>
</label> </label>
<label class="form-label flex items-center gap-2.5 text-nowrap"> <label class="form-label flex items-center gap-2.5 text-nowrap">
<input onclick="toggleTidakSesuai('alamat_sesuai','alamat_tidak_sesuai')" type="radio" <input onclick="toggleTidakSesuai('alamat_sesuai','alamat_tidak_sesuai')" type="radio"
class="radio" name="alamat_sesuai" value="tidak sesuai" {{ old('alamat_sesuai', $forminspeksi['alamat_sesuai'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}> class="radio" name="alamat_sesuai" value="tidak sesuai"
{{ old('alamat_sesuai', $forminspeksi['alamat_sesuai'] ?? '') == 'tidak sesuai' ? 'checked' : '' }}>
<span class="ml-2">Tidak</span> <span class="ml-2">Tidak</span>
</label> </label>
<input type="text" name="alamat_tidak_sesuai" id="alamat_tidak_sesuai" <input type="text" name="alamat_tidak_sesuai" id="alamat_tidak_sesuai"
class="input w-full" placeholder="Masukan jenis asset Tanah" class="input w-full" placeholder="Masukan jenis asset Tanah"
value="{{ old('alamat_tidak_sesuai', $forminspeksi['alamat_tidak_sesuai'] ?? '') }}" style="{{ old('alamat_sesuai', $forminspeksi['alamat_sesuai'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}"> value="{{ old('alamat_tidak_sesuai', $forminspeksi['alamat_tidak_sesuai'] ?? '') }}"
style="{{ old('alamat_sesuai', $forminspeksi['alamat_sesuai'] ?? '') == 'tidak sesuai' ? '' : 'display: none;' }}">
</div> </div>
<em id="error-alamat" class="alert text-danger text-sm"></em> <em id="error-alamat" class="alert text-danger text-sm"></em>
</div> </div>
<div class="grid gap-2 mt-5" > <div class="grid gap-2 mt-5">
@php @php
$inputDataLoaksi = []; $inputDataLoaksi = [];
@@ -170,7 +173,8 @@
'index' => 0, 'index' => 0,
'name' => 'nama_jalan', 'name' => 'nama_jalan',
'value' => old( 'value' => old(
'nama_jalan', isset($forminspeksi['nama_jalan']) ? $forminspeksi['nama_jalan'] : '', 'nama_jalan',
isset($forminspeksi['nama_jalan']) ? $forminspeksi['nama_jalan'] : '',
), ),
], ],
@@ -179,32 +183,36 @@
'index' => 3, 'index' => 3,
'name' => 'desa_kelurahan', 'name' => 'desa_kelurahan',
'value' => old( 'value' => old(
'desa_kelurahan', isset($forminspeksi['desa_kelurahan']) ? $forminspeksi['desa_kelurahan'] : '', 'desa_kelurahan',
) isset($forminspeksi['desa_kelurahan']) ? $forminspeksi['desa_kelurahan'] : '',
),
], ],
[ [
'label' => 'Kecamatan', 'label' => 'Kecamatan',
'index' => 4, 'index' => 4,
'name' => 'kecamatan', 'name' => 'kecamatan',
'value' => old( 'value' => old(
'kecamatan', isset($forminspeksi['kecamatan']) ? $forminspeksi['kecamatan'] : '', 'kecamatan',
) isset($forminspeksi['kecamatan']) ? $forminspeksi['kecamatan'] : '',
),
], ],
[ [
'label' => 'Kota/Kabupaten', 'label' => 'Kota/Kabupaten',
'index' => 5, 'index' => 5,
'name' => 'kota_kabupaten', 'name' => 'kota_kabupaten',
'value' => old( 'value' => old(
'kota_kabupaten', isset($forminspeksi['kota_kabupaten']) ? $forminspeksi['kota_kabupaten'] : '', 'kota_kabupaten',
) isset($forminspeksi['kota_kabupaten']) ? $forminspeksi['kota_kabupaten'] : '',
),
], ],
[ [
'label' => 'Provinsi', 'label' => 'Provinsi',
'index' => 6, 'index' => 6,
'name' => 'provinsi', 'name' => 'provinsi',
'value' => old( 'value' => old(
'provinsi', isset($forminspeksi['provinsi']) ? $forminspeksi['provinsi'] : '', 'provinsi',
) isset($forminspeksi['provinsi']) ? $forminspeksi['provinsi'] : '',
),
], ],
]; ];
@@ -219,10 +227,7 @@
<input type="text" name="{{ $item['name'] }}" class="input" <input type="text" name="{{ $item['name'] }}" class="input"
placeholder="Masukkan {{ $item['label'] }}" placeholder="Masukkan {{ $item['label'] }}"
value="{{ $item['value'] }}"> value="{{ $item['value'] }}">
<em id="error-{{ $item['name'] }}" class="alert text-danger text-sm"></em>
@error($item['name'])
<em class="alert text-danger text-sm">{{ $message }}</em>
@enderror
</div> </div>
</div> </div>
@endforeach @endforeach
@@ -251,8 +256,9 @@
value="{{ old('kordinat_lat') }}" @readonly(true)> value="{{ old('kordinat_lat') }}" @readonly(true)>
<input class="input" type="text" name="kordinat_lng" id="lng" <input class="input" type="text" name="kordinat_lng" id="lng"
value="{{ old('kordinat_lng') }}" @readonly(true)> value="{{ old('kordinat_lng') }}" @readonly(true)>
</div> </div>
<button type="button" class="btn btn-sm btn-primary" onclick="getUserLocation()">Ambil Kordinat</button> <button type="button" class="btn btn-sm btn-primary" onclick="getUserLocation()">Ambil
Kordinat</button>
</div> </div>
</div> </div>
</div> </div>
@@ -260,43 +266,122 @@
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div data-accordion="true">
@foreach ($permohonan->debiture->documents as $dokumen)
<div class="accordion-item [&:not(:last-child)]:border-b border-b-gray-200" data-accordion-item="true"
id="accordion_detail_jaminan">
<button class="accordion-toggle py-4 group "
data-accordion-toggle="#accordion_detail_jaminan_{{ $loop->index }}">
<span class="text-base text-gray-900 font-medium">
Status Kepemilikan
</span>
<i class="ki-outline ki-plus text-gray-600 text-2sm accordion-active:hidden block">
</i>
<i class="ki-outline ki-minus text-gray-600 text-2sm accordion-active:block hidden">
</i>
</button>
<div class=" mx-auto bg-white rounded-lg overflow-text"> <div class="accordion-content hidden" id="accordion_detail_jaminan_{{ $loop->index }}">
<div class="py-4 "> <div class="card-table scrollable-x-auto pb-3">
<h1 class="text-md font-medium text-gray-900">Status Kepemilikan</h1> <a href="{{ route('debitur.jaminan.bulk.download', ['id' => $permohonan->debiture->id, 'jaminan' => $dokumen->id]) }}"
</div> class="ml-6 btn btn-dark dark:btn-light">
<i class="ki-outline ki-cloud-download"></i> Download Semua Dokumen
</a>
<table class="table align-middle text-sm text-gray-500">
@foreach ($dokumen->detail as $detail)
<tr>
<td class="py-2 text-gray-600 font-normal max-w-[100px]">
{{ $loop->index + 1 }}. {{ $detail->jenisLegalitasJaminan->name }}
</td>
<td class="py-2 text-gray-800 font-normaltext-sm">
{{ $detail->name ?? '' }}
</td>
</tr>
<tr>
<td class="py-3 max-w-[100px] align-top">
Dokumen Jaminan
</td>
<td class="py-3 text-gray-700 text-2sm font-normal">
@if (isset($detail->dokumen_jaminan))
@php
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan))
? json_decode($detail->dokumen_jaminan)
: [$detail->dokumen_jaminan];
$dokumen_nomor = is_array(json_decode($detail->dokumen_nomor))
? json_decode($detail->dokumen_nomor)
: ($detail->dokumen_nomor
? [$detail->dokumen_nomor]
: []);
@endphp
@foreach ($dokumen_jaminan as $index => $dokumen)
<div class="flex w-full lg:w-[30%]">
@if (in_array(Auth::user()->roles[0]->name, ['administrator', 'pemohon-eo']))
@if (!empty($dokumen_nomor))
<span class="flex-1 mt-2 text-info">Nomor Dokumen :
{{ $dokumen_nomor[$index] }}</span>
@endif
<a href="{{ route('debitur.jaminan.download', ['id' => $permohonan->debiture->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
class="flex-none badge badge-sm badge-outline mt-2 mr-2">
{{ basename($dokumen) }}
<i class="ki-filled ki-cloud-download"></i>
</a>
@endif
<span
class="flex-none badge badge-sm badge-outline badge-warning mt-2"
onclick="viewPDF('{{ Storage::url($dokumen_jaminan[$index]) }}')"><i
class="ki-filled ki-eye mr-2"></i>Preview</span>
</div>
<br>
@endforeach
@endif
</td>
</tr>
<tr>
<td class="py-3 max-w-[100px]">
Keterangan
</td>
<td class="py-3 text-gray-700 text-2sm font-normal">
{{ $detail->keterangan ?? '' }}
</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
@endforeach
</div> </div>
@include('lpj::component.pdfviewer')
<div class=" mx-auto bg-white rounded-lg overflow-hidden">
<div class="py-4 ">
<h1 class="text-md font-medium text-gray-900">Izin Bangunan</h1>
</div>
</div>
<div class=" mx-auto bg-white rounded-lg overflow-hidden">
<div class="py-4 ">
<h1 class="text-md font-medium text-gray-900">SPPT PBB</h1>
</div>
</div>
<div class=" mx-auto bg-white rounded-lg overflow-hidden">
<div class="py-4 ">
<h1 class="text-md font-medium text-gray-900">Dokument Lainnya</h1>
</div>
</div>
<div class=" mx-auto bg-white rounded-lg overflow-hidden"> <div class=" mx-auto bg-white rounded-lg overflow-hidden">
<div class="py-4 "> <div class="py-4 ">
<h1 class="text-md font-medium text-gray-900">Hubungan cadeb/debitur dengan Pemilik Jaminan</h1> <h1 class="text-md font-medium text-gray-900">Hubungan cadeb/debitur dengan Pemilik Jaminan</h1>
</div> </div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Pemilik Jaminan</label>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->debiture->documents as $dokumen)
{{ $dokumen->pemilik->hubungan_pemilik->name?? "" }}
@endforeach
</div>
</div>
</div> </div>
<div class=" mx-auto bg-white rounded-lg overflow-hidden"> <div class=" mx-auto bg-white rounded-lg overflow-hidden">
<div class="py-4 "> <div class="py-4 ">
<h1 class="text-md font-medium text-gray-900">Hubungan Cadeb/Debitur dengan Penghuni Jaminan</h1> <h1 class="text-md font-medium text-gray-900">Hubungan Cadeb/Debitur dengan Penghuni Jaminan</h1>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">Penghuni Jaminan</label>
<div class="flex flex-wrap items-baseline w-full">
@foreach ($permohonan->debiture->documents as $dokumen)
{{ $dokumen->penghuni->hubungan_penghuni->name?? "" }}
@endforeach
</div>
</div>
</div> </div>
</div> </div>

View File

@@ -103,8 +103,8 @@
<select class="input tomselect w-full @error('hadapMataAngin') border-danger bg-danger-light @enderror" <select class="input tomselect w-full @error('hadapMataAngin') border-danger bg-danger-light @enderror"
name="hadapMataAngin"> name="hadapMataAngin">
<option value="">Select Jenis</option> <option value="">Select Jenis</option>
@if (isset($arahMataAngin)) @if (isset($jenisKapal))
@foreach ($arahMataAngin as $item) @foreach ($jenisKapal as $item)
<option value="{{ $item->name }}" <option value="{{ $item->name }}"
{{ old('hadapMataAngin') == $item->name ? 'selected' : '' }}>{{ $item->name }} {{ old('hadapMataAngin') == $item->name ? 'selected' : '' }}>{{ $item->name }}
</option> </option>

View File

@@ -203,8 +203,8 @@
<label class="form-label max-w-56">Kendaraan</label> <label class="form-label max-w-56">Kendaraan</label>
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<div class="flex flex-col items-start gap-4"> <div class="flex flex-col items-start gap-4">
@if (isset($saranaPelengkap)) @if (isset($jenisKendaraan))
@foreach ($saranaPelengkap as $item) @foreach ($jenisKendaraan as $item)
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <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"> <label class="form-label max-w-56 gap-2.5" style="width: 500px">
<input class="checkbox" name="kendaraan[]" type="checkbox" <input class="checkbox" name="kendaraan[]" type="checkbox"

View File

@@ -103,8 +103,8 @@
class="input tomselect w-full @error('hadapMataAngin') border-danger bg-danger-light @enderror" class="input tomselect w-full @error('hadapMataAngin') border-danger bg-danger-light @enderror"
name="hadapMataAngin"> name="hadapMataAngin">
<option value="">Select Model Kendaraan </option> <option value="">Select Model Kendaraan </option>
@if (isset($arahMataAngin)) @if (isset($jenisPesawat))
@foreach ($arahMataAngin as $item) @foreach ($jenisPesawat as $item)
<option value="{{ $item->name }}" <option value="{{ $item->name }}"
{{ old('hadapMataAngin') == $item->name ? 'selected' : '' }}>{{ $item->name }} {{ old('hadapMataAngin') == $item->name ? 'selected' : '' }}>{{ $item->name }}
</option> </option>
@@ -112,7 +112,7 @@
@endif @endif
</select> </select>
@error('hadapMataAngin') @error('jenisPesawat')
<em class="alert text-danger text-sm"></em> <em class="alert text-danger text-sm"></em>
@enderror @enderror
</div> </div>

View File

@@ -101,7 +101,7 @@
function onSubmit() { function onSubmit() {
$.ajax({ $.ajax({
url: "{{ route('surveyor.submitSurveyor', ['id' => $surveyor]) }}", url: "{{ route('surveyor.submitSurveyor', ['id' => $surveyor]) }}",
type: "GET", type: "POST",
headers: { headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}' 'X-CSRF-TOKEN': '{{ csrf_token() }}'
}, },

View File

@@ -5,26 +5,11 @@
@endsection @endsection
@section('content') @section('content')
@push('styles') @push('styles')
<style>
.modal {
width: 50%;
display: flex;
justify-content: center;
align-items: center;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>
@endpush @endpush
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card pb-2.5"> <div class="card card-grid min-w-full" data-datatable="false" data-datatable-page-size="5"
<div class="card-grid min-w-full" data-datatable="false" data-datatable-page-size="5"
data-datatable-state-save="false" id="permohonan-table" data-api-url="{{ route('surveyor.datatables') }}"> data-datatable-state-save="false" id="permohonan-table" data-api-url="{{ route('surveyor.datatables') }}">
<div class="card-header py-5 flex-wrap"> <div class="card-header py-5 flex-wrap">
<h3 class="card-title"> <h3 class="card-title">
@@ -109,7 +94,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
</div> </div>
@@ -215,14 +200,13 @@ function jadwal(id){
return `${day}-${month}-${year}`; return `${day}-${month}-${year}`;
} }
ihfdksfjhjfjbkdfkdsfdsjkjdjdsgjjgdgjhgdgjkhdshggkhgkhdghskghkjkhjsdgjkgdjhg
</script> </script>
@endpush @endpush
<div class="modal fade" data-modal="true" id="modal_jadwal" data-backdrop="static" data-keyboard="false"> <div class="modal" data-modal="true" id="modal_jadwal" >
<div class="modal-content"> <div class="modal-content max-w-[600px] top-[10%]">
<div class="modal-header"> <div class="modal-header">
<h3 class="modal-title">Kunjungan</h3> <h3 class="modal-title">Kunjungan</h3>
<button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true"> <button class="btn btn-xs btn-icon btn-light" data-modal-dismiss="true">
@@ -233,7 +217,7 @@ function jadwal(id){
<form action="{{ route('surveyor.storeJadwal')}}" method="POST" enctype="multipart/form-data" id="revisiForm"> <form action="{{ route('surveyor.storeJadwal')}}" method="POST" enctype="multipart/form-data" id="revisiForm">
@method('put') @method('put')
@csrf @csrf
<input id="ids" type="text" name="id"> <input id="ids" type="hidden" name="id">
<div class="pl-1 grid gap-2.5"> <div class="pl-1 grid gap-2.5">
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5"> <div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">

View File

@@ -459,7 +459,11 @@ $basicDataRoutes = [
'lantai-unit' => 'Lantai Unit', 'lantai-unit' => 'Lantai Unit',
'view-unit' => 'View Unit', 'view-unit' => 'View Unit',
'bentuk-unit' => 'Bentuk unit', 'bentuk-unit' => 'Bentuk unit',
'perkerasan-jalan' => 'Perkerasan jalan' 'perkerasan-jalan' => 'Perkerasan jalan',
'jenis-pesawat' => 'Jenis pesawat',
'model-alat-berat' => 'Model Alat Berat',
'jenis-kapal' => 'Jenis kapal',
'jenis-kendaraan' => 'Jenis kendaraan',
]; ];

View File

@@ -295,6 +295,10 @@ Route::middleware(['auth'])->group(function () {
'view-unit' => 'View Unit', 'view-unit' => 'View Unit',
'bentuk-unit' => 'Bentuk unit', 'bentuk-unit' => 'Bentuk unit',
'perkerasan-jalan' => 'Perkerasan jalan', 'perkerasan-jalan' => 'Perkerasan jalan',
'jenis-pesawat' => 'Jenis pesawat',
'model-alat-berat' => 'Model Alat Berat',
'jenis-kapal' => 'Jenis kapal',
'jenis-kendaraan' => 'Jenis kendaraan',
]; ];
foreach ($headers as $type => $header) { foreach ($headers as $type => $header) {
@@ -472,7 +476,7 @@ Route::middleware(['auth'])->group(function () {
Route::get('denah/{id}/{jaminanId}', [SurveyorController::class, 'denah'])->name('denah'); Route::get('denah/{id}/{jaminanId}', [SurveyorController::class, 'denah'])->name('denah');
Route::get('foto/{id}/{jaminanId}', [SurveyorController::class, 'foto'])->name('foto'); Route::get('foto/{id}/{jaminanId}', [SurveyorController::class, 'foto'])->name('foto');
Route::get('data-pembanding/{id}/{jaminanId}', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding'); Route::get('data-pembanding/{id}/{jaminanId}', [SurveyorController::class, 'dataPembanding'])->name('data-pembanding');
Route::get('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor'); Route::post('submitSurveyor/{id}', [SurveyorController::class, 'submitSurveyor'])->name('submitSurveyor');
}); });
Route::name('penilai.')->prefix('penilai')->group(function () { Route::name('penilai.')->prefix('penilai')->group(function () {