28 lines
828 B
PHP
28 lines
828 B
PHP
<?php
|
|
|
|
namespace DishPlanner\Schedule\Actions;
|
|
|
|
use App\Models\Schedule;
|
|
use App\Models\ScheduledUserDish;
|
|
use App\Models\User;
|
|
|
|
class DraftScheduleForDateAction
|
|
{
|
|
public function execute(Schedule $schedule): Schedule
|
|
{
|
|
User::all()
|
|
->reject(fn($user) => $schedule
|
|
->scheduledUserDishes
|
|
->map(fn (ScheduledUserDish $scheduledUserDish) => $scheduledUserDish->userDish?->user)
|
|
->filter()
|
|
->contains($user)
|
|
)
|
|
->each(fn (User $user) => $user->userDishes->isNotEmpty() && ScheduledUserDish::create([
|
|
'schedule_id' => $schedule->id,
|
|
'user_dish_id' => $user->userDishes->random()->id,
|
|
'user_id' => $user->id,
|
|
]));
|
|
|
|
return $schedule->refresh();
|
|
}
|
|
}
|