user()->can( 'create', [ TimeInterval::class, $this->get('user_id'), $this->get('task_id'), $this->get('is_manual', false), ], ); } public function _rules(): array { $timezone = Settings::scope('core')->get('timezone', 'UTC'); return [ 'task_id' => 'required|exists:tasks,id', 'user_id' => 'required|exists:users,id', 'start_at' => 'required|date|bail|before:end_at', 'end_at' => [ 'required', 'date', 'bail', 'after:start_at', new TimeIntervalDoesNotExist( User::find($this->user_id), Carbon::parse($this->start_at)->setTimezone($timezone), Carbon::parse($this->end_at)->setTimezone($timezone), ), ], 'activity_fill' => 'nullable|int|between:0,100', 'mouse_fill' => 'nullable|int|between:0,100', 'keyboard_fill' => 'nullable|int|between:0,100', 'is_manual' => 'sometimes|bool', 'location' => 'sometimes|array', 'screenshot' => 'sometimes|required|image', ]; } public function getRules($user_id, $start_at, $end_at): array { $this->user_id = $user_id; $this->start_at = $start_at; $this->end_at = $end_at; return $this->_rules(); } }