Mahdee Rajon  subception

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,

                ]));
            }
        }
    }
}