user_dish_id); Gate::authorize('assign', $userDish); $date = Carbon::createFromFormat('Y-m-d', $request->date); /** @var Planner $planner */ $planner = auth()->user(); $schedule = resolve(ScheduleRepository::class)->findOrCreate($planner, $date); try { $scheduledUserDish = (new CreateScheduledUserDishAction)->execute( planner: $planner, schedule: $schedule, userDish: $userDish, ); } catch (InvalidPlannerException $e) { return $this->error($e->getMessage(), 404); } return $this->success([ 'scheduled_user_dish' => new ScheduledUserDishResource($scheduledUserDish), ]); } public function read(ScheduledUserDish $scheduledUserDish): JsonResponse { Gate::authorize('view', $scheduledUserDish); return $this->success([ 'scheduled_user_dish' => new ScheduledUserDishResource($scheduledUserDish->refresh()), ]); } public function update(UpdateScheduledUserDishRequest $request, ScheduledUserDish $scheduledUserDish): JsonResponse { Gate::authorize('update', $scheduledUserDish); (new UpdateScheduledUserDishAction)->execute( scheduledUserDish: $scheduledUserDish, userDish: UserDish::find($request->user_dish_id), isSkipped: $request->is_skipped ?? null, ); return $this->success([ 'scheduled_user_dish' => new ScheduledUserDishResource($scheduledUserDish->refresh()), ]); } public function delete(ScheduledUserDish $scheduledUserDish): JsonResponse { Gate::authorize('delete', $scheduledUserDish); (new DeleteScheduledUserDishAction)->execute($scheduledUserDish); return $this->success(null); } }