41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace Tests\Traits;
|
||
|
|
|
||
|
|
use App\Models\Planner;
|
||
|
|
use App\Models\Schedule;
|
||
|
|
use App\Models\ScheduledUserDish;
|
||
|
|
use App\Models\User;
|
||
|
|
use Carbon\CarbonPeriod;
|
||
|
|
|
||
|
|
trait ScheduledDishesTestTrait
|
||
|
|
{
|
||
|
|
use DishesTestTrait;
|
||
|
|
|
||
|
|
public function generateScheduledDishes(Planner $planner, ?CarbonPeriod $period = null): void
|
||
|
|
{
|
||
|
|
$users = User::all();
|
||
|
|
$this->generateDishes($planner);
|
||
|
|
|
||
|
|
if (is_null($period)) {
|
||
|
|
$dateRangeStart = now();
|
||
|
|
$dateRangeEnd = now()->addWeeks(2);
|
||
|
|
|
||
|
|
$period = CarbonPeriod::create($dateRangeStart, $dateRangeEnd);
|
||
|
|
}
|
||
|
|
|
||
|
|
collect($period)
|
||
|
|
->each(function ($date) use ($users, $planner) {
|
||
|
|
$schedule = Schedule::factory()->planner($planner)->date($date)->create();
|
||
|
|
|
||
|
|
$users
|
||
|
|
->each(fn (User $user) => ScheduledUserDish::factory()
|
||
|
|
->schedule($schedule)
|
||
|
|
->user($user)
|
||
|
|
->userDish($user->userDishes->random())
|
||
|
|
->create()
|
||
|
|
);
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|