Mahdee Rajon
File "ProjectSeeder.php"
Full Path: /var/www/html/back/database/seeders/ProjectSeeder.php
File size: 2.15 KB
MIME-type: text/x-php
Charset: utf-8
<?php
declare(strict_types=1);
namespace Database\Seeders;
use App\Domain\Project\Enums\ProjectStatusEnum;
use App\Domain\Project\Requests\CreateProjectGroupRequest;
use App\Domain\Project\Requests\CreateProjectRequest;
use App\Domain\Project\Services\ProjectGroupService;
use App\Domain\Project\Services\ProjectService;
use App\Enums\ModelsEnum;
use Illuminate\Database\Seeder;
class ProjectSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
//Group seed
/** @var ProjectGroupService $groupService */
$groupService = app()->make(ProjectGroupService::class);
$groups = [];
foreach (ModelsEnum::cases() as $case) {
for ($i = 0; $i < 10; $i++) {
$group = $groupService->create($case->value, new CreateProjectGroupRequest([
'name' => 'Группа проектов ' . $case->value . '-' . ($i + 1) . '-' . $case->value
]));
$groups[$case->value][] = $group->id;
}
}
/** @var ProjectService $ProjectService */
$ProjectService = app()->make(ProjectService::class);
foreach (ModelsEnum::cases() as $case) {
for ($i = 0; $i < 10; $i++) {
$ProjectService->create($case->value, new CreateProjectRequest([
'project_group_id' => fake()->randomElement(array_merge($groups[$case->value], [null])),
'status' => fake()->randomElement([
ProjectStatusEnum::PROJECT_STATUS_ACTIVE->value,
ProjectStatusEnum::PROJECT_STATUS_FINISHED->value,
]),
'offer_number' => 'Договор № ' . random_int(1000, 9999) . ' от ' . fake()->date('Y/m/d'),
'object_address' => fake()->address(),
'short_description' => 'Короткое описание для ' . $case->value . '-' . ($i + 1) . '-' . $case->value,
'description' => 'Длинное описание для ' . $case->value . '-' . ($i + 1) . '-' . $case->value,
]));
}
}
}
}