update export basic data dan tampilan awal form surveyor
This commit is contained in:
@@ -5,6 +5,8 @@ namespace Modules\Lpj\Http\Controllers;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Lpj\Exports\BasicDataSurveyorExport;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Http\Response;
|
||||
@@ -99,22 +101,6 @@ class SurveyorController extends Controller
|
||||
$branches = Branch::all();
|
||||
$provinces = Province::all();
|
||||
$bentukTanah = BentukTanah::all();
|
||||
$konturTanah = KonturTanah::all();
|
||||
$posisiKavling = PosisiKavling::all();
|
||||
$ketinggianTanah = KetinggianTanah::all();
|
||||
$kondisiFisikTanah = KondisiFisikTanah::all();
|
||||
$jenisBangunan = JenisBangunan::all();
|
||||
$kondisiBangunan = KondisiBangunan::all();
|
||||
$sifatBangunan = SifatBangunan::all();
|
||||
$spekKategoriBagunan = SpekKategoritBangunan::all();
|
||||
$spekBangunan = SpekBangunan::all();
|
||||
$saranaPelengkap = SaranaPelengkap::all();
|
||||
$arahMataAngin = ArahMataAngin::all();
|
||||
$jenisKendaraan = JenisKendaraan::all();
|
||||
$jenisKapal = JenisKapal::all();
|
||||
$jenisPesawat = JenisPesawat::all();
|
||||
$modelAlatBerat = ModelAlatBerat::all();
|
||||
|
||||
|
||||
$denah = Denah::where('permohonan_id', $id)->get();
|
||||
$fotojaminan = FotoJaminan::where('permohonan_id', $id)->get();
|
||||
@@ -122,8 +108,6 @@ class SurveyorController extends Controller
|
||||
->where('permohonan_id', $id)
|
||||
->get();
|
||||
|
||||
|
||||
|
||||
$jenisJaminanIds = $permohonan->debiture->documents->pluck('jenisJaminan.id')->toArray(); // Convert to array
|
||||
|
||||
$jaminanId = $jenisJaminanIds[0];
|
||||
@@ -135,14 +119,14 @@ class SurveyorController extends Controller
|
||||
$forminspeksi = json_decode($inpeksi->data_form, true);
|
||||
$formFoto = json_decode($inpeksi->foto_form, true);
|
||||
$formDenah = json_decode($inpeksi->denah_form, true);
|
||||
$formPembanding = json_decode($inpeksi->data_pembanding, true);
|
||||
} else {
|
||||
$forminspeksi = null;
|
||||
$formFoto = null;
|
||||
$formDenah = null;
|
||||
$formPembanding = null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
return view('lpj::surveyor.detail', compact(
|
||||
'denah',
|
||||
'analisa',
|
||||
@@ -151,25 +135,12 @@ class SurveyorController extends Controller
|
||||
'branches',
|
||||
'provinces',
|
||||
'bentukTanah',
|
||||
'konturTanah',
|
||||
'posisiKavling',
|
||||
'kondisiFisikTanah',
|
||||
'ketinggianTanah',
|
||||
'kondisiBangunan',
|
||||
'jenisBangunan',
|
||||
'sifatBangunan',
|
||||
'spekKategoriBagunan',
|
||||
'spekBangunan',
|
||||
'saranaPelengkap',
|
||||
'arahMataAngin',
|
||||
'forminspeksi',
|
||||
'formDenah',
|
||||
'formFoto',
|
||||
'jaminanId',
|
||||
'jenisKendaraan',
|
||||
'jenisKapal',
|
||||
'jenisPesawat',
|
||||
'modelAlatBerat'
|
||||
|
||||
'formPembanding'
|
||||
));
|
||||
}
|
||||
/**
|
||||
@@ -179,7 +150,7 @@ class SurveyorController extends Controller
|
||||
{
|
||||
$data = $request->validated();
|
||||
|
||||
|
||||
|
||||
|
||||
if (!$data) {
|
||||
return response()->json(['success' => false, 'message' => 'Invalid data'], 400);
|
||||
@@ -191,18 +162,22 @@ class SurveyorController extends Controller
|
||||
$action = $request->input('type');
|
||||
$rules = $this->getActionSpecificRules($data, $action, $request);
|
||||
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first();
|
||||
$data = $rules;
|
||||
|
||||
if (!$inspeksi) {
|
||||
Inspeksi::create([
|
||||
'permohonan_id' => $request->input('permohonan_id'),
|
||||
'data_form' => json_encode($rules),
|
||||
'name' => $request->input('type'),
|
||||
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'),
|
||||
]);
|
||||
} else {
|
||||
$inspeksi->update(['data_form' => json_encode($rules)]);
|
||||
}
|
||||
|
||||
|
||||
// $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first();
|
||||
|
||||
// if (!$inspeksi) {
|
||||
// Inspeksi::create([
|
||||
// 'permohonan_id' => $request->input('permohonan_id'),
|
||||
// 'data_form' => json_encode($rules),
|
||||
// 'name' => $request->input('type'),
|
||||
// 'jenis_jaminan_id' => $request->input('jenis_jaminan_id'),
|
||||
// ]);
|
||||
// } else {
|
||||
// $inspeksi->update(['data_form' => json_encode($rules)]);
|
||||
// }
|
||||
|
||||
DB::commit();
|
||||
|
||||
@@ -570,7 +545,7 @@ class SurveyorController extends Controller
|
||||
return response()->json(['success' => false, 'message' => 'Failed to save data: ' . $e->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Form inspeksi.
|
||||
*/
|
||||
@@ -914,23 +889,23 @@ class SurveyorController extends Controller
|
||||
'penilaian',
|
||||
'documents',
|
||||
])->findOrFail($id);
|
||||
|
||||
|
||||
$jenisAssetUpdated = false;
|
||||
if ($request->input('types') == 'jenis_asset') {
|
||||
$this->updateJenisAsset($permohonan, $request);
|
||||
$jenisAssetUpdated = true;
|
||||
}
|
||||
|
||||
|
||||
if (in_array($request->input('types'), ['analisa_tanah', 'analisa_bangunan', 'analisa_unit'])) {
|
||||
$key = match ($request->input('types')) {
|
||||
'analisa_tanah' => 'luas_tanah',
|
||||
'analisa_bangunan' => 'luas_bangunan',
|
||||
'analisa_unit' => 'luas_unit',
|
||||
};
|
||||
|
||||
|
||||
$this->updateDetails($permohonan, $key, $request->input($key));
|
||||
}
|
||||
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Data berhasil disimpan',
|
||||
@@ -940,8 +915,8 @@ class SurveyorController extends Controller
|
||||
return response()->json(['error' => 'Something went wrong', 'message' => $e->getMessage()], 500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private function updateJenisAsset($permohonan, $request)
|
||||
{
|
||||
$jenis_jaminan_id = $permohonan->debiture->documents->first()->jenis_jaminan_id;
|
||||
@@ -951,35 +926,35 @@ class SurveyorController extends Controller
|
||||
'jenis_jaminan_id' => $request->input('jenis_asset'),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
private function updateDetails($permohonan, $key, $newValue)
|
||||
{
|
||||
$document = $permohonan->debiture->documents->first();
|
||||
|
||||
|
||||
if (!$document) {
|
||||
throw new \Exception("Document not found");
|
||||
}
|
||||
|
||||
|
||||
$detailsUpdate = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->first();
|
||||
|
||||
|
||||
if (!$detailsUpdate) {
|
||||
throw new \Exception("DetailDokumenJaminan not found");
|
||||
}
|
||||
|
||||
|
||||
$datas = json_decode($detailsUpdate->details, true) ?? [];
|
||||
|
||||
|
||||
if (is_numeric($newValue)) {
|
||||
$newValue = [$key => $newValue];
|
||||
}
|
||||
|
||||
|
||||
if (!is_array($newValue)) {
|
||||
throw new \InvalidArgumentException("'{$key}' must be an array or valid JSON string");
|
||||
}
|
||||
|
||||
|
||||
foreach ($newValue as $subKey => $value) {
|
||||
$datas[$subKey] = $value; // Update atau tambahkan key baru
|
||||
}
|
||||
|
||||
|
||||
$detailsUpdate->update([
|
||||
'details' => json_encode($datas),
|
||||
]);
|
||||
@@ -1230,6 +1205,7 @@ class SurveyorController extends Controller
|
||||
'fasilitas-objek' => FasilitasObjek::class,
|
||||
'merupakan-daerah' => MerupakanDaerah::class,
|
||||
'jenis-unit' => JenisUnit::class,
|
||||
'perkerasan-jalan' => PerkerasanJalan::class,
|
||||
];
|
||||
|
||||
|
||||
@@ -1303,74 +1279,103 @@ class SurveyorController extends Controller
|
||||
'fasilitas-objek' => ['Fasilitas Umum Dekat Objek', 'fasilitas-objek'],
|
||||
];
|
||||
|
||||
private function getAssetData($data)
|
||||
private function getAssetData(array $data): array
|
||||
{
|
||||
return [
|
||||
'asset' =>[
|
||||
'debitur_perwakilan' => $data['debitur_perwakilan'] ?? [],
|
||||
'jenis_asset' => $data['jenis_asset'] ?? null,
|
||||
'jenis_asset_tidak_sesuai' => $data['jenis_asset_tidak_sesuai'] ?? null,
|
||||
'alamat_sesuai' => $data['alamat_sesuai'] ?? null,
|
||||
'alamat_tidak_sesuai' => $data['alamat_tidak_sesuai'] ?? null,
|
||||
$alamatData = [
|
||||
'nama_jalan' => $data['nama_jalan'] ?? null,
|
||||
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
||||
'kecamatan' => $data['kecamatan'] ?? null,
|
||||
'kota_kabupaten' => $data['kota_kabupaten'] ?? null,
|
||||
'provinsi' => $data['provinsi'] ?? null,
|
||||
'kordinat_lng' => $data['kordinat_lng'] ?? null,
|
||||
'kordinat_lat' => $data['kordinat_lat'] ?? null,
|
||||
]];
|
||||
];
|
||||
|
||||
return [
|
||||
'asset' => [
|
||||
'debitur_perwakilan' => $data['debitur_perwakilan'] ?? [],
|
||||
'jenis_asset' => [
|
||||
$data['jenis_asset'] => ($data['jenis_asset'] === 'sesuai')
|
||||
? $data['jenis_asset']
|
||||
: ($data['jenis_asset_tidak_sesuai'] ?? null)
|
||||
],
|
||||
'alamat' => [
|
||||
$data['alamat_sesuai'] => $alamatData
|
||||
],
|
||||
'kordinat_lng' => $data['kordinat_lng'] ?? null,
|
||||
'kordinat_lat' => $data['kordinat_lat'] ?? null,
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
private function getTanahData($data, $request): array
|
||||
private function getTanahData(array $data): array
|
||||
{
|
||||
return [
|
||||
'tanah' => [
|
||||
|
||||
'luas_tanah' => $data['luas_tanah'] ?? null,
|
||||
'luas_tanah_tidak_sesuai' => $data['luas_tanah_tidak_sesuai'] ?? null,
|
||||
'hadap_mata_angin' => $data['hadap_mata_angin'] ?? null,
|
||||
'hadap_mata_angin_tidak_sesuai' => $data['hadap_mata_angin_tidak_sesuai'] ?? null,
|
||||
'bentuk_tanah' => $data['bentuk_tanah'] ?? null,
|
||||
'bentuk_tanah_lainnya' => $data['bentuk_tanah_lainnya'] ?? null,
|
||||
'kontur_tanah' => $data['kontur_tanah'] ?? [],
|
||||
'ketinggian_tanah' => $data['ketinggian_tanah'] ?? [],
|
||||
'ketinggian_tanah_tidak_sesuai' => $data['ketinggian_tanah_tidak_sesuai'] ?? [],
|
||||
'kontur_jalan' => $data['kontur_jalan'] ?? null,
|
||||
'ketinggian_jalan' => $data['ketinggian_jalan'] ?? [],
|
||||
'posisi_kavling' => $data['posisi_kavling'] ?? [],
|
||||
'posisi_kavling_lainnya' => $data['posisi_kavling_lainnya'] ?? null,
|
||||
'tusuk_sate' => $data['tusuk_sate'] ?? null,
|
||||
'lockland' => $data['lockland'] ?? null,
|
||||
'kondisi_fisik_tanah' => $data['kondisi_fisik_tanah'] ?? [],
|
||||
'kondisi_fisik_tanah_lainnya' => $data['kondisi_fisik_tanah_lainnya'] ?? null,
|
||||
],
|
||||
'luas_tanah' => $this->getFieldData(
|
||||
$data,
|
||||
'luas_tanah',
|
||||
true
|
||||
),
|
||||
'hadap_mata_angin' => $this->getFieldData(
|
||||
$data,
|
||||
'hadap_mata_angin',
|
||||
true
|
||||
),
|
||||
'bentuk_tanah' => $this->getFieldData(
|
||||
$data,
|
||||
'bentuk_tanah',
|
||||
false,
|
||||
'lainnya'
|
||||
),
|
||||
'kontur_tanah' => $data['kontur_tanah'] ?? [],
|
||||
'ketinggian_tanah' => [
|
||||
'ketinggian' => $data['kontur_tanah'] ?? null,
|
||||
'lebih_tinggi' => $data['ketinggian_lebih_tinggi'] ?? null,
|
||||
'lebih_rendah' => $data['ketinggian_lebih_rendah'] ?? null
|
||||
],
|
||||
'kontur_jalan' => $data['kontur_jalan'] ?? null,
|
||||
'ketinggian_jalan' => $data['ketinggian_jalan'] ?? [],
|
||||
'posisi_kavling' => $this->getFieldData(
|
||||
$data,
|
||||
'posisi_kavling',
|
||||
false,
|
||||
'lainnya'
|
||||
),
|
||||
'tusuk_sate' => $data['tusuk_sate'] ?? null,
|
||||
'lockland' => $data['lockland'] ?? null,
|
||||
'kondisi_fisik_tanah' => $this->getFieldData(
|
||||
$data,
|
||||
'kondisi_fisik_tanah',
|
||||
false,
|
||||
'lainnya'
|
||||
)
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
private function getBangunanData($data, $request): array
|
||||
{
|
||||
$data = $request->all();
|
||||
$result = [];
|
||||
|
||||
// foreach ($data['nama_bagunan'] as $index => $bangunan) {
|
||||
// $bangunanData = [
|
||||
// 'bangunan' => $bangunan,
|
||||
// 'kategori' => []
|
||||
// ];
|
||||
foreach ($data['nama_bagunan'] as $index => $bangunan) {
|
||||
$bangunanData = [
|
||||
'bangunan' => $bangunan,
|
||||
'kategori' => []
|
||||
];
|
||||
|
||||
// foreach ($data['spek_kategori_bangunan'] as $kategoriIndex => $kategori) {
|
||||
// if (isset($data['spek_bangunan'][$kategori])) {
|
||||
// $bangunanData['kategori'][] = [
|
||||
// 'kategori' => $kategori,
|
||||
// 'spesifikasi' => $data['spek_bangunan'][$kategori]
|
||||
// ];
|
||||
// }
|
||||
// }
|
||||
foreach ($data['spek_kategori_bangunan'] as $kategoriIndex => $kategori) {
|
||||
if (isset($data['spek_bangunan'][$kategori])) {
|
||||
$bangunanData['kategori'][] = [
|
||||
'kategori' => $kategori,
|
||||
'spesifikasi' => $data['spek_bangunan'][$kategori]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
// $result[] = $bangunanData;
|
||||
// }
|
||||
$result[] = $bangunanData;
|
||||
}
|
||||
|
||||
return [
|
||||
'bangunan' => [
|
||||
@@ -1380,10 +1385,11 @@ class SurveyorController extends Controller
|
||||
'sifat_bangunan' => $data['sifat_bangunan'] ?? null,
|
||||
'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null,
|
||||
'spesifikasi_bangunan' => $result ?? null,
|
||||
// 'spek_bangunan' => $data['spek_bangunan'] ?? [],
|
||||
'sarana_pelengkap' => $data['sarana_pelengkap'] ?? [],
|
||||
'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null,
|
||||
],
|
||||
'sarana_pelengkap' => $this->mapArrayWithInputs(
|
||||
$data['sarana_pelengkap'] ?? [],
|
||||
$data['sarana_pelengkap_input'] ?? []
|
||||
),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1423,8 +1429,9 @@ class SurveyorController extends Controller
|
||||
'fakta_positif' => $data['fakta_positif'] ?? null,
|
||||
'fakta_negatif' => $data['fakta_negatif'] ?? null,
|
||||
'rute_menuju' => $data['rute_menuju'] ?? null,
|
||||
'batas_batas' => $data['batas_batas'] ?? null,
|
||||
'batas_batas_input' => $data['batas_batas_input'] ?? null,
|
||||
'batas_batas' => $this->mapArrayWithInputs(
|
||||
$data['batas_batas'] ?? null, $data['batas_batas_input'] ?? null
|
||||
),
|
||||
'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null,
|
||||
'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null,
|
||||
'informasi_dokument' => $data['informasi_dokument'] ?? null,
|
||||
@@ -1462,7 +1469,7 @@ class SurveyorController extends Controller
|
||||
$factData[$fotoType] = $dataForm[$fotoType] ?? null;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
foreach ($fotoTypes as $fotoType) {
|
||||
$factData[$fotoType] = $this->updateOrDeleteFile($data, $request, $fotoType);
|
||||
}
|
||||
@@ -1865,9 +1872,15 @@ class SurveyorController extends Controller
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Helper untuk upload file
|
||||
*
|
||||
* @param $file
|
||||
* @param $type
|
||||
* @return path name
|
||||
*/
|
||||
|
||||
|
||||
// function upload file to storage
|
||||
private function uploadFile($file, $type)
|
||||
{
|
||||
if (!$file->isValid()) {
|
||||
@@ -1884,5 +1897,76 @@ class SurveyorController extends Controller
|
||||
return str_replace('public/', '', $path);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper untuk memetakan array dengan inputannya
|
||||
*
|
||||
* @param array $keys Array kunci
|
||||
* @param array $values Array nilai/input
|
||||
* @return array
|
||||
*/
|
||||
private function mapArrayWithInputs(array $keys, array $values): array
|
||||
{
|
||||
$result = [];
|
||||
|
||||
foreach ($keys as $index => $key) {
|
||||
$result[$key] = $values[$index] ?? null;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Helper method generic untuk mengambil data field
|
||||
*
|
||||
* @param array $data Array sumber data
|
||||
* @param string $fieldName Nama field
|
||||
* @param bool $checkKesesuaian Apakah perlu cek kesesuaian
|
||||
* @param string|null $extraField Field tambahan (misal 'lainnya')
|
||||
* @return array
|
||||
*/
|
||||
private function getFieldData(
|
||||
array $data,
|
||||
string $fieldName,
|
||||
bool $checkKesesuaian = false,
|
||||
?string $extraField = null
|
||||
): array {
|
||||
if ($checkKesesuaian) {
|
||||
return [
|
||||
$data[$fieldName] ?? '' => ($data[$fieldName] ?? '') === 'sesuai'
|
||||
? ($data[$fieldName] ?? '')
|
||||
: ($data["{$fieldName}_tidak_sesuai"] ?? '')
|
||||
];
|
||||
}
|
||||
|
||||
$result = [
|
||||
$fieldName => $data[$fieldName] ?? null
|
||||
];
|
||||
|
||||
if ($extraField) {
|
||||
$result[$extraField] = $data["{$fieldName}_{$extraField}"] ?? null;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
public function export(string $type)
|
||||
{
|
||||
$modelClass = $this->getModelClass($type);
|
||||
|
||||
if (!$modelClass) {
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Invalid type provided.',
|
||||
'available_types' => array_keys($this->modelClasses),
|
||||
], 400);
|
||||
}
|
||||
|
||||
// Return Excel download
|
||||
return Excel::download(new BasicDataSurveyorExport($modelClass), $type . '.xlsx');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user