check(); } public function rules(): array { return [ 'fullname' => 'required|string|max:255', 'phone' => 'sometimes|required|string|max:20', 'company' => 'nullable|string|max:255', 'address' => 'nullable|string|max:500', 'province_code' => ['nullable', 'string', Rule::exists('provinces', 'code')], 'ward_code' => [ 'nullable', 'string', 'required_with:province_code', Rule::exists('wards', 'code')->where('province_code', $this->input('province_code')), ], 'gender' => ['nullable', Rule::enum(ClientGender::class)], 'birthday' => ['nullable', 'date_format:Y-m-d', 'before_or_equal:today', 'after:1900-01-01'], ]; } public function messages(): array { return [ 'fullname.required' => 'Họ tên là bắt buộc', 'phone.required' => 'Số điện thoại là bắt buộc', 'province_code.exists' => 'Tỉnh/Thành phố không hợp lệ', 'ward_code.required_with' => 'Vui lòng chọn Phường/Xã', 'ward_code.exists' => 'Phường/Xã không thuộc Tỉnh/Thành phố đã chọn', 'birthday.before_or_equal' => 'Ngày sinh không được ở tương lai', ]; } }