106 lines
2.7 KiB
PHP
106 lines
2.7 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace DishPlanner\Planner\Actions;
|
||
|
|
|
||
|
|
use App\Models\Dish;
|
||
|
|
use App\Models\Planner;
|
||
|
|
use App\Models\User;
|
||
|
|
use DishPlanner\Schedule\Actions\GenerateScheduleForPeriodAction;
|
||
|
|
|
||
|
|
class SeedDemoPlannerAction
|
||
|
|
{
|
||
|
|
private array $dishNames = [
|
||
|
|
'Spaghetti Bolognese',
|
||
|
|
'Chicken Curry',
|
||
|
|
'Caesar Salad',
|
||
|
|
'Beef Stir Fry',
|
||
|
|
'Vegetable Lasagna',
|
||
|
|
'Fish Tacos',
|
||
|
|
'Mushroom Risotto',
|
||
|
|
'BBQ Ribs',
|
||
|
|
'Greek Salad',
|
||
|
|
'Pad Thai',
|
||
|
|
'Margherita Pizza',
|
||
|
|
'Beef Burger',
|
||
|
|
'Chicken Fajitas',
|
||
|
|
'Vegetable Soup',
|
||
|
|
'Salmon Teriyaki',
|
||
|
|
'Lamb Chops',
|
||
|
|
'Shrimp Scampi',
|
||
|
|
'Pulled Pork Sandwich',
|
||
|
|
'Caprese Salad',
|
||
|
|
'Beef Tacos',
|
||
|
|
'Chicken Alfredo',
|
||
|
|
'Vegetable Curry',
|
||
|
|
'Pork Schnitzel',
|
||
|
|
'Tuna Poke Bowl',
|
||
|
|
'Beef Stroganoff',
|
||
|
|
'Chicken Parmesan',
|
||
|
|
'Ratatouille',
|
||
|
|
'Fish and Chips',
|
||
|
|
'Lamb Kebabs',
|
||
|
|
'Shrimp Fried Rice',
|
||
|
|
'Pork Tenderloin',
|
||
|
|
'Nicoise Salad',
|
||
|
|
'Beef Burritos',
|
||
|
|
'Chicken Tikka Masala',
|
||
|
|
'Eggplant Parmesan',
|
||
|
|
'Grilled Salmon',
|
||
|
|
'Lamb Tagine',
|
||
|
|
'Lobster Roll',
|
||
|
|
'Pork Belly',
|
||
|
|
'Waldorf Salad',
|
||
|
|
'Beef Wellington',
|
||
|
|
'Chicken Satay',
|
||
|
|
'Stuffed Peppers',
|
||
|
|
'Miso Glazed Cod',
|
||
|
|
'Lamb Shanks',
|
||
|
|
'Crab Cakes',
|
||
|
|
'Pork Carnitas',
|
||
|
|
'Cobb Salad',
|
||
|
|
'Beef Enchiladas',
|
||
|
|
'Chicken Shawarma',
|
||
|
|
];
|
||
|
|
|
||
|
|
public function execute(Planner $planner): void
|
||
|
|
{
|
||
|
|
$users = $this->createUsers($planner);
|
||
|
|
$this->createDishes($planner, $users);
|
||
|
|
$this->generateSchedule($planner);
|
||
|
|
}
|
||
|
|
|
||
|
|
private function createUsers(Planner $planner): array
|
||
|
|
{
|
||
|
|
$names = ['Alice', 'Bob', 'Charlie'];
|
||
|
|
|
||
|
|
return array_map(
|
||
|
|
fn (string $name) => User::create([
|
||
|
|
'planner_id' => $planner->id,
|
||
|
|
'name' => $name,
|
||
|
|
]),
|
||
|
|
$names
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
private function createDishes(Planner $planner, array $users): void
|
||
|
|
{
|
||
|
|
foreach ($this->dishNames as $dishName) {
|
||
|
|
$dish = Dish::create([
|
||
|
|
'planner_id' => $planner->id,
|
||
|
|
'name' => $dishName,
|
||
|
|
]);
|
||
|
|
|
||
|
|
// Randomly assign dish to 1-3 users
|
||
|
|
$count = rand(1, count($users));
|
||
|
|
$assignedUsers = collect($users)->random($count);
|
||
|
|
$userIds = $count === 1 ? [$assignedUsers->id] : $assignedUsers->pluck('id');
|
||
|
|
$dish->users()->attach($userIds);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private function generateSchedule(Planner $planner): void
|
||
|
|
{
|
||
|
|
resolve(GenerateScheduleForPeriodAction::class)->execute($planner);
|
||
|
|
}
|
||
|
|
}
|