*/ public function rules(): array { return [ 'account_number' => [ 'required', 'string', 'max:50', 'regex:/^[A-Z0-9-]+$/i' // Hanya alphanumeric dan dash ], 'start_date' => [ 'required', 'date_format:Y-m-d', 'before_or_equal:end_date', 'after_or_equal:1900-01-01', 'before_or_equal:today' ], 'end_date' => [ 'required', 'date_format:Y-m-d', 'after_or_equal:start_date', 'after_or_equal:1900-01-01', 'before_or_equal:today' ], ]; } /** * Get custom messages for validator errors. * * @return array */ public function messages(): array { return [ 'account_number.required' => 'Nomor rekening wajib diisi', 'account_number.string' => 'Nomor rekening harus berupa teks', 'account_number.max' => 'Nomor rekening maksimal 50 karakter', 'account_number.regex' => 'Nomor rekening hanya boleh mengandung huruf, angka, dan strip', 'start_date.required' => 'Tanggal awal wajib diisi', 'start_date.date_format' => 'Format tanggal awal harus YYYY-MM-DD', 'start_date.before_or_equal' => 'Tanggal awal harus sebelum atau sama dengan tanggal akhir', 'end_date.required' => 'Tanggal akhir wajib diisi', 'end_date.date_format' => 'Format tanggal akhir harus YYYY-MM-DD', 'end_date.after_or_equal' => 'Tanggal akhir harus sesudah atau sama dengan tanggal awal', ]; } /** * Prepare the data for validation. * * @return void */ protected function prepareForValidation(): void { Log::info('Balance summary request received', [ 'input' => $this->all(), 'ip' => $this->ip(), 'user_agent' => $this->userAgent() ]); } }