| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- namespace App\Http\Requests;
- use Illuminate\Foundation\Http\FormRequest;
- class CartRequest extends FormRequest
- {
- public function authorize(): bool
- {
- return true;
- }
- public function rules(): array
- {
- $rules = [
- 'client_id' => ['sometimes', 'integer', 'exists:clients,id'],
- 'provider_id' => ['sometimes', 'integer', 'exists:providers,id'],
- 'address_id' => ['sometimes', 'integer', 'exists:addresses,id'],
- 'date' => ['nullable', 'date', 'after_or_equal:today'],
- 'dates' => ['nullable', 'array'],
- 'dates.*' => ['date', 'after_or_equal:today'],
- 'schedules' => ['nullable', 'array'],
- 'schedules.*.provider_id' => ['sometimes', 'integer', 'exists:providers,id'],
- 'schedules.*.date' => ['required', 'date', 'after_or_equal:today'],
- 'schedules.*.period_type' => ['required', 'in:2,4,6,8'],
- 'schedules.*.start_time' => ['required', 'date_format:H:i'],
- 'schedules.*.end_time' => ['required', 'date_format:H:i', 'after:schedules.*.start_time'],
- 'schedules.*.total_amount' => ['required', 'numeric', 'min:0'],
- 'schedules.*.offers_meal' => ['nullable', 'boolean'],
- 'offers_meal' => ['sometimes', 'nullable', 'boolean'],
- 'period_type' => ['sometimes', 'in:2,4,6,8'],
- 'start_time' => ['sometimes', 'date_format:H:i'],
- 'end_time' => ['sometimes', 'date_format:H:i', 'after:start_time'],
- 'total_amount' => ['sometimes', 'numeric', 'min:0'],
- 'schedule_type' => ['sometimes', 'in:default,custom'],
- ];
- if ($this->isMethod('POST')) {
- $rules['client_id'] = ['required', 'integer', 'exists:clients,id'];
- if ($this->hasSchedulePayload()) {
- $rules['provider_id'] = ['required_without:schedules', 'integer', 'exists:providers,id'];
- $rules['address_id'] = ['required', 'integer', 'exists:addresses,id'];
- $rules['date'] = ['required_without_all:dates,schedules', 'nullable', 'date', 'after_or_equal:today'];
- $rules['dates'] = ['nullable', 'array'];
- $rules['dates.*'] = ['date', 'after_or_equal:today'];
- $rules['schedules'] = ['nullable', 'array', 'min:1'];
- $rules['schedules.*.provider_id'] = ['required_without:provider_id', 'integer', 'exists:providers,id'];
- $rules['schedules.*.date'] = ['required', 'date', 'after_or_equal:today'];
- $rules['schedules.*.period_type'] = ['required', 'in:2,4,6,8'];
- $rules['schedules.*.start_time'] = ['required', 'date_format:H:i'];
- $rules['schedules.*.end_time'] = ['required', 'date_format:H:i', 'after:schedules.*.start_time'];
- $rules['schedules.*.total_amount'] = ['required', 'numeric', 'min:0'];
- $rules['period_type'] = ['required_without:schedules', 'in:2,4,6,8'];
- $rules['start_time'] = ['required_without:schedules', 'date_format:H:i'];
- $rules['end_time'] = ['required_without:schedules', 'date_format:H:i', 'after:start_time'];
- $rules['total_amount'] = ['required_without:schedules', 'numeric', 'min:0'];
- }
- }
- return $rules;
- }
- private function hasSchedulePayload(): bool
- {
- return $this->filled('date')
- || $this->filled('dates')
- || $this->filled('schedules');
- }
- /**
- * Add custom messages when needed
- * public function messages(): array
- * {
- * return [
- * 'field.required' => __('message.algo'),
- * ];
- * }
- */
- }
|