findForScheduleAndUser($schedule, $user); $fixedUserDish = resolve(UserDishRepository::class)->findForUserByFixedRecurrenceOnDay($user, $schedule->date->dayOfWeek); /** @var CreateScheduledUserDishAction $createAction */ $createAction = resolve(CreateScheduledUserDishAction::class); if (is_null($scheduledUserDish)) { return $createAction->execute( planner: $planner, schedule: $schedule, userDish: $fixedUserDish ?? $user->userDishes->random(), ); } if (!$overwrite && $scheduledUserDish->userDish) { return $scheduledUserDish; } if ($fixedUserDish && $scheduledUserDish->user_dish_id === $fixedUserDish->id) { return $scheduledUserDish; } $scheduledUserDish->delete(); return $createAction->execute( planner: $planner, schedule: $schedule, userDish: $fixedUserDish ?? $user->userDishes->random(), ); } }