'required|string|not_regex:/^\d+$/|max:255', 'jenis_kantor' => 'required', 'nomor_ijin_usaha' => 'required', 'province_code' => 'required', 'city_code' => 'nullable', 'district_code' => 'nullable', 'village_code' => 'nullable', 'address' => 'required', 'postal_code' => 'nullable|numeric', 'nomor_telepon_kantor' => 'nullable|numeric|digits_between:8,15', 'email_kantor' => 'required|email', 'detail_email_kantor' => 'nullable|email', 'nama_pimpinan' => 'required|string|not_regex:/^\d+$/|max:255', 'nomor_hp_pimpinan' => 'required|numeric|digits_between:10,15', 'nama_pic_reviewer' => 'nullable|string|not_regex:/^\d+$/|max:255', // 'detail_nama_pic_reviewer' => 'nullable|string|not_regex:/^\d+$/|max:255', 'nomor_hp_pic_reviewer' => 'nullable|numeric|digits_between:10,15', // 'detail_nomor_hp_pic_reviewer' => 'nullable|numeric|digits_between:10,15', 'nama_pic_admin' => 'nullable|string|not_regex:/^\d+$/|max:255', // 'detail_nama_pic_admin' => 'nullable|string|not_regex:/^\d+$/|max:255', 'nomor_hp_pic_admin' => 'nullable|numeric|digits_between:10,15', // 'detail_nomor_hp_pic_admin' => 'nullable|numeric|digits_between:10,15', 'nama_pic_marketing' => 'nullable|string|not_regex:/^\d+$/|max:255', // 'detail_nama_pic_marketing' => 'nullable|string|not_regex:/^\d+$/|max:255', 'nomor_hp_pic_marketing' => 'nullable|numeric|digits_between:10,15', // 'detail_nomor_hp_pic_marketing' => 'nullable|numeric|digits_between:10,15', 'ijin_usaha_id' => 'nullable|array', 'ijin_usaha_id.*' => 'exists:ijin_usaha,code', 'jenis_aset_id' => 'nullable|array', 'jenis_aset_id.*' => 'exists:jenis_jaminan,code', 'attachment' => 'nullable|mimes:pdf|max:1024' ]; if ($this->method() == 'PUT') { $rules['code'] = 'required|max:50|unique:kjpp,code,' . $this->id; } else { $rules['code'] = 'required|max:50|unique:kjpp,code'; } return $rules; } /** * Determine if the user is authorized to make this request. */ public function authorize(): bool { return true; } public function messages(): array { return [ 'code.required' => 'Kode KJPP Wajib diisi!', 'code.max' => 'Kode KJPP maksimal 255 huruf!', 'code.unique' => 'Kode KJPP tidak boleh sama!', 'name.required' => 'Nama KJPP Wajib diisi!', 'name.not_regex' => 'Nama KJPP harus berupa huruf!', 'name.max' => 'Nama KJPP maksimal 255 huruf!', 'jenis_kantor.required' => 'Jenis Kantor Wajib diisi!', 'nomor_ijin_usaha.required' => 'Nomor Ijin Usaha Wajib diisi!', 'nomor_ijin_usaha.max' => 'Nomor Ijin Usaha maksimal 255 huruf!', 'province_code.required' => 'Provinsi Wajib diisi!', 'postal_code.numeric' => 'Kode Pos harus berupa angka!', 'address.required' => 'Alamat Kantor Wajib diisi!', 'nomor_telepon_kantor.numeric' => 'Nomor Telepon Kantor harus berupa angka!', 'nomor_telepon_kantor.digits_between' => 'Nomor Telepon Kantor minimum 8 digit dan maksimum 15 digit!', 'email_kantor.required' => 'Email Kantor Wajib diisi!', 'email_kantor.email' => 'Email Kantor tidak valid!', // 'detail_email_kantor.email' => 'Email Kantor tidak valid!', 'nama_pimpinan.required' => 'Nama Pimpinan Wajib diisi!', 'nama_pimpinan.not_regex' => 'Nama Pimpinan harus berupa huruf!', 'nomor_hp_pimpinan.required' => 'Nomor HP Pimpinan Wajib diisi!', 'nomor_hp_pimpinan.numeric' => 'Nomor HP Pimpinan harus berupa angka!', 'nomor_hp_pimpinan.digits_between' => 'Nomor HP Pimpinan minimum 10 digit dan maksimum 15 digit!', 'nama_pic_reviewer.not_regex' => 'Nama PIC Reviewer harus berupa huruf!', // 'detail_nama_pic_reviewer.not_regex' => 'Nama PIC Reviewer harus berupa huruf!', 'nomor_hp_pic_reviewer.numeric' => 'Nomor HP PIC Reviewer harus berupa angka!', // 'detail_nomor_hp_pic_reviewer.numeric' => 'Nomor HP PIC Reviewer harus berupa angka!', 'nomor_hp_pic_reviewer.digits_between' => 'Nomor HP PIC Reviewer minimum 10 digit dan maksimum 15 digit!', // 'detail_nomor_hp_pic_reviewer.digits_between' => 'Nomor HP PIC Reviewer minimum 10 digit dan maksimum 15 digit!', 'nama_pic_admin.not_regex' => 'Nama PIC Admin harus berupa huruf!', // 'detail_nama_pic_admin.not_regex' => 'Nama PIC Admin harus berupa huruf!', 'nomor_hp_pic_admin.numeric' => 'Nomor HP PIC Admin harus berupa angka!', // 'detail_nomor_hp_pic_admin.numeric' => 'Nomor HP PIC Admin harus berupa angka!', 'nomor_hp_pic_admin.digits_between' => 'Nomor HP PIC Admin minimum 10 digit dan maksimum 15 digit!', // 'detail_nomor_hp_pic_admin.digits_between' => 'Nomor HP PIC Admin minimum 10 digit dan maksimum 15 digit!', 'nama_pic_marketing.not_regex' => 'Nama PIC Marketing harus berupa huruf!', // 'detail_nama_pic_marketing.not_regex' => 'Nama PIC Marketing harus berupa huruf!', 'nomor_hp_pic_marketing.numeric' => 'Nomor HP PIC Marketing harus berupa angka!', // 'detail_nomor_hp_pic_marketing.numeric' => 'Nomor HP PIC Marketing harus berupa angka!', 'nomor_hp_pic_marketing.digits_between' => 'Nomor HP PIC Marketing minimum 10 digit dan maksimum 15 digit!', // 'detail_nomor_hp_pic_marketing.digits_between' => 'Nomor HP PIC Marketing minimum 10 digit dan maksimum 15 digit!', 'ijin_usaha_id.required' => 'Ijin Usaha Wajib diisi!', 'ijin_usaha_id.min' => 'Ijin Usaha Wajib diisi minimal satu atau lebih!', 'jenis_aset_id.required' => 'Jenis Aset Wajib diisi!', 'jenis_aset_id.min' => 'Jenis Aset Wajib diisi minimal satu atau lebih!', 'attachment.mimes' => 'Attachment harus berformat pdf!', 'attachment.max' => 'Attachment berukuran maksimum 1 MB!', ]; } public function prepareForValidation() { $detailEmailKantor = []; $detailNamaPicReviewer = []; $detailNomorHpPicReviewer = []; $detailNamaPicAdmin = []; $detailNomorHpPicAdmin = []; $detailNamaPicMarketing = []; $detailNomorHpPicMarketing = []; // Get input data with safe default values $emailKantor = $this->input('detail_email_kantor.email_kantor', []); $namaPicReviewer = $this->input('detail_nama_pic_reviewer.nama_pic_reviewer', []); $nomorHpPicReviewer = $this->input('detail_nomor_hp_pic_reviewer.nomor_hp_pic_reviewer', []); $namaPicAdmin = $this->input('detail_nama_pic_admin.nama_pic_admin', []); $nomorHpPicAdmin = $this->input('detail_nomor_hp_pic_admin.nomor_hp_pic_admin', []); $namaPicMarketing = $this->input('detail_nama_pic_marketing.nama_pic_marketing', []); $nomorHpPicMarketing = $this->input('detail_nomor_hp_pic_marketing.nomor_hp_pic_marketing', []); foreach ($emailKantor as $value) { $detailEmailKantor[] = [ 'email_kantor' => $value ]; } $this->merge([ 'detail_email_kantor' => json_encode($detailEmailKantor), ]); foreach ($namaPicReviewer as $value) { $detailNamaPicReviewer[] = [ 'nama_pic_reviewer' => $value ]; } $this->merge([ 'detail_nama_pic_reviewer' => json_encode($detailNamaPicReviewer), ]); foreach ($nomorHpPicReviewer as $value) { $detailNomorHpPicReviewer[] = [ 'nomor_hp_pic_reviewer' => $value ]; } $this->merge([ 'detail_nomor_hp_pic_reviewer' => json_encode($detailNomorHpPicReviewer), ]); foreach ($namaPicAdmin as $value) { $detailNamaPicAdmin[] = [ 'nama_pic_admin' => $value ]; } $this->merge([ 'detail_nama_pic_admin' => json_encode($detailNamaPicAdmin), ]); foreach ($nomorHpPicAdmin as $value) { $detailNomorHpPicAdmin[] = [ 'nomor_hp_pic_admin' => $value ]; } $this->merge([ 'detail_nomor_hp_pic_admin' => json_encode($detailNomorHpPicAdmin), ]); foreach ($namaPicMarketing as $value) { $detailNamaPicMarketing[] = [ 'nama_pic_marketing' => $value ]; } $this->merge([ 'detail_nama_pic_marketing' => json_encode($detailNamaPicMarketing), ]); foreach ($nomorHpPicMarketing as $value) { $detailNomorHpPicMarketing[] = [ 'nomor_hp_pic_marketing' => $value ]; } $this->merge([ 'detail_nomor_hp_pic_marketing' => json_encode($detailNomorHpPicMarketing), ]); } }