1632 lines
64 KiB
PHP
1632 lines
64 KiB
PHP
<?php
|
|
|
|
namespace Modules\Lpj\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Http\Response;
|
|
use Modules\Lpj\Models\Permohonan;
|
|
use Modules\Lpj\Models\Branch;
|
|
use Modules\Lpj\Models\Surveyor;
|
|
use Modules\Lpj\Models\BentukTanah;
|
|
use Modules\Lpj\Models\KonturTanah;
|
|
use Modules\Location\Models\Province;
|
|
use Modules\Lpj\Models\PosisiKavling;
|
|
use Modules\Lpj\Models\KondisiFisikTanah;
|
|
use Modules\Lpj\Models\KetinggianTanah;
|
|
use Modules\Lpj\Models\SifatBangunan;
|
|
use Modules\Lpj\Models\JenisBangunan;
|
|
use Modules\Lpj\Models\KondisiBangunan;
|
|
use Modules\Lpj\Models\SpekBangunan;
|
|
use Modules\Lpj\Models\SpekKategoritBangunan;
|
|
use Modules\Lpj\Models\SaranaPelengkap;
|
|
use Modules\Lpj\Models\ArahMataAngin;
|
|
use Modules\Lpj\Models\Analisa;
|
|
use Modules\Lpj\Models\Penilaian;
|
|
use Modules\Lpj\Models\PerkerasanJalan;
|
|
use Modules\Lpj\Models\AnalisaFakta;
|
|
use Modules\Lpj\Models\AnalisaLingkungan;
|
|
use Modules\Lpj\Models\AnalisaTanahBagunan;
|
|
use Modules\Lpj\Models\SpekBangunanAnalisa;
|
|
use Modules\Lpj\Models\Denah;
|
|
use Modules\Lpj\Models\FotoJaminan;
|
|
use Modules\Lpj\Models\Lingkungan;
|
|
use Modules\Lpj\Models\LantaiUnit;
|
|
use Modules\Lpj\Models\Teams;
|
|
use Modules\Lpj\Models\Lantai;
|
|
use Modules\Lpj\Models\Inspeksi;
|
|
use Modules\Lpj\Models\ViewUnit;
|
|
use Modules\Lpj\Models\ObjekJaminan;
|
|
use Modules\Lpj\Models\RuteJaminan;
|
|
use Modules\Lpj\Models\AnalisaUnit;
|
|
use Modules\Lpj\Models\GolonganMasySekitar;
|
|
use Modules\Lpj\Models\TingkatKeramaian;
|
|
use Modules\Lpj\Models\LaluLintasLokasi;
|
|
use Modules\Lpj\Models\SpekBagunanAnalisaDetail;
|
|
use Modules\Lpj\Http\Requests\SurveyorRequest;
|
|
use Modules\Lpj\Http\Requests\FormSurveyorRequest;
|
|
use Modules\Lpj\Emails\SendEmail;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
class SurveyorController extends Controller
|
|
{
|
|
public $user;
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
*/
|
|
public function index()
|
|
{
|
|
return view('lpj::surveyor.index');
|
|
}
|
|
|
|
/**
|
|
* Show the specified resource.
|
|
*/
|
|
public function show($id)
|
|
{
|
|
$permohonan = Permohonan::with([
|
|
'user',
|
|
'debiture.province',
|
|
'debiture.city',
|
|
'debiture.district',
|
|
'debiture.village',
|
|
'branch',
|
|
'tujuanPenilaian',
|
|
'penilaian',
|
|
'documents',
|
|
])->findOrFail($id);
|
|
|
|
$surveyor = $id;
|
|
$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();
|
|
|
|
|
|
|
|
|
|
$denah = Denah::where('permohonan_id', $id)->get();
|
|
$fotojaminan = FotoJaminan::where('permohonan_id', $id)->get();
|
|
$analisa = Analisa::with('analisaUnit', 'analisaTanahBangunan', 'analisaLingkungan', 'analisaFakta', 'jenisJaminan')
|
|
->where('permohonan_id', $id)
|
|
->get();
|
|
|
|
|
|
|
|
$jenisJaminanIds = $permohonan->debiture->documents->pluck('jenisJaminan.id')->toArray(); // Convert to array
|
|
|
|
$jaminanId = $jenisJaminanIds[0];
|
|
$inpeksi = Inspeksi::where('permohonan_id', $id)
|
|
->whereIn('jenis_jaminan_id', $jenisJaminanIds)
|
|
->first();
|
|
|
|
if ($inpeksi) {
|
|
$forminspeksi = json_decode($inpeksi->data_form, true);
|
|
$formFoto = json_decode($inpeksi->foto_form, true);
|
|
$formDenah = json_decode($inpeksi->denah_form, true);
|
|
} else {
|
|
$forminspeksi = null;
|
|
$formFoto = null;
|
|
$formDenah = null;
|
|
}
|
|
|
|
|
|
|
|
return view('lpj::surveyor.detail', compact(
|
|
'denah',
|
|
'analisa',
|
|
'permohonan',
|
|
'surveyor',
|
|
'branches',
|
|
'provinces',
|
|
'bentukTanah',
|
|
'konturTanah',
|
|
'posisiKavling',
|
|
'kondisiFisikTanah',
|
|
'ketinggianTanah',
|
|
'kondisiBangunan',
|
|
'jenisBangunan',
|
|
'sifatBangunan',
|
|
'spekKategoriBagunan',
|
|
'spekBangunan',
|
|
'saranaPelengkap',
|
|
'arahMataAngin',
|
|
'forminspeksi',
|
|
'formDenah',
|
|
'formFoto',
|
|
'jaminanId'
|
|
));
|
|
}
|
|
/**
|
|
* Store form inspeksi.
|
|
*/
|
|
public function store(FormSurveyorRequest $request)
|
|
{
|
|
$data = $request->validated();
|
|
|
|
if (!$data) {
|
|
return response()->json(['success' => false, 'message' => 'Invalid data'], 400);
|
|
}
|
|
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$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();
|
|
if ($inspeksi) {
|
|
$inspeksi->update(['data_form' => json_encode($rules)]);
|
|
} else {
|
|
Inspeksi::create([
|
|
'permohonan_id' => $request->permohonan_id,
|
|
'data_form' => json_encode($rules),
|
|
'name' => $request->type,
|
|
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'),
|
|
]);
|
|
}
|
|
|
|
DB::commit();
|
|
|
|
return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => $rules], 200);
|
|
} catch (Exception $e) {
|
|
DB::rollBack();
|
|
return response()->json(['success' => false, 'message' => 'Failed to save data: ' . $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
private function getActionSpecificRules($data, $action, $request): array
|
|
{
|
|
$pisah = explode(',', $action);
|
|
|
|
$allRules = [
|
|
'tanah' => $this->getTanahData($data, $request),
|
|
'bangunan' => $this->getBangunanData($data, $request),
|
|
'kapal' => $this->getKapalData($data, $request),
|
|
'kendaraan' => $this->getKendaraanData($data, $request),
|
|
'mesin' => $this->getMesinData($data, $request),
|
|
'pesawat' => $this->getPesawatData($data, $request),
|
|
'alat-berat' => $this->getAlatBeratData($data, $request),
|
|
'apartemen-kantor' => $this->getUnitData($data, $request),
|
|
'lingkungan' => $this->getLingkunganData($data, $request),
|
|
'fakta' => $this->getFactData($data, $request),
|
|
];
|
|
|
|
$rules = [];
|
|
$hasAssetDescriptionRules = false;
|
|
|
|
foreach ($pisah as $act) {
|
|
if (isset($allRules[$act])) {
|
|
$rules = array_merge($rules, $allRules[$act]);
|
|
if ($act == 'tanah' || $act == 'bangunan') {
|
|
$hasAssetDescriptionRules = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($hasAssetDescriptionRules) {
|
|
$rules = array_merge($rules, $this->getAssetData($data));
|
|
}
|
|
|
|
return $rules;
|
|
}
|
|
|
|
|
|
public function storeDenah(Request $request)
|
|
{
|
|
try {
|
|
$validatedData = $request->validate([
|
|
'foto_denah' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'luas' => 'required|numeric',
|
|
'permohonan_id' => 'required',
|
|
'jenis_jaminan_id' => 'required'
|
|
]);
|
|
|
|
$validatedData['foto_denah'] = $this->uploadFile($request->file('foto_denah'), 'foto_denah');
|
|
|
|
$formatJsonDenah = [
|
|
'foto_denah' => $validatedData['foto_denah'],
|
|
'luas' => $validatedData['luas'],
|
|
];
|
|
|
|
|
|
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
|
|
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))
|
|
->first();
|
|
|
|
if ($inspeksi) {
|
|
$inspeksi->update([
|
|
'denah_form' => json_encode($formatJsonDenah)
|
|
]);
|
|
} else {
|
|
Inspeksi::create([
|
|
'permohonan_id' => $request->input('permohonan_id'),
|
|
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'),
|
|
'denah_form' => json_encode($formatJsonDenah)
|
|
]);
|
|
}
|
|
|
|
return response()->json(['success' => true, 'message' => 'Data berhasil disimpan',
|
|
'data' => $formatJsonDenah], 200);
|
|
} catch (Exception $e) {
|
|
return response()->json(['success' => false, 'message' => 'Data gagal disimpan: ' . $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
|
|
public function storeFoto(Request $request)
|
|
{
|
|
$validatedData = $request->validate([
|
|
'permohonan_id' => 'required',
|
|
'jenis_jaminan_id' => 'required',
|
|
'pendamping' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'foto_objek.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'name_objek.*' => 'required|string|max:255',
|
|
'foto_lingkungan.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'name_lingkungan.*' => 'required|string|max:255',
|
|
'foto_rute.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'name_rute.*' => 'required|string|max:255',
|
|
'lantai.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'name_lantai_unit.*' => 'nullable|string|max:255',
|
|
'foto_lantai_unit.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'name_rute_lainnya.*' => 'nullable|string',
|
|
'foto_rute_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'foto_lantai_lainnya.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'name_lantai_lainnya.*' => 'nullable|string|max:255',
|
|
'foto_basement.*' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'name_basement.*' => 'nullable|string|max:255',
|
|
'foto_gerbang' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'name_gerbang' => 'nullable|string|max:255',
|
|
]);
|
|
|
|
try {
|
|
|
|
$rute_menuju_lokasi = [];
|
|
$object_jaminan = [];
|
|
$lingkungan = [];
|
|
$foto_lantai_unit = [];
|
|
$foto_lantai_lainnya = [];
|
|
$foto_rute_lainnya = [];
|
|
|
|
|
|
foreach ($request->file('foto_rute', []) as $key => $value) {
|
|
$fotoRutePath = $this->uploadFile($request->file('foto_rute.' . $key), 'foto_rute.' . $key);
|
|
|
|
$rute_menuju_lokasi[] = [
|
|
'name_rute' => $request->input('name_rute.' . $key),
|
|
'foto_rute' => $fotoRutePath,
|
|
];
|
|
}
|
|
|
|
foreach ($request->file('foto_objek', []) as $key => $value) {
|
|
$fotoObjekPath = $this->uploadFile($request->file('foto_objek.' . $key), 'foto_objek.' . $key);
|
|
$object_jaminan[] = [
|
|
'nama_objek' => $request->input('name_objek.' . $key),
|
|
'foto_object' => $fotoObjekPath,
|
|
'deskripsi_objek' => $request->input('deskripsi_objek.' . $key),
|
|
];
|
|
}
|
|
|
|
foreach ($request->file('foto_lingkungan', []) as $key => $value) {
|
|
$fotoLingkunganPath = $this->uploadFile($request->file('foto_lingkungan.' . $key), 'foto_lingkungan.' . $key);
|
|
$lingkungan[] = [
|
|
'name_lingkungan' => $request->input('name_lingkungan.' . $key),
|
|
'foto_lingkungan' => $fotoLingkunganPath,
|
|
|
|
];
|
|
}
|
|
|
|
foreach ($request->file('foto_lantai_unit', []) as $key => $value) {
|
|
$foto_lantai_unit_Path = $this->uploadFile($request->file('foto_lantai_unit.' . $key), 'foto_lantai_unit.' . $key);
|
|
$foto_lantai_unit[] = [
|
|
'name_lantai_unit' => $request->input('name_lantai_unit.' . $key),
|
|
'foto_lantai_unit' => $foto_lantai_unit_Path,
|
|
|
|
];
|
|
}
|
|
|
|
foreach ($request->file('foto_rute_lainnya', []) as $key => $value) {
|
|
$foto_rute_lainnya_path = $this->uploadFile($request->file('foto_rute_lainnya.' . $key), 'foto_rute_lainnya.' . $key);
|
|
$foto_rute_lainnya[] = [
|
|
'name_rute_lainnya' => $request->input('name_rute_lainnya.' . $key),
|
|
'foto_rute_lainnya' => $foto_rute_lainnya_path,
|
|
|
|
];
|
|
}
|
|
|
|
|
|
foreach ($request->file('foto_lantai_lainnya', []) as $key => $value) {
|
|
$foto_lantai_lainnya_path = $this->uploadFile($request->file('foto_lantai_lainnya.' . $key), 'foto_lantai_lainnya.' . $key);
|
|
$foto_lantai_lainnya[] = [
|
|
'name_lantai_lainnya' => $request->input('name_lantai_lainnya.' . $key),
|
|
'foto_lantai_lainnya' => $foto_lantai_lainnya_path,
|
|
|
|
];
|
|
}
|
|
|
|
|
|
$basement = $this->uploadFile($request->file('foto_basement'), 'foto_basement');
|
|
$gerbang = $this->uploadFile($request->file('foto_gerbang'), 'foto_gerbang');
|
|
$pendamping = $this->uploadFile($request->file('pendamping'), 'pendamping');
|
|
|
|
|
|
$formatFotojson = [
|
|
'rute_menuju_lokasi' => $rute_menuju_lokasi,
|
|
'object_jaminan' => $object_jaminan,
|
|
'lingkungan' => $lingkungan
|
|
,'foto_lantai_unit' => $foto_lantai_unit,
|
|
'foto_lantai_lainnya' => $foto_lantai_lainnya,
|
|
'foto_rute_lainnya' => $foto_rute_lainnya,
|
|
'basement' => $basement,
|
|
'foto_gerbang' => $gerbang,
|
|
'pendamping' => $pendamping
|
|
];
|
|
|
|
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first();
|
|
|
|
if ($inspeksi) {
|
|
$inspeksi->update([
|
|
'foto_form' => json_encode($formatFotojson)
|
|
]);
|
|
} else {
|
|
Inspeksi::create([
|
|
'permohonan_id' => $request->input('permohonan_id'),
|
|
'foto_form' => json_encode($formatFotojson),
|
|
'jenis_jaminan_id' => $request->input('jenis_jaminan_id')
|
|
]);
|
|
}
|
|
|
|
return response()->json(['success' => true, 'message' => 'Data berhasil disimpan', 'data' => $formatFotojson], 200);
|
|
} catch (Exception $e) {
|
|
return response()->json(['success' => false, 'message' => 'Failed to upload: ' . $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function submitSurveyor($id, $jaminanId)
|
|
{
|
|
try {
|
|
$cekButton = $this->checkButtonStatus($id)->getData();
|
|
if (!$cekButton->buttonDisable) {
|
|
$permohonan = Permohonan::find($id);
|
|
$permohonan->update([
|
|
'status' => 'done',
|
|
]);
|
|
return response()->json(['success' => true, 'message' => 'Form surveyor submitted successfully'], 200);
|
|
} else {
|
|
return response()->json(['error' => 'Something went wrong'], 400);
|
|
}
|
|
} catch (Exception $e) {
|
|
return response()->json(['error' => 'Something went wrong', 'message' => $e->getMessage()], 500);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function checkButtonStatus($id)
|
|
{
|
|
try {
|
|
|
|
$inpeksi = Inspeksi::where('permohonan_id', $id)->first();
|
|
|
|
if ($inpeksi) {
|
|
$forminspeksi = json_decode($inpeksi->data_form, true);
|
|
$formFoto = json_decode($inpeksi->foto_form, true);
|
|
|
|
$buttonDisable = false;
|
|
if (
|
|
$formFoto && count($formFoto) > 0 &&
|
|
$forminspeksi
|
|
) {
|
|
$buttonDisable = false;
|
|
} else {
|
|
$buttonDisable = true;
|
|
}
|
|
|
|
return response()->json(['buttonDisable' => $buttonDisable]);
|
|
} else {
|
|
return response()->json(['buttonDisable' => true]);
|
|
}
|
|
} catch (\Exception $e) {
|
|
return response()->json(['buttonDisable' => true]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function storeJadwal(Request $request)
|
|
{
|
|
try {
|
|
$validate = $request->validate([
|
|
'id' => 'required',
|
|
'waktu_penilaian' => 'required',
|
|
'deskripsi_penilaian' => 'required'
|
|
]);
|
|
|
|
// $user = ['user' => 'rustammajid76@gmail.com'];
|
|
|
|
// $emailData = [
|
|
// 'email' => 'rustammajid76@gmail.com',
|
|
// 'subject' => 'Test',
|
|
// 'emailData' => '<h2>Hello, World!</h2><h2>This is the email content. Waktu Penilaian:</h2>'
|
|
// ];
|
|
|
|
// $this->sendMessage($emailData, $user);
|
|
|
|
$id = $request->input('id');
|
|
$penilaian = Penilaian::findOrFail($id);
|
|
|
|
$penilaian->update([
|
|
'waktu_penilaian' => $validate['waktu_penilaian'],
|
|
'deskripsi_penilaian' => $validate['deskripsi_penilaian'],
|
|
]);
|
|
|
|
return redirect()
|
|
->route('surveyor.index')
|
|
->with('success', 'Jadwal berhasil dibuat.');
|
|
} catch (\Exception $e) {
|
|
return response()->json(['buttonDisable' => $e->getMessage()]);
|
|
}
|
|
}
|
|
|
|
// 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)
|
|
{
|
|
try {
|
|
|
|
|
|
$penilaian = Penilaian::findOrFail($id);
|
|
|
|
$penilaian->update([
|
|
'authorized_status' => 1,
|
|
]);
|
|
|
|
return redirect()
|
|
->route('permohonan.index')
|
|
->with('success', 'Jadwal berhasil di aprove.');
|
|
} catch (\Exception $e) {
|
|
return redirect()
|
|
->route('permohonan.index')
|
|
->with('error', 'Gagal membuat jadwal: ' . $e->getMessage());
|
|
}
|
|
}
|
|
/**
|
|
* Form inspeksi.
|
|
*/
|
|
|
|
public function formInspeksi($id, $jaminanId)
|
|
{
|
|
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId);
|
|
|
|
// Auth::user()->id
|
|
|
|
|
|
$link_url_region = Teams::with('regions', 'teamsUsers')
|
|
->whereHas('teamsUsers', function ($query) {
|
|
$query->where('user_id', Auth::user()->id);
|
|
})->first();
|
|
|
|
$branches = Branch::all();
|
|
$provinces = Province::all();
|
|
|
|
$surveyor = $id;
|
|
$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();
|
|
$lantai = Lantai::all();
|
|
$viewUnit = ViewUnit::all();
|
|
$golMasySekitar = GolonganMasySekitar::all();
|
|
$tingkatKeramaian = TingkatKeramaian::all();
|
|
$laluLintasLokasi = LaluLintasLokasi::all();
|
|
$perkerasanJalan = PerkerasanJalan::all();
|
|
|
|
|
|
// return response()->json([
|
|
// 'per'=>
|
|
// $permohonan]);
|
|
|
|
|
|
|
|
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
|
$forminspeksi = null;
|
|
if ($inpeksi) {
|
|
$forminspeksi = json_decode($inpeksi->data_form, true);
|
|
}
|
|
return view('lpj::surveyor.components.inspeksi', compact(
|
|
'permohonan',
|
|
'surveyor',
|
|
'branches',
|
|
'provinces',
|
|
'bentukTanah',
|
|
'konturTanah',
|
|
'posisiKavling',
|
|
'kondisiFisikTanah',
|
|
'ketinggianTanah',
|
|
'kondisiBangunan',
|
|
'jenisBangunan',
|
|
'sifatBangunan',
|
|
'spekKategoriBagunan',
|
|
'spekBangunan',
|
|
'saranaPelengkap',
|
|
'arahMataAngin',
|
|
'lantai',
|
|
'viewUnit',
|
|
'golMasySekitar',
|
|
'tingkatKeramaian',
|
|
'laluLintasLokasi',
|
|
'perkerasanJalan',
|
|
'link_url_region',
|
|
'forminspeksi'
|
|
));
|
|
}
|
|
|
|
/**
|
|
* Denah.
|
|
*/
|
|
|
|
public function denah($id, $jaminanId)
|
|
{
|
|
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId);
|
|
|
|
$denah = null;
|
|
|
|
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
|
$formDenah = null;
|
|
if ($inpeksi) {
|
|
$formDenah = json_decode($inpeksi->denah_form, true);
|
|
}
|
|
|
|
// return response()->json($formDenah);
|
|
return view('lpj::surveyor.components.denah', compact('permohonan', 'denah', 'formDenah'));
|
|
}
|
|
|
|
/**
|
|
* Foto.
|
|
*/
|
|
|
|
public function foto($id, $jaminanId)
|
|
{
|
|
$permohonan = $this->getPermohonanJaminanId($id, $jaminanId);
|
|
$surveyor = $id;
|
|
$branches = Branch::all();
|
|
$provinces = Province::all();
|
|
|
|
|
|
|
|
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
|
|
|
$formFoto = null;
|
|
if ($inpeksi) {
|
|
$formFoto = json_decode($inpeksi->foto_form, true);
|
|
}
|
|
$fotoJaminan = null;
|
|
|
|
// return response()->json([
|
|
// 'inspeksi' => $formFoto,
|
|
|
|
// ]);
|
|
|
|
return view('lpj::surveyor.components.foto', compact('permohonan', 'surveyor', 'branches', 'provinces', 'fotoJaminan', 'formFoto'));
|
|
}
|
|
|
|
/**
|
|
* Data pembanding.
|
|
*/
|
|
|
|
public function dataPembanding($id, $jaminanId)
|
|
{
|
|
$permohonan = Permohonan::with(
|
|
[
|
|
'user',
|
|
'debiture.province',
|
|
'debiture.city',
|
|
'debiture.district',
|
|
'debiture.village',
|
|
'branch',
|
|
'tujuanPenilaian',
|
|
'penilaian'
|
|
],
|
|
)->findOrFail($id);
|
|
$surveyor = $id;
|
|
$branches = Branch::all();
|
|
$provinces = Province::all();
|
|
|
|
|
|
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
|
$forminspeksi = null;
|
|
if ($inpeksi) {
|
|
$forminspeksi = json_decode($inpeksi->data_form, true);
|
|
}
|
|
|
|
// return response()->json($forminspeksi);
|
|
return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces'));
|
|
}
|
|
|
|
|
|
|
|
|
|
private function getHeader(string $type): array
|
|
{
|
|
return self::HEADERS[$type] ?? [];
|
|
}
|
|
|
|
public function data(Request $request)
|
|
{
|
|
|
|
$type = $request->route('type');
|
|
$header = $this->getHeader($request->route('type'));
|
|
return view('lpj::surveyor.data.index', compact('header'));
|
|
}
|
|
|
|
|
|
public function createData($type)
|
|
{
|
|
|
|
$spekKategoriBagunan = SpekKategoritBangunan::all();
|
|
$header = $this->getHeader($type);
|
|
return view('lpj::surveyor.data.form', compact('header', 'spekKategoriBagunan'));
|
|
}
|
|
|
|
|
|
public function storeData(SurveyorRequest $request, $type)
|
|
{
|
|
|
|
$validate = $request->validated();
|
|
if ($validate) {
|
|
|
|
try {
|
|
$type = $request->route('type');
|
|
|
|
$modelClass = $this->getModelClass($type);
|
|
|
|
if (!$modelClass) {
|
|
return redirect()
|
|
->route('basicdata.'. $type .'.index')
|
|
->with('error', 'Invalid type specified.');
|
|
}
|
|
|
|
if ($type == 'spek-bangunan') {
|
|
$validate['spek_kategori_bagunan_id'] = $request->spek_kategori_bagunan_id;
|
|
|
|
}
|
|
|
|
|
|
$data = array_merge($validate, ['status' => true]);
|
|
$modelClass::create($data);
|
|
|
|
return redirect()
|
|
->route('basicdata.' . $type .'.index')
|
|
->with('success', 'created successfully');
|
|
|
|
} catch (Exeception $e) {
|
|
return redirect()
|
|
->route('basicdata.' . $type .'.index')
|
|
->with('error', $th->getMessage());
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public function editData($type, $id)
|
|
{
|
|
$dataMap = [
|
|
'bentuk-tanah' => ['Bentuk Tanah', 'bentuk-tanah', BentukTanah::class],
|
|
'kontur-tanah' => ['Kontur Tanah', 'kontur-tanah', KonturTanah::class],
|
|
'posisi-kavling' => ['Posisi Kavling', 'posisi-kavling', PosisiKavling::class],
|
|
'ketinggian-tanah' => ['Ketinggian Tanah', 'ketinggian-tanah', KetinggianTanah::class],
|
|
'kondisi-fisik-tanah' => ['Kondisi Fisik Tanah', 'kondisi-fisik-tanah', KondisiFisikTanah::class],
|
|
'jenis-bangunan' => ['Jenis Bangunan', 'jenis-bangunan', JenisBangunan::class],
|
|
'kondisi-bangunan' => ['Kondisi Bangunan', 'kondisi-bangunan', KondisiBangunan::class],
|
|
'sifat-bangunan' => ['Sifat Bangunan', 'sifat-bangunan', SifatBangunan::class],
|
|
'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan', SpekBangunan::class],
|
|
'spek-kategori-bangunan' => ['Spek Kategori Bangunan', 'spek-kategori-bangunan', SpekKategoritBangunan::class],
|
|
'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap', SaranaPelengkap::class],
|
|
'lantai-unit' => ['Lantai Unit', 'lantai-unit', Lantai::class],
|
|
'view-unit' => ['View Unit', 'view-unit', ViewUnit::class],
|
|
'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar', GolonganMasySekitar::class],
|
|
];
|
|
|
|
|
|
if (!array_key_exists($type, $dataMap)) {
|
|
return redirect()->back()->with('error', 'Invalid type specified.');
|
|
}
|
|
|
|
[$headers, $routeName, $modelClass] = $dataMap[$type];
|
|
|
|
$header = $dataMap[$type] ?? '';
|
|
$model = $modelClass::findOrFail($id);
|
|
|
|
$spekKategoriBagunan = null;
|
|
if ($type == 'spek-bangunan') {
|
|
$spekKategoriBagunan = SpekKategoritBangunan::all();
|
|
|
|
}
|
|
|
|
|
|
return view('lpj::surveyor.data.form', compact('header', 'model', 'spekKategoriBagunan'));
|
|
}
|
|
|
|
|
|
public function updateData(SurveyorRequest $request, $type, $id)
|
|
{
|
|
$validate = $request->validated();
|
|
if ($validate) {
|
|
$modelClass = $this->getModelClass($type);
|
|
|
|
if ($type == 'spek-bangunan') {
|
|
$validate['spek_kategori_bagunan_id'] = $request->spek_kategori_bagunan_id;
|
|
|
|
}
|
|
|
|
// Check if the provided type exists in the modelClasses
|
|
if (!$modelClass) {
|
|
return redirect()
|
|
->route('basicdata.' . $type . '.index')
|
|
->with('error', 'Invalid type specified.');
|
|
}
|
|
|
|
|
|
|
|
$model = $modelClass::findOrFail($id);
|
|
$model->update($validate);
|
|
|
|
// Redirect back with a success message
|
|
return redirect()
|
|
->route('basicdata.' . $type . '.index')
|
|
->with('success', 'Updated successfully');
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public function dataForDatatables(Request $request)
|
|
{
|
|
if (is_null($this->user) || !$this->user->can('debitur.view')) {
|
|
// abort(403, 'Sorry! You are not allowed to view users.');
|
|
}
|
|
|
|
$query = Permohonan::query();
|
|
|
|
if ($request->has('search') && !empty($request->get('search'))) {
|
|
$search = $request->get('search');
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
|
|
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
|
|
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
|
|
$q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%');
|
|
$q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%');
|
|
$q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%');
|
|
$q->orWhere('status', 'LIKE', '%' . $search . '%');
|
|
});
|
|
}
|
|
|
|
$query->whereRaw('LOWER(status) = ?', ['assign']);
|
|
|
|
$query->whereHas('penilaian.userPenilai', function ($q) {
|
|
$q->where('user_id', Auth::user()->id);
|
|
$q->where('role', 'surveyor');
|
|
});
|
|
|
|
|
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
|
$order = $request->get('sortOrder');
|
|
$column = $request->get('sortField');
|
|
$query->orderBy($column, $order);
|
|
}
|
|
|
|
$totalRecords = $query->count();
|
|
|
|
$size = $request->get('size', 10);
|
|
if ($size == 0) {
|
|
$size = 10;
|
|
}
|
|
|
|
if ($request->has('page') && $request->has('size')) {
|
|
$page = $request->get('page', 1);
|
|
$offset = ($page - 1) * $size;
|
|
|
|
$query->skip($offset)->take($size);
|
|
}
|
|
|
|
$filteredRecords = $query->count();
|
|
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'jenisFasilitasKredit','penilaian'])->get();
|
|
|
|
$pageCount = ceil($totalRecords / $size);
|
|
|
|
$currentPage = max(1, $request->get('page', 1));
|
|
return response()->json([
|
|
'draw' => $request->get('draw'),
|
|
'recordsTotal' => $totalRecords,
|
|
'recordsFiltered' => $filteredRecords,
|
|
'pageCount' => $pageCount,
|
|
'page' => $currentPage,
|
|
'totalCount' => $totalRecords,
|
|
'data' => $data,
|
|
]);
|
|
}
|
|
|
|
|
|
|
|
public function dataForDatatablesData(Request $request, $type)
|
|
{
|
|
if (is_null($this->user) || !$this->user->can('jenis_aset.view')) {
|
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
|
}
|
|
|
|
$models = [
|
|
'Bentuk Tanah' => BentukTanah::class,
|
|
'Kontur Tanah' => KonturTanah::class,
|
|
'Posisi Kavling' => PosisiKavling::class,
|
|
'Ketinggian Tanah' => KetinggianTanah::class,
|
|
'Kondisi Fisik Tanah' => KondisiFisikTanah::class,
|
|
'Jenis Bangunan' => JenisBangunan::class,
|
|
'Kondisi Bangunan' => KondisiBangunan::class,
|
|
'Sifat Bangunan' => SifatBangunan::class,
|
|
'Spek Kategori Bangunan' => SpekKategoritBangunan::class,
|
|
'Spek Bangunan' => SpekBangunan::class,
|
|
'Sarana Pelengkap' => SaranaPelengkap::class,
|
|
'Lalu Lintas Depan Lokasi' => LaluLintasLokasi::class,
|
|
'Tingkat Keramaian' => TingkatKeramaian::class,
|
|
'Golongan Masyarakat Sekitar' => GolonganMasySekitar::class,
|
|
'Lantai Unit' => Lantai::class,
|
|
'View Unit' => ViewUnit::class,
|
|
'Perkerasan jalan' => PerkerasanJalan::class
|
|
];
|
|
|
|
|
|
if (array_key_exists($type, $models)) {
|
|
$query = $models[$type]::query();
|
|
} else {
|
|
throw new InvalidArgumentException("Invalid type: $type");
|
|
}
|
|
|
|
if ($request->has('search') && !empty($request->get('search'))) {
|
|
$search = $request->get('search');
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('code', 'LIKE', "%$search%");
|
|
$q->orWhere('name', 'LIKE', "%$search%");
|
|
});
|
|
}
|
|
|
|
// Apply sorting if provided
|
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
|
$order = $request->get('sortOrder');
|
|
$column = $request->get('sortField');
|
|
$query->orderBy($column, $order);
|
|
}
|
|
|
|
// Get the total count of records
|
|
$totalRecords = $query->count();
|
|
|
|
// Apply pagination if provided
|
|
if ($request->has('page') && $request->has('size')) {
|
|
$page = $request->get('page');
|
|
$size = $request->get('size');
|
|
$offset = ($page - 1) * $size; // Calculate the offset
|
|
|
|
$query->skip($offset)->take($size);
|
|
}
|
|
|
|
// Get the filtered count of records
|
|
$filteredRecords = $query->count();
|
|
|
|
// Get the data for the current page
|
|
$data = $query->get();
|
|
|
|
// Calculate the page count
|
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
|
|
|
// Calculate the current page number
|
|
$currentPage = 0 + 1;
|
|
|
|
// Return the response data as a JSON object
|
|
return response()->json([
|
|
'draw' => $request->get('draw'),
|
|
'recordsTotal' => $totalRecords,
|
|
'recordsFiltered' => $filteredRecords,
|
|
'pageCount' => $pageCount,
|
|
'page' => $currentPage,
|
|
'totalCount' => $totalRecords,
|
|
'data' => $data,
|
|
]);
|
|
}
|
|
|
|
public function destroy($id, $type)
|
|
{
|
|
try {
|
|
|
|
$modelClass = $this->getModelClass($type);
|
|
|
|
if (!$modelClass) {
|
|
return response()->json(['success' => false, 'message' => 'Invalid type specified.'], 400);
|
|
}
|
|
|
|
|
|
$model = $modelClass::findOrFail($id);
|
|
|
|
$model->delete();
|
|
return response()->json(['success' => true, 'message' => 'deleted successfully']);
|
|
} catch (ModelNotFoundException $e) {
|
|
return response()->json(['success' => false, 'message' => 'not found.'], 404);
|
|
} catch (Exception $e) {
|
|
return response()->json(['success' => false, 'message' => 'Failed to delete.'], 500);
|
|
}
|
|
}
|
|
|
|
|
|
private function getPermohonanJaminanId($id, $jaminanId)
|
|
{
|
|
return Permohonan::with([
|
|
'user',
|
|
'debiture.province',
|
|
'debiture.city',
|
|
'debiture.district',
|
|
'debiture.village',
|
|
'branch',
|
|
'tujuanPenilaian',
|
|
'penilaian',
|
|
'debiture.documents.jenisJaminan',
|
|
'debiture.documents' => function ($query) use ($jaminanId) {
|
|
$query->where('jenis_jaminan_id', $jaminanId);
|
|
}
|
|
])
|
|
->whereHas('debiture.documents', function ($query) use ($jaminanId) {
|
|
$query->where('jenis_jaminan_id', $jaminanId);
|
|
})
|
|
->findOrFail($id);
|
|
}
|
|
|
|
|
|
|
|
|
|
private function getModelClass(string $type): ?string
|
|
{
|
|
return $this->modelClasses[$type] ?? null;
|
|
}
|
|
|
|
|
|
|
|
private $modelClasses = [
|
|
'bentuk-tanah' => BentukTanah::class,
|
|
'kontur-tanah' => KonturTanah::class,
|
|
'posisi-kavling' => PosisiKavling::class,
|
|
'ketinggian-tanah' => KetinggianTanah::class,
|
|
'kondisi-fisik-tanah' => KondisiFisikTanah::class,
|
|
'jenis-bangunan' => JenisBangunan::class,
|
|
'kondisi-bangunan' => KondisiBangunan::class,
|
|
'sifat-bangunan' => SifatBangunan::class,
|
|
'sarana-pelengkap' => SaranaPelengkap::class,
|
|
'lalu-lintas-lokasi' => LaluLintasLokasi::class,
|
|
'tingkat-keramaian' => TingkatKeramaian::class,
|
|
'gol-mas-sekitar' => GolonganMasySekitar::class,
|
|
'spek-kategori-bangunan' => SpekKategoritBangunan::class,
|
|
'spek-bangunan' => SpekBangunan::class,
|
|
'lantai-unit' => Lantai::class,
|
|
'view-unit' => ViewUnit::class,
|
|
];
|
|
|
|
|
|
|
|
|
|
private function getCommonData()
|
|
{
|
|
return [
|
|
'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(),
|
|
'spekKategoriBangunan' => SpekKategoritBangunan::all(),
|
|
'spekBangunan' => SpekBangunan::all(),
|
|
'saranaPelengkap' => SaranaPelengkap::all(),
|
|
'arahMataAngin' => ArahMataAngin::all(),
|
|
'lantai' => Lantai::all(),
|
|
'viewUnit' => ViewUnit::all(),
|
|
'golMasySekitar' => GolonganMasySekitar::all(),
|
|
'tingkatKeramaian' => TingkatKeramaian::all(),
|
|
'laluLintasLokasi' => LaluLintasLokasi::all(),
|
|
|
|
];
|
|
}
|
|
|
|
|
|
private const HEADERS = [
|
|
'bentuk-tanah' => ['Bentuk Tanah', 'bentuk-tanah'],
|
|
'kontur-tanah' => ['Kontur Tanah', 'kontur-tanah'],
|
|
'posisi-kavling' => ['Posisi Kavling', 'posisi-kavling'],
|
|
'ketinggian-tanah' => ['Ketinggian Tanah', 'ketinggian-tanah'],
|
|
'kondisi-fisik-tanah' => ['Kondisi Fisik Tanah', 'kondisi-fisik-tanah'],
|
|
'jenis-bangunan' => ['Jenis Bangunan', 'jenis-bangunan'],
|
|
'kondisi-bangunan' => ['Kondisi Bangunan', 'kondisi-bangunan'],
|
|
'sifat-bangunan' => ['Sifat Bangunan', 'sifat-bangunan'],
|
|
'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap'],
|
|
'lalu-lintas-lokasi' => ['Lalu Lintas Depan Lokasi', 'lalu-lintas-lokasi'],
|
|
'tingkat-keramaian' => ['Tingkat Keramaian', 'tingkat-keramaian'],
|
|
'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar'],
|
|
'spek-kategori-bangunan' => ['Spek Kategori Bangunan', 'spek-kategori-bangunan'],
|
|
'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan'],
|
|
'lantai-unit' => ['Lantai Unit', 'lantai-unit'],
|
|
'view-unit' => ['View Unit', 'view-unit'],
|
|
'perkerasan-jalan' => ['Perkerasan jalan', 'perkerasan-jalan']
|
|
];
|
|
|
|
private function getAssetData($data)
|
|
{
|
|
return [
|
|
'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,
|
|
'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,
|
|
];
|
|
}
|
|
|
|
|
|
private function getTanahData($data, $request): array
|
|
{
|
|
return [
|
|
'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,
|
|
];
|
|
}
|
|
|
|
private function getBangunanData($data, $request): array
|
|
{
|
|
// $kategori_bangunan = [];
|
|
// if ($request->has('spek_kategori_bagunan')) {
|
|
// foreach ($request->input('spek_kategori_bagunan', []) as $value) {
|
|
// $kategori_bangunan[] = [
|
|
// 'value' => [
|
|
// 'data' => $data['spek_bangunan'] ?? [],
|
|
// ],
|
|
// ];
|
|
// }
|
|
// }
|
|
|
|
return [
|
|
'luas_tanah_bagunan' => $data['luas_tanah_bagunan'] ?? null,
|
|
'jenis_bangunan' => $data['jenis_bangunan'] ?? null,
|
|
'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null,
|
|
'sifat_bangunan' => $data['sifat_bangunan'] ?? null,
|
|
'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null,
|
|
'spek_kategori_bagunan' => $data['spek_kategori_bagunan'] ?? null,
|
|
'spek_bangunan' => $data['spek_bangunan'] ?? [],
|
|
'sarana_pelengkap' => $data['sarana_pelengkap'] ?? [],
|
|
'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null,
|
|
];
|
|
}
|
|
|
|
private function getLingkunganData($data, $request): array
|
|
{
|
|
return [
|
|
'jarak_jalan_utama' => $data['jarak_jalan_utama'] ?? null,
|
|
'jalan_linkungan' => $data['jalan_linkungan'] ?? null,
|
|
'jarak_cbd_point' => $data['jarak_cbd_point'] ?? null,
|
|
'nama_cbd_point' => $data['nama_cbd_point'] ?? null,
|
|
'lebar_perkerasan_jalan' => $data['lebar_perkerasan_jalan'] ?? null,
|
|
'perkerasan_jalan' => $data['perkerasan_jalan'] ?? null,
|
|
'lalu_lintas' => $data['lalu_lintas'] ?? null,
|
|
'gol_mas_sekitar' => $data['gol_mas_sekitar'] ?? null,
|
|
'tingkat_keramaian' => $data['tingkat_keramaian'] ?? null,
|
|
'terletak_diarea' => $data['terletak_diarea'] ?? null,
|
|
'disekitar_lokasi' => $data['disekitar_lokasi'] ?? null,
|
|
'kondisi_bangunan_sekitar' => $data['kondisi_bangunan_sekitar'] ?? null,
|
|
'sifat_bangunan_sekitar' => $data['sifat_bangunan_sekitar'] ?? null,
|
|
'dekat_makam' => $data['dekat_makam'] ?? null,
|
|
'jarak_makam' => $data['jarak_makam'] ?? null,
|
|
'nama_makam' => $data['nama_makam'] ?? null,
|
|
'dekat_tps' => $data['dekat_tps'] ?? null,
|
|
'jarak_tps' => $data['jarak_tps'] ?? null,
|
|
'nama_tps' => $data['nama_tps'] ?? null,
|
|
'merupakan_daerah' => $data['merupakan_daerah'] ?? null,
|
|
'fasilitas_dekat_object' => $data['fasilitas_dekat_object'] ?? null,
|
|
];
|
|
}
|
|
|
|
private function getFactData($data, $request): array
|
|
{
|
|
$factData = [
|
|
'fakta_positif' => $data['fakta_positif'] ?? null,
|
|
'fakta_negatif' => $data['fakta_negatif'] ?? null,
|
|
'rute_menuju' => $data['rute_menuju'] ?? null,
|
|
'batas_batas' => $data['batas_batas'] ?? null,
|
|
'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null,
|
|
'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null,
|
|
'informasi_dokument' => $data['informasi_dokument'] ?? null,
|
|
'peruntukan' => $data['peruntukan'] ?? null,
|
|
'kdb' => $data['kdb'] ?? null,
|
|
'kdh' => $data['kdh'] ?? null,
|
|
'gsb' => $data['gsb'] ?? null,
|
|
'max_lantai' => $data['max_lantai'] ?? null,
|
|
'klb' => $data['klb'] ?? null,
|
|
'gss' => $data['gss'] ?? null,
|
|
'pelebaran_jalan' => $data['pelebaran_jalan'] ?? null,
|
|
'nama_petugas' => $data['nama_petugas'] ?? null,
|
|
'lat' => $data['lat'] ?? null,
|
|
'lng' => $data['lng'] ?? null,
|
|
'keterangan' => $data['keterangan'] ?? null,
|
|
];
|
|
|
|
$factData['foto_gistaru'] = $this->updateOrDeleteFile($data, $request, 'foto_gistaru');
|
|
$factData['foto_bhumi'] = $this->updateOrDeleteFile($data, $request, 'foto_bhumi');
|
|
$factData['foto_argis_region'] = $this->updateOrDeleteFile($data, $request, 'foto_argis_region');
|
|
$factData['foto_tempat'] = $this->updateOrDeleteFile($data, $request, 'foto_tempat');
|
|
|
|
return $factData;
|
|
}
|
|
|
|
private function updateOrDeleteFile($data, $request, $fileKey)
|
|
{
|
|
if ($request->hasFile($fileKey)) {
|
|
$file = $request->file($fileKey);
|
|
if ($file->isValid()) {
|
|
$fileName = time() . '_' . $file->getClientOriginalName();
|
|
$path = $file->storeAs("public/surveyor/{$request->type}", $fileName);
|
|
if ($path === false) {
|
|
throw new Exception("Failed to store file for {$fileKey}");
|
|
}
|
|
if (isset($data[$fileKey]) && $data[$fileKey]) {
|
|
$this->deleteFile($data[$fileKey]);
|
|
}
|
|
return str_replace('public/', '', $path);
|
|
} else {
|
|
throw new Exception("Invalid file upload for {$fileKey}");
|
|
}
|
|
} elseif (isset($data[$fileKey]) && $data[$fileKey]) {
|
|
return $data[$fileKey];
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private function deleteFile($filePath)
|
|
{
|
|
$fullPath = storage_path('app/public/' . $filePath);
|
|
if (file_exists($fullPath)) {
|
|
unlink($fullPath);
|
|
}
|
|
}
|
|
|
|
|
|
private function getKapalData($data, $request): array
|
|
{
|
|
return [
|
|
'action' => $data['action'] ?? null,
|
|
'nama_wakil_debitur' => $data['nama_wakil_debitur'] ?? null,
|
|
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
|
'dermaga' => $data['dermaga'] ?? null,
|
|
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
|
'kecamatan' => $data['kecamatan'] ?? null,
|
|
'kota_madya' => $data['kota_madya'] ?? null,
|
|
'provinsi' => $data['provinsi'] ?? null,
|
|
'jenis' => $data['jenis'] ?? null,
|
|
'size' => $data['size'] ?? null,
|
|
'kondisi' => $data['kondisi'] ?? null,
|
|
'klasifikasi' => $data['klasifikasi'] ?? null,
|
|
|
|
'nama_kapal' => $data['nama_kapal'] ?? null,
|
|
'pemilik_kapal' => $data['pemilik_kapal'] ?? null,
|
|
'bendera' => $data['bendera'] ?? null,
|
|
'nomor_selar' => $data['nomor_selar'] ?? null,
|
|
'kapal' => $data['kapal'] ?? null,
|
|
'galangan_kapal' => $data['galangan_kapal'] ?? null,
|
|
'kapal_shipyard' => $data['kapal_shipyard'] ?? null,
|
|
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
|
|
'tahun_launcing' => $data['tahun_launcing'] ?? null,
|
|
'dwt' => $data['dwt'] ?? null,
|
|
'lwt' => $data['lwt'] ?? null,
|
|
'gross_tonnage' => $data['gross_tonnage'] ?? null,
|
|
'net_tonnage' => $data['net_tonnage'] ?? null,
|
|
'tenaga_mesin' => $data['tenaga_mesin'] ?? null,
|
|
'loa' => $data['loa'] ?? null,
|
|
'lbp' => $data['lbp'] ?? null,
|
|
'beam' => $data['beam'] ?? null,
|
|
'depth' => $data['depth'] ?? null,
|
|
'draft' => $data['draft'] ?? null,
|
|
|
|
'lambung_kapal' => $data['lambung_kapal'] ?? null,
|
|
'dek' => $data['dek'] ?? null,
|
|
'struktur_rangka' => $data['struktur_rangka'] ?? null,
|
|
'palka' => $data['palka'] ?? null,
|
|
'pondasi_mesin' => $data['pondasi_mesin'] ?? null,
|
|
'area_mesin' => $data['area_mesin'] ?? null,
|
|
'cat_dan_korosi' => $data['cat_dan_korosi'] ?? null,
|
|
'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null,
|
|
'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null,
|
|
|
|
'sekoci' => $data['sekoci'] ?? null,
|
|
'jaket_pelampung' => $data['jaket_pelampung'] ?? null,
|
|
'alat_pemadaman' => $data['alat_pemadaman'] ?? null,
|
|
'rambu_darurat' => $data['rambu_darurat'] ?? null,
|
|
'sistem_alarm' => $data['sistem_alarm'] ?? null,
|
|
'sistem_pencegah' => $data['sistem_pencegah'] ?? null,
|
|
'kebakaran' => $data['kebakaran'] ?? null,
|
|
'lampu_darurat' => $data['lampu_darurat'] ?? null,
|
|
'deskripsi_peralatan' => $data['deskripsi_peralatan'] ?? null,
|
|
|
|
'gps' => $data['gps'] ?? null,
|
|
'radar' => $data['radar'] ?? null,
|
|
'radio_komunikasi' => $data['radio_komunikasi'] ?? null,
|
|
'lampu_navigasi' => $data['lampu_navigasi'] ?? null,
|
|
'sistem_kendali_otomatis' => $data['sistem_kendali_otomatis'] ?? null,
|
|
'kompas' => $data['kompas'] ?? null,
|
|
'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null,
|
|
|
|
'mesin_utama' => $data['mesin_utama'] ?? null,
|
|
'mesin_bantu' => $data['mesin_bantu'] ?? null,
|
|
'pompa_pendingin' => $data['pompa_pendingin'] ?? null,
|
|
'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null,
|
|
'propeller' => $data['propeller'] ?? null,
|
|
'sistem_kelistrikan' => $data['sistem_kelistrikan'] ?? null,
|
|
'deskripsi_mesin_penggerak' => $data['deskripsi_mesin_penggerak'] ?? null,
|
|
|
|
'lampu_navigasi' => $data['lampu_navigasi'] ?? null,
|
|
'sistem_penerangan' => $data['sistem_penerangan'] ?? null,
|
|
'sistem_panel_distribusi' => $data['sistem_panel_distribusi'] ?? null,
|
|
'kabel_perangkat' => $data['kabel_perangkat'] ?? null,
|
|
'deskripsi_kelistrikan' => $data['deskripsi_kelistrikan'] ?? null,
|
|
|
|
'kebersihan_dek_luar' => $data['kebersihan_dek_luar'] ?? null,
|
|
'tangki_limbah' => $data['tangki_limbah'] ?? null,
|
|
'sistem_pengelolaan_limbah' => $data['sistem_pengelolaan_limbah'] ?? null,
|
|
'pengelolaan_air_ballast' => $data['pengelolaan_air_ballast'] ?? null,
|
|
'deskripsi_kebersihan' => $data['deskripsi_kebersihan'] ?? null,
|
|
|
|
'fakta_positif' => $data['fakta_positif'] ?? null,
|
|
'fakta_negatif' => $data['fakta_negatif'] ?? null,
|
|
'analisa_makro' => $data['analisa_makro'] ?? null,
|
|
'kesimpulan' => $data['kesimpulan'] ?? null,
|
|
'catatan' => $data['catatan'] ?? null,
|
|
];
|
|
}
|
|
public function getKendaraanData($data, $request): array
|
|
{
|
|
return [
|
|
'action' => $data['action'] ?? null,
|
|
'tanggal_survey' => $data['tanggal_survey'] ?? null,
|
|
'nama_wakil' => $data['nama_wakil'] ?? null,
|
|
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
|
'nama_jalan' => $data['nama_jalan'] ?? null,
|
|
'perumahan_gang' => $data['perumahan_gang'] ?? null,
|
|
'blok_nomor' => $data['blok_nomor'] ?? null,
|
|
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
|
'kecamatan' => $data['kecamatan'] ?? null,
|
|
'kota_madya' => $data['kota_madya'] ?? null,
|
|
'provinsi' => $data['provinsi'] ?? null,
|
|
'kondisi' => $data['kondisi'] ?? null,
|
|
'nomor_polisi' => $data['nomor_polisi'] ?? null,
|
|
'nomor_polis_tidak_sesuai' => $data['nomor_polis_tidak_sesuai'] ?? null,
|
|
'merek' => $data['merek'] ?? null,
|
|
'merek_tidak_sesuai' => $data['merek_tidak_sesuai'] ?? null,
|
|
'warna' => $data['warna'] ?? null,
|
|
'warna_tidak_sesuai' => $data['warna_tidak_sesuai'] ?? null,
|
|
'nomor_rangka' => $data['nomor_rangka'] ?? null,
|
|
'nomor_rangka_tidak_sesuai' => $data['nomor_rangka_tidak_sesuai'] ?? null,
|
|
'nomor_mesin' => $data['nomor_mesin'] ?? null,
|
|
'nomor_mesin_tidak_sesuai' => $data['nomor_mesin_tidak_sesuai'] ?? null,
|
|
'posisi_kilometer' => $data['posisi_kilometer'] ?? null,
|
|
'transmisi' => $data['transmisi'] ?? null,
|
|
|
|
|
|
'mesin_panel_instrument' => $data['mesin_panel_instrument'] ?? null,
|
|
'fungsi_mesin_panel_instrument' => $data['fungsi_mesin_panel_instrument'] ?? null,
|
|
'interior' => $data['interior'] ?? null,
|
|
'interior' => $data['interior'] ?? null,
|
|
|
|
'jumlah_pintu' => $data['jumlah_pintu'] ?? null,
|
|
'rangka_karoseri' => $data['rangka_karoseri'] ?? null,
|
|
'ban' => $data['ban'] ?? null,
|
|
'velg' => $data['velg'] ?? null,
|
|
'bamper_depan' => $data['bamper_depan'] ?? null,
|
|
'bamper_belakang' => $data['bamper_belakang'] ?? null,
|
|
'lampu_depan' => $data['lampu_depan'] ?? null,
|
|
'lampu_belakang' => $data['lampu_belakang'] ?? null,
|
|
'kaca_kendaraan' => $data['kaca_kendaraan'] ?? null,
|
|
'air_conditioner' => $data['air_conditioner'] ?? null,
|
|
'tape_radio_cd' => $data['tape_radio_cd'] ?? null,
|
|
'sensor_parkir' => $data['sensor_parkir'] ?? null,
|
|
'sensor_camera_recorder' => $data['sensor_camera_recorder'] ?? null,
|
|
'lcd' => $data['lcd'] ?? null,
|
|
'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null,
|
|
'airbag' => $data['airbag'] ?? null,
|
|
'asuransi' => $data['asuransi'] ?? null,
|
|
'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null,
|
|
'tahun_berakhir' => $data['tahun_berakhir'] ?? null,
|
|
|
|
|
|
'fakta_positif' => $data['fakta_positif'] ?? null,
|
|
'fakta_negatif' => $data['fakta_negatif'] ?? null,
|
|
'analisa_makro' => $data['analisa_makro'] ?? null,
|
|
'kesimpulan' => $data['kesimpulan'] ?? null,
|
|
'catatan' => $data['catatan'] ?? null,
|
|
];
|
|
}
|
|
|
|
public function getMesinData($data, $request): array
|
|
{
|
|
return [
|
|
'action' => $data['action'] ?? null,
|
|
'nama_wakil' => $data['nama_wakil'] ?? null,
|
|
'nama_jalan' => $data['nama_jalan'] ?? null,
|
|
'perumahan_gang' => $data['perumahan_gang'] ?? null,
|
|
'blok' => $data['blok'] ?? null,
|
|
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
|
'kecamatan' => $data['kecamatan'] ?? null,
|
|
'kota_madya' => $data['kota_madya'] ?? null,
|
|
'provinsi' => $data['provinsi'] ?? null,
|
|
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
|
'tipe_model' => $data['tipe_model'] ?? null,
|
|
'merek' => $data['merek'] ?? null,
|
|
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
|
|
'negara_pembuat' => $data['negara_pembuat'] ?? null,
|
|
'kondisi_mesin' => $data['kondisi_mesin'] ?? null,
|
|
'faktor_positif' => $data['faktor_positif'] ?? null,
|
|
'faktor_negatif' => $data['faktor_negatif'] ?? null,
|
|
'kesimpulan' => $data['kesimpulan'] ?? null,
|
|
'catatan' => $data['catatan'] ?? null,
|
|
];
|
|
}
|
|
|
|
public function getAlatBeratData($data, $request): array
|
|
{
|
|
return [
|
|
'action' => $data['action'] ?? null,
|
|
'tanggal_survey' => $data['tanggal_survey'] ?? null,
|
|
'nama_wakil' => $data['nama_wakil'] ?? null,
|
|
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
|
'dengan_wadeb' => $data['dengan_wadeb'] ?? null,
|
|
'nama_jalan' => $data['nama_jalan'] ?? null,
|
|
'perumahan_gang' => $data['perumahan_gang'] ?? null,
|
|
'blok' => $data['blok'] ?? null,
|
|
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
|
'kecamatan' => $data['kecamatan'] ?? null,
|
|
'kota_madya' => $data['kota_madya'] ?? null,
|
|
'provinsi' => $data['provinsi'] ?? null,
|
|
'jenis_model' => $data['jenis_model'] ?? null,
|
|
'nomor_lambung' => $data['nomor_lambung'] ?? null,
|
|
'model_unit' => $data['model_unit'] ?? null,
|
|
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
|
|
'merk' => $data['merk'] ?? null,
|
|
'negara_pembuat' => $data['negara_pembuat'] ?? null,
|
|
'tahun_pembelian' => $data['tahun_pembelian'] ?? null,
|
|
'nomor_faktur' => $data['nomor_faktur'] ?? null,
|
|
'nomor_kontrak' => $data['nomor_kontrak'] ?? null,
|
|
'nama_pemilik' => $data['nama_pemilik'] ?? null,
|
|
'alamat_pemilik' => $data['alamat_pemilik'] ?? null,
|
|
'nomor_asuransi' => $data['nomor_asuransi'] ?? null,
|
|
'nomor_rangka' => $data['nomor_rangka'] ?? null,
|
|
'nomor_mesin' => $data['nomor_mesin'] ?? null,
|
|
'hour_mesters' => $data['hour_mesters'] ?? null,
|
|
'overhaul_mesin' => $data['overhaul_mesin'] ?? null,
|
|
|
|
'mesin_panel' => $data['mesin_panel'] ?? null,
|
|
'fungsi_panel' => $data['fungsi_panel'] ?? null,
|
|
'interior' => $data['interior'] ?? null,
|
|
'rangka_Karoseri' => $data['rangka_Karoseri'] ?? null,
|
|
'ban' => $data['ban'] ?? null,
|
|
'velg' => $data['velg'] ?? null,
|
|
'air_conditioner' => $data['air_conditioner'] ?? null,
|
|
'aksesoris' => $data['aksesoris'] ?? null,
|
|
'lcd' => $data['lcd'] ?? null,
|
|
'perlengkapan' => $data['perlengkapan'] ?? null,
|
|
'asuransi' => $data['asuransi'] ?? null,
|
|
'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null,
|
|
'tahun_berakhir' => $data['tahun_berakhir'] ?? null,
|
|
'sensor_kamera' => $data['sensor_kamera'] ?? null,
|
|
'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null,
|
|
'air_bag' => $data['air_bag'] ?? null,
|
|
|
|
'faktor_positif' => $data['faktor_positif'] ?? null,
|
|
'faktor_negatif' => $data['faktor_negatif'] ?? null,
|
|
'kesimpulan' => $data['kesimpulan'] ?? null,
|
|
'catatan' => $data['catatan'] ?? null,
|
|
];
|
|
}
|
|
|
|
private function getPesawatData($data, $request): array
|
|
{
|
|
return [
|
|
'action' => $data['action'] ?? null,
|
|
'tanggal_survey' => $data['tanggal_survey'] ?? null,
|
|
'nama_wakil' => $data['nama_wakil'] ?? null,
|
|
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
|
'bandara' => $data['bandara'] ?? null,
|
|
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
|
'kecamatan' => $data['kecamatan'] ?? null,
|
|
'kota_madya' => $data['kota_madya'] ?? null,
|
|
'provinsi' => $data['provinsi'] ?? null,
|
|
|
|
'jenis_pesawat' => $data['jenis_pesawat'] ?? null,
|
|
'size' => $data['size'] ?? null,
|
|
'kondisi' => $data['kondisi'] ?? null,
|
|
'nama_pesawat' => $data['nama_pesawat'] ?? null,
|
|
'model' => $data['model'] ?? null,
|
|
'nomor_registrasi' => $data['nomor_registrasi'] ?? null,
|
|
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
|
|
'certificate_of_airworthines' => $data['certificate_of_airworthines'] ?? null,
|
|
'certificate_of_registration' => $data['certificate_of_registration'] ?? null,
|
|
'total_service_hours' => $data['total_service_hours'] ?? null,
|
|
'total_service_cycles' => $data['total_service_cycles'] ?? null,
|
|
|
|
'last_a_check' => $data['last_a_check'] ?? null,
|
|
'next_a_check' => $data['next_a_check'] ?? null,
|
|
'last_b_check' => $data['last_b_check'] ?? null,
|
|
'next_b_check' => $data['next_b_check'] ?? null,
|
|
'last_c_check' => $data['last_c_check'] ?? null,
|
|
'next_c_check' => $data['next_c_check'] ?? null,
|
|
'next_d_check' => $data['next_d_check'] ?? null,
|
|
'last_d_check' => $data['last_d_check'] ?? null,
|
|
'deskripsi_maintenence' => $data['deskripsi_maintenence'] ?? null,
|
|
|
|
'instrument_landing_system' => $data['instrument_landing_system'] ?? null,
|
|
'traffic_collision_avoidance_system' => $data['traffic_collision_avoidance_system'] ?? null,
|
|
'windshear' => $data['windshear'] ?? null,
|
|
'electronic_flight' => $data['electronic_flight'] ?? null,
|
|
'winglets' => $data['winglets'] ?? null,
|
|
'deskripsi_konfigurasi' => $data['deskripsi_konfigurasi'] ?? null,
|
|
|
|
'maksimal_penumpang' => $data['maksimal_penumpang'] ?? null,
|
|
'jumlah_kursi' => $data['jumlah_kursi'] ?? null,
|
|
'kursi_pramugari_pramugara' => $data['kursi_pramugari_pramugara'] ?? null,
|
|
'kartu_fitur_keselamatan' => $data['kartu_fitur_keselamatan'] ?? null,
|
|
'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null,
|
|
'lampu_kabin' => $data['lampu_kabin'] ?? null,
|
|
'lampu_pintu_keluar' => $data['lampu_pintu_keluar'] ?? null,
|
|
'intercom_kabin' => $data['intercom_kabin'] ?? null,
|
|
'deskripsi_kabin' => $data['deskripsi_kabin'] ?? null,
|
|
|
|
'badan_pesawat' => $data['badan_pesawat'] ?? null,
|
|
'sayap_pesawat' => $data['sayap_pesawat'] ?? null,
|
|
'ekor_pesawat' => $data['ekor_pesawat'] ?? null,
|
|
'landing_gear' => $data['landing_gear'] ?? null,
|
|
'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null,
|
|
'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null,
|
|
|
|
'gps' => $data['gps'] ?? null,
|
|
'radar' => $data['radar'] ?? null,
|
|
'radio_komunikasi' => $data['radio_komunikasi'] ?? null,
|
|
'lampu_navigasi' => $data['lampu_navigasi'] ?? null,
|
|
'sistem_autopilot' => $data['sistem_autopilot'] ?? null,
|
|
'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null,
|
|
|
|
'tangki_bahan_bakar' => $data['tangki_bahan_bakar'] ?? null,
|
|
'saluran_pipa_bahan_bakar' => $data['saluran_pipa_bahan_bakar'] ?? null,
|
|
'pompa_bahan_bakar' => $data['pompa_bahan_bakar'] ?? null,
|
|
'sistem_hidrolik_utama' => $data['sistem_hidrolik_utama'] ?? null,
|
|
'sistem_pendigin_hidrolik' => $data['sistem_pendigin_hidrolik'] ?? null,
|
|
'deskripsi_hidrolik' => $data['deskripsi_hidrolik'] ?? null,
|
|
|
|
'mesin_utama' => $data['mesin_utama'] ?? null,
|
|
'sistem_pendorong' => $data['sistem_pendorong'] ?? null,
|
|
'sistem_pendigin_mesin' => $data['sistem_pendigin_mesin'] ?? null,
|
|
'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null,
|
|
'filter_dan_perangkat_pendukung' => $data['filter_dan_perangkat_pendukung'] ?? null,
|
|
'deskripsi_kondisi_mesin' => $data['deskripsi_kondisi_mesin'] ?? null,
|
|
|
|
'jaket_pelampung' => $data['jaket_pelampung'] ?? null,
|
|
'pintu_darurat' => $data['pintu_darurat'] ?? null,
|
|
'alat_pemadaman_kebakaran' => $data['alat_pemadaman_kebakaran'] ?? null,
|
|
'sistem_alaram_darurat' => $data['sistem_alaram_darurat'] ?? null,
|
|
'sekoci' => $data['sekoci'] ?? null,
|
|
'masker_oxigen' => $data['masker_oxigen'] ?? null,
|
|
'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null,
|
|
'deskripsi_fungsi_keselamatan' => $data['deskripsi_fungsi_keselamatan'] ?? null,
|
|
|
|
'sistem_ventilasi_ac' => $data['sistem_ventilasi_ac'] ?? null,
|
|
'sistem_penerangan_kabin' => $data['sistem_penerangan_kabin'] ?? null,
|
|
'panel_informasi_penumpang' => $data['panel_informasi_penumpang'] ?? null,
|
|
'sistem_hiburan_kabin' => $data['sistem_hiburan_kabin'] ?? null,
|
|
'deskripsi_Interior' => $data['deskripsi_Interior'] ?? null,
|
|
|
|
// Validasi untuk faktor dan kesimpulan
|
|
'faktor_positif' => $data['faktor_positif'] ?? null,
|
|
'faktor_negatif' => $data['faktor_negatif'] ?? null,
|
|
'kesimpulan' => $data['kesimpulan'] ?? null,
|
|
'catatan' => $data['catatan'] ?? null,
|
|
];
|
|
}
|
|
|
|
|
|
|
|
|
|
private function getUnitData($data, $request): array
|
|
{
|
|
return [
|
|
'action' => $data['action'] ?? null,
|
|
'luas_unit' => $data['luas_unit'] ?? null,
|
|
'luas_unit_tidak_sesuai' => $data['luas_unit_tidak_sesuai'] ?? null,
|
|
'jenis_unit' => $data['jenis_unit'] ?? null,
|
|
'kondisi_unit' => $data['kondisi_unit'] ?? null,
|
|
'posisi_unit' => $data['posisi_unit'] ?? null,
|
|
'lantai' => $data['lantai'] ?? null,
|
|
'view' => $data['view'] ?? null,
|
|
'bentuk_unit' => $data['bentuk_unit'] ?? null,
|
|
];
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// function upload file to storage
|
|
private function uploadFile($file, $type)
|
|
{
|
|
if (!$file->isValid()) {
|
|
throw new Exception("Invalid file upload for {$type}");
|
|
}
|
|
|
|
$fileName = time() . '_' . $file->getClientOriginalName();
|
|
$path = $file->storeAs("public/surveyor/{$type}", $fileName);
|
|
|
|
if ($path === false) {
|
|
throw new Exception("Failed to store file for {$type}");
|
|
}
|
|
|
|
return str_replace('public/', '', $path);
|
|
}
|
|
|
|
}
|