80 lines
2.4 KiB
PHP

<?php
namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use App\Enums\RoleEnum;
use App\Enums\StatusEnum;
use App\Models\Car;
use App\Models\Delivery;
use App\Models\User;
use App\Models\Warehouse;
use Carbon\Carbon;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
$warehouses = Warehouse::factory()
->count(5)
->create();
foreach ($warehouses as $warehouse) {
$drivers = User::factory()
->count(10)
->for($warehouse)
->create([
'role' => RoleEnum::DRIVER
]);
foreach ($drivers as $driver) {
Car::factory()
->for($driver)
->create();
}
User::factory()
->count(2)
->for($warehouse)
->create([
'role' => RoleEnum::DISPATCHER
]);
User::factory()
->for($warehouse)
->create([
'role' => RoleEnum::ADMIN
]);
foreach ($drivers as $driver) {
$rndYear = rand(1, 5);
$rndDays = rand(1, 7);
Delivery::factory()
->count(3)
->for($warehouse)
->for($driver)
->create([
'status' => StatusEnum::CREATED
]);
Delivery::factory()
->count(3)
->for($warehouse)
->for($driver)
->create([
'status' => StatusEnum::SENT,
'sending_date' => Carbon::now()->subDays($rndDays),
]);
Delivery::factory()
->count(200)
->for($warehouse)
->for($driver)
->create([
'status' => StatusEnum::DELIVERED,
'sending_date' => Carbon::now()->subYears($rndYear)->subDays($rndDays),
'delivery_date' => Carbon::now()->subYears($rndYear),
]);
}
}
}
}