'required|array', 'nama_kjpp_sebelumnya.*' => 'exists:kjpp,name', 'biaya_kjpp_sebelumnya' => 'required|numeric', 'tanggal_penilaian_sebelumnya' => 'required', 'nomor_registrasi' => 'required', 'tujuan_penilaian_kjpp_id' => 'required', 'jenis_laporan_id' => 'required', 'start_date' => 'required', 'end_date' => 'required', 'catatan' => 'nullable', 'status' => 'required' ]; if ($this->method() == 'PUT') { $rules['code'] = 'required|max:50|unique:penawaran,code,' . $this->id; } else { $rules['code'] = 'required|max:50|unique:penawaran,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 Penawaran Wajib diisi!', 'code.max' => 'Kode Penawaran maksimal 255 huruf!', 'code.unique' => 'Kode Penawaran tidak boleh sama!', 'nama_kjpp_sebelumnya.required' => 'Nama KJPP Sebelumnya Wajib diisi!', 'biaya_kjpp_sebelumnya.required' => 'Biaya KJPP Sebelumnya Wajib diisi!', 'tanggal_penilaian_sebelumnya.required' => 'Tanggal Penilaian Sebelumnya Wajib diisi!', 'nomor_registrasi.required' => 'Nomor Registrasi Wajib diisi!', 'tujuan_penilaian_kjpp_id.required' => 'Tujuan Penilaian KJPP Wajib diisi!', 'jenis_laporan_id.required' => 'Jenis Laporan Wajib diisi!', 'start_date.required' => 'Tanggal Awal Wajib diisi!', 'end_date.required' => 'Tanggal Akhir Wajib diisi!', 'status.required' => 'Status Wajib diisi!' ]; } public function withValidator($validator) { $validator->after(function ($validator) { $startDate = strtotime($this->input('start_date')); $endDate = strtotime($this->input('end_date')); if ($endDate < $startDate) { $validator->errors()->add('end_date', 'End date tidak boleh lebih awal dari start date.'); } }); } }