Merge branch 'staging' of https://git.putrakuningan.com/daengdeni/lpj into tender

This commit is contained in:
2024-11-06 17:47:20 +07:00
79 changed files with 5441 additions and 1199 deletions

View File

@@ -33,11 +33,16 @@ class PenilaianRequest extends FormRequest
'tanggal_kunjungan' => 'required|max:255',
'status' => 'required|string',
'nomor_registrasi' => 'required|string',
'surveyor_id' => 'nullable|required_without:penilai_surveyor_id',
'penilaian_id' => 'nullable|required_without:penilai_surveyor_id',
'penilai_surveyor_id' => 'nullable|required_without_all:surveyor_id,penilaian_id',
'surveyor_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_region_id,penilai_id',
'penilai_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_region_id,surveyor_id',
'penilai_surveyor_id' => 'nullable',
'surveyor_region_id' => 'nullable|required_without_all:penilai_surveyor_id,penilai_region_id,penilai_id,surveyor_id',
'penilai_region_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_id,surveyor_id',
'keterangan' => 'nullable',
];
}

View File

@@ -17,10 +17,10 @@
'nomor_registrasi' => 'nullable|string|max:10',
'tanggal_permohonan' => 'nullable|date',
'user_id' => 'nullable|exists:users,id',
'branch_id' => 'required|exists:branches,id',
'branch_id' => 'nullable|exists:branches,id',
'tujuan_penilaian_id' => 'required|exists:tujuan_penilaian,id',
'debiture_id' => 'required|exists:debitures,id',
'status' => 'required|string',
'status' => 'nullable|string',
'jenis_fasilitas_kredit_id' => 'required|exists:jenis_fasilitas_kredit,id',
'nilai_plafond_id' => 'required|exists:nilai_plafond,id',
'status_bayar' => 'required|string',
@@ -49,6 +49,7 @@
'tanggal_permohonan' => date('Y-m-d'),
'user_id' => auth()->user()->id,
'branch_id' => auth()->user()->branch_id,
'status' => 'order'
]);
}
}

View File

@@ -4,62 +4,138 @@ namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class SurveyorRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
* Table mapping for different actionszz
*/
public function rules()
: array
{
$action = $this->input('action');
$uniqueTable = [
'bentuk-tanah' => 'bentuk_tanah',
'kontur-tanah' => 'kontur_tanah',
'posisi-kavling' => 'posisi_kavling',
'ketinggian-tanah' => 'ketinggian_tanah',
'kondisi-fisik-tanah' => 'kondisi_fisik_tanah',
'kondisi-bangunan' => 'kondisi_bangunan',
'jenis-bangunan' => 'jenis_bangunan',
'sifat-bangunan' => 'sifat_bangunan',
'sarana-pelengkap' => 'sarana_pelengkap',
'lalu_lintas_lokasi' => 'lalu_lintas_lokasi',
'tingkat-keramaian' => 'tingkat_keramaian',
];
$rules = [
'name' => 'required|max:255',
];
$id = $this->route('id');
if ($this->method() == 'PUT' || $this->method() == 'PATCH') {
$rules['code'] = 'required|max:50|unique:' . $uniqueTable[$action] . ',code,' . $id;
} else {
$rules['code'] = 'required|max:50|unique:' . $uniqueTable[$action] . ',code';
}
return $rules;
}
private const TABLE_MAPPING = [
'bentuk-tanah' => 'bentuk_tanah',
'kontur-tanah' => 'kontur_tanah',
'posisi-kavling' => 'posisi_kavling',
'ketinggian-tanah' => 'ketinggian_tanah',
'kondisi-fisik-tanah' => 'kondisi_fisik_tanah',
'kondisi-bangunan' => 'kondisi_bangunan',
'jenis-bangunan' => 'jenis_bangunan',
'sifat-bangunan' => 'sifat_bangunan',
'sarana-pelengkap' => 'sarana_pelengkap',
'lalu-lintas-lokasi' => 'lalu_lintas_lokasi',
'tingkat-keramaian' => 'tingkat_keramaian',
'gol-mas-sekitar' => 'gol_mas_sekitar',
'spek-kategori-bangunan' => 'spek_kategori_bangunan',
'spek-bangunan' => 'spek_bangunan',
'lantai-unit' => 'lantai',
'view-unit' => 'view_unit',
];
/**
* Determine if the user is authorized to make this request.
*/
public function authorize()
: bool
public function authorize(): bool
{
return true;
}
protected function prepareForValidation()
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return array_merge(
$this->getBaseRules(),
$this->getActionSpecificRules(),
$this->getCodeValidationRules()
);
}
/**
* Get base validation rules
*/
private function getBaseRules(): array
{
return [
'name' => 'required|max:255',
];
}
/**
* Get action specific validation rules
*/
private function getActionSpecificRules(): array
{
$action = $this->input('action');
return match ($action) {
'spek-bangunan' => [
'spek_kategori_bangunan_id' => [
'required',
],
],
// Add more action specific rules here
default => [],
};
}
/**
* Get code validation rules
*/
private function getCodeValidationRules(): array
{
$action = $this->input('action');
$table = self::TABLE_MAPPING[$action] ?? null;
if (!$table) {
return [];
}
$rules = ['required', 'max:50'];
if ($this->isMethod('PUT') || $this->isMethod('PATCH')) {
$rules[] = Rule::unique($table, 'code')->ignore($this->route('id'));
} else {
$rules[] = Rule::unique($table, 'code');
}
return ['code' => $rules];
}
/**
* Prepare the data for validation.
*/
protected function prepareForValidation(): void
{
$this->merge([
'status' => true,
]);
}
/**
* Get custom messages for validator errors.
*/
public function messages(): array
{
return [
'name.required' => 'Nama harus diisi',
'name.max' => 'Nama tidak boleh lebih dari 255 karakter',
'code.required' => 'Kode harus diisi',
'code.max' => 'Kode tidak boleh lebih dari 50 karakter',
'code.unique' => 'Kode sudah digunakan',
'spek_kategori_bangunan_id.required' => 'Kategori bangunan harus dipilih',
];
}
/**
* Get custom attributes for validator errors.
*/
public function attributes(): array
{
return [
'name' => 'Nama',
'code' => 'Kode',
'spek_kategori_bangunan_id' => 'Kategori Bangunan',
];
}
}