370 lines
12 KiB
PHP
370 lines
12 KiB
PHP
<?php
|
|
|
|
namespace Modules\Lpj\Http\Requests;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class FormSurveyorRequest extends FormRequest
|
|
{
|
|
/**
|
|
* Determine if the user is authorized to make this request.
|
|
*/
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Get the validation rules that apply to the request.
|
|
*/
|
|
public function rules(): array
|
|
{
|
|
|
|
$actionSpecificRules = $this->getActionSpecificRules();
|
|
return $actionSpecificRules;
|
|
}
|
|
|
|
/**
|
|
* Get rules specific to the action.
|
|
*/
|
|
private function getActionSpecificRules(): array
|
|
{
|
|
$action = $this->input('action');
|
|
$pisah = explode(',', $action);
|
|
|
|
$allRules = [
|
|
'tanah' => $this->getTanahRules(),
|
|
'bangunan' => $this->getBangunanRules(),
|
|
'kapal' => $this->getKapalRules(),
|
|
'kendaraan' => $this->getKendaraanRules(),
|
|
'mesin' => $this->getMesinRules(),
|
|
'pesawat' => $this->getLinkunganRules(),
|
|
'alat-berat' => $this->getLinkunganRules(),
|
|
'apartemen-kantor' => $this->getUnitRules(),
|
|
'lingkungan' => $this->getLinkunganRules(),
|
|
'fakta' => $this->getCommonRules(),
|
|
];
|
|
|
|
$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->getAssetDescriptionRules());
|
|
}
|
|
|
|
return $rules;
|
|
}
|
|
/**
|
|
* Get rules specific to tanah action.
|
|
*/
|
|
|
|
public function getTanahRules(): array
|
|
{
|
|
return [
|
|
'luas_tanah' => 'required',
|
|
'luas_tanah_tidak_sesuai' => 'nullable',
|
|
'hadap_mata_angin' => 'required',
|
|
'hadap_mata_angin_tidak_sesuai' => 'nullable',
|
|
'bentuk_tanah' => 'nullable|array',
|
|
'bentuk_tanah_lainnya' => 'nullable',
|
|
'kontur_tanah' => 'required|array',
|
|
'ketinggian_jalan' => 'required|array',
|
|
'kontur_jalan' => 'required',
|
|
'posisi_kavling' => 'required|array',
|
|
'posisi_kavling_lainnya' => 'nullable',
|
|
'tusuk_sate' => 'required',
|
|
'lockland' => 'required',
|
|
'kondisi_fisik_tanah' => 'required|array',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Get rules specific to Bangunan action.
|
|
*/
|
|
|
|
private function getBangunanRules(): array
|
|
{
|
|
return [
|
|
'action' => 'required',
|
|
'luas_tanah_bagunan' => 'required',
|
|
'jenis_bangunan' => 'required',
|
|
'kondisi_bangunan' => 'nullable',
|
|
'sifat_bangunan' => 'required|array',
|
|
'sifat_bangunan_input' => 'nullable|array',
|
|
'nama_bagunan' => 'required|array',
|
|
'spek_kategori_bangunan' => 'required|array',
|
|
'spek_kategori_bangunan.*' => 'required|string',
|
|
'sarana_pelengkap' => 'required',
|
|
'sarana_pelengkap_input' => 'nullable|array',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Get rules specific to unit action.
|
|
*/
|
|
private function getUnitRules(): array
|
|
{
|
|
return [
|
|
'action' => 'required',
|
|
'luas_unit' => 'required',
|
|
'luas_unit_tidak_sesuai' => 'nullable',
|
|
'jenis_unit' => 'required|array',
|
|
'kondisi_unit' => 'required|array',
|
|
'posisi_unit' => 'required|array',
|
|
'lantai' => 'required|array',
|
|
'view' => 'required|array',
|
|
'bentuk_unit' => 'required|array',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Get rules specific to Linkungan action.
|
|
*/
|
|
|
|
private function getLinkunganRules(): array
|
|
{
|
|
return [
|
|
'action' => 'required',
|
|
'jarak_jalan_utama' => 'nullable',
|
|
'jalan_linkungan' => 'nullable',
|
|
'jarak_cbd_point' => 'nullable',
|
|
'nama_cbd_point' => 'nullable',
|
|
'lebar_perkerasan_jalan' => 'nullable',
|
|
'perkerasan_jalan.*' => 'nullable',
|
|
'lalu_lintas' => 'nullable',
|
|
'gol_mas_sekitar' => 'nullable',
|
|
'tingkat_keramaian' => 'nullable',
|
|
'terletak_diarea' => 'nullable',
|
|
'disekitar_lokasi' => 'nullable',
|
|
'kondisi_bangunan_sekitar' => 'nullable',
|
|
'sifat_bangunan_sekitar' => 'nullable',
|
|
'dekat_makam' => 'nullable',
|
|
'jarak_makam' => 'nullable',
|
|
'nama_makam' => 'nullable',
|
|
'dekat_tps' => 'nullable',
|
|
'jarak_tps' => 'nullable',
|
|
'nama_tpu' => 'nullable',
|
|
'merupakan_daerah' => 'nullable',
|
|
'fasilitas_dekat_object' => 'nullable',
|
|
];
|
|
}
|
|
|
|
private function getKapalRules(): array
|
|
{
|
|
return [
|
|
'action' => 'required',
|
|
'nama_wakil_debitur' => 'required',
|
|
'hubungan_calon_debitur' => 'required',
|
|
'dermaga' => 'required',
|
|
'desa_kelurahan' => 'required',
|
|
'kecamatan' => 'required',
|
|
'kota_madya' => 'required',
|
|
'provinsi' => 'required',
|
|
'jenis.*' => 'required',
|
|
'size.*' => 'required',
|
|
'kondisi.*' => 'required',
|
|
'klasifikasi.*' => 'required',
|
|
'nama_kapal' => 'required',
|
|
'pemilik_kapal' => 'required',
|
|
'bendera' => 'required',
|
|
'nomor_tanda_selar_kapal' => 'required',
|
|
'galangan_kapal' => 'required',
|
|
'tahun_pembuatan' => 'required',
|
|
'tahun_launcing' => 'required',
|
|
'dwt' => 'required',
|
|
'lwt' => 'required',
|
|
'gross_tonnage' => 'required',
|
|
'net_tonnage' => 'required',
|
|
'tenaga_mesin' => 'required',
|
|
'loa' => 'required',
|
|
'lbp' => 'required',
|
|
'beam' => 'required',
|
|
'depth' => 'required',
|
|
'draft' => 'required',
|
|
'lambung_kapal' => 'required',
|
|
'dek' => 'required',
|
|
'struktur_kapal' => 'required',
|
|
'palka' => 'required',
|
|
'pondasi_mesin' => 'required',
|
|
'area_mesin' => 'required',
|
|
'cat_korosi' => 'required',
|
|
'sistem_pengelasan' => 'required',
|
|
'deskripsi_lain' => 'required',
|
|
'sekoci' => 'required',
|
|
'jaket_pelampung' => 'required',
|
|
'alat_pemadaman' => 'required',
|
|
'rambu_darurat' => 'required',
|
|
'sistem_pencegahan' => 'required',
|
|
'kebakaran' => 'required',
|
|
'lampu_darurat' => 'required',
|
|
'deskripsi_peralatan' => 'required',
|
|
'gps' => 'required',
|
|
'radar' => 'required',
|
|
'radio_komunikasi' => 'required',
|
|
'lampu_navigasi' => 'required',
|
|
'sistem_kendali_otomatis' => 'required',
|
|
'kompas' => 'required',
|
|
'deskripsi_navigasi' => 'required',
|
|
'mesin_utama' => 'required',
|
|
'mesin_bantu' => 'required',
|
|
'pompa_pendingin' => 'required',
|
|
'sistem_pelumasan' => 'required',
|
|
'propeller' => 'required',
|
|
'sistem_kelistrikan' => 'required',
|
|
'deskripsi_mesin_penggerak' => 'required',
|
|
'lampu_navigasi' => 'required',
|
|
'sistem_penerangan' => 'required',
|
|
'sistem_panel_distribusi' => 'required',
|
|
'kabel_perangkat' => 'required',
|
|
'deskripsi_kelistrikan' => 'required',
|
|
'kebersihan_dek_luar' => 'required',
|
|
'tangki_limbah' => 'required',
|
|
'sistem_pengelolaan_limbah' => 'required',
|
|
'pengelolaan_air_ballast' => 'required',
|
|
];
|
|
}
|
|
|
|
public function getKendaraanRules(): array
|
|
{
|
|
return [
|
|
'action' => 'required',
|
|
'kondisi_kendaraan' => 'required',
|
|
'kondisi_kendaraan_lain' => 'required',
|
|
];
|
|
}
|
|
|
|
|
|
public function getMesinRules(): array
|
|
{
|
|
return [
|
|
'action' => 'required',
|
|
'kondisi_mesin' => 'required',
|
|
'kondisi_mesin_lain' => 'required',
|
|
];
|
|
}
|
|
|
|
|
|
public function getAlatBeratRules(): array
|
|
{
|
|
return [
|
|
'action' => 'required',
|
|
'tanggal_survey' => 'required',
|
|
'nama_wakili' => 'required',
|
|
'hub_calon_debitur' => 'required',
|
|
'dengan_wadeb' => 'required',
|
|
'nama_jalan' => 'required',
|
|
'perumahan_gang'=>'required',
|
|
'blok' => 'required',
|
|
'desa_kelurahan' => 'required',
|
|
'kecamatan' => 'required',
|
|
'kota_madya' => 'required',
|
|
'provinsi' => 'required',
|
|
'masa_berlaku_stnk' => 'required',
|
|
'masa_berlaku_pajak' => 'required',
|
|
'kendaraan' => 'required',
|
|
'merk' => 'required',
|
|
'detail_merek' => 'required',
|
|
'kondisi' => 'required',
|
|
'nomor_polisi' => 'nullable',
|
|
'merek' => 'nullable',
|
|
'warna' => 'nullable',
|
|
'nomor_rangka'=>'nullable',
|
|
'nomor_mesin'=>'nullable',
|
|
'posisi_kilometer' => 'nullable',
|
|
'transmisi' => 'nullable',
|
|
'mesin_instrument' => 'nullable',
|
|
'fungsi_instrument' => 'nullable',
|
|
'interior' => 'nullable',
|
|
'jumlah' => 'nullable',
|
|
'rangka' => 'nullable',
|
|
'ban' => 'nullable',
|
|
'velg' => 'nullable',
|
|
'bamper_depan' => 'nullable',
|
|
'bamper_belakang' => 'nullable',
|
|
'lampu_depan' => 'nullable',
|
|
'lampu_belakang' => 'nullable',
|
|
'kaca' => 'nullable',
|
|
'air_conditions' => 'nullable',
|
|
'tape_radio' => 'nullable',
|
|
'sensor_parkir' => 'nullable',
|
|
'sensor_kamera' => 'nullable',
|
|
'lcd' => 'nullable',
|
|
'sabuk_keselamatan' => 'nullable',
|
|
'air_bag' => 'nullable',
|
|
'asuransi' => 'nullable',
|
|
'perusahan_asuransi' => 'nullable',
|
|
'tahun_berakhir' => 'nullable',
|
|
'faktor_positif' => 'nullable',
|
|
'faktor_negatif' => 'nullable',
|
|
'analisa_makro' => 'nullable',
|
|
'kesimpulan' => 'nullable',
|
|
'catatan_lainnya' => 'nullable',
|
|
];
|
|
}
|
|
|
|
|
|
private function getAssetDescriptionRules(): array
|
|
{
|
|
return [
|
|
'permohonan_id' => 'required',
|
|
'type' => 'required',
|
|
'debitur_perwakilan' => 'required|array',
|
|
'jenis_asset' => 'required',
|
|
'jenis_asset_tidak_sesuai' => 'nullable',
|
|
'alamat_sesuai' => 'required',
|
|
'alamat_tidak_sesuai' => 'nullable',
|
|
'nama_jalan' => 'nullable',
|
|
'desa_kelurahan' => 'nullable',
|
|
'kecamatan' => 'nullable',
|
|
'kota_kabupaten' => 'nullable',
|
|
'provinsi' => 'nullable',
|
|
'kordinat_lng' => 'nullable',
|
|
'kordinat_lat' => 'nullable',
|
|
];
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Get common rules that apply to all actions.
|
|
*/
|
|
private function getCommonRules(): array
|
|
{
|
|
return [
|
|
'fakta_positif' => 'nullable|array',
|
|
'fakta_negatif' => 'nullable|array',
|
|
'rute_menuju' => 'nullable',
|
|
'batas_batas' => 'nullable|array',
|
|
'kondisi_lingkungan' => 'nullable|array',
|
|
'kondisi_lain_bangunan' => 'nullable|array',
|
|
'informasi_dokument' => 'nullable',
|
|
'peruntukan' => 'nullable',
|
|
'kdb' => 'nullable',
|
|
'kdh' => 'nullable',
|
|
'gsb' => 'nullable',
|
|
'max_lantai' => 'nullable',
|
|
'klb' => 'nullable',
|
|
'gss' => 'nullable',
|
|
'pelebaran_jalan' => 'nullable',
|
|
'nama_petugas' => 'nullable',
|
|
'lat' => 'nullable|numeric',
|
|
'lng' => 'nullable|numeric',
|
|
'foto_gistaru' => 'nullable',
|
|
'foto_bhumi' => 'nullable',
|
|
'foto_argis_region' => 'nullable',
|
|
'foto_tempat' => 'nullable',
|
|
'keterangan' => 'nullable',
|
|
];
|
|
}
|
|
|
|
}
|