*/ public function rules(): array { return [ 'item_id' => 'required|exists:info_items,item', 'sub_item_id' => 'required|exists:info_items,id', 'rahdaran' => 'array', 'rahdaran.*' => 'exists:rahdaran,id', 'requested_machines' => 'required|array', 'type' => 'required|in:1,2', 'zone' => 'required|in:1,2,3', 'start_date' => 'required|date', 'end_date' => 'required|date', 'end_point' => 'required|string', 'encoded_route' => 'required|string', 'explanation' => 'required|string', 'category_id' => 'required|in:1,2,3', ]; } public function after(): array { return [ function (Validator $validator) { if ($this->type == 1) { $start = Carbon::parse($this->start_date); $end = Carbon::parse($this->end_date); if ($start->diffInMinutes($end) > 480) { $validator->errors()->add( 'end_date', 'مدت زمان مأموریت ساعتی نباید بیشتر از ۸ ساعت باشد.' ); } } if (strtotime($this->end_date) < strtotime($this->start_date)) { $validator->errors()->add( 'time', 'زمان پایان ماموریت باید بعد از زمان شروع ماموریت باشد.' ); } }, ]; } }