%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/geotechnics/api/database/seeds/
Upload File :
Create Path :
Current File : /var/www/html/geotechnics/api/database/seeds/ProjectsTableSeeder.php

<?php

use App\Models\Project;
use Illuminate\Database\Seeder;

class ProjectsTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //DRAFT
        factory(Project::class, 10)
            ->make([])
            ->each(function (Project $project) {
                $this->draftProject($project);
            });

        //WAITING FOR REVIEW
        factory(Project::class, 10)
            ->make([])
            ->each(function (Project $project) {
                $this->draftProject($project);
                $project->requestQuotation();
            });

        //ACCEPTED QUOTATIONS
        factory(Project::class, 10)
            ->make([])
            ->each(function (Project $project) {
                $this->draftProject($project);
                $project->requestQuotation();
                $manager = \App\Models\User::query()
                                           ->whereHas('roles')
                                           ->orderByRaw('RAND()')
                                           ->first();
                $project->acceptQuotation($manager->id);
                $project->save();
            });

        //REJECTED QUOTATIONS
        factory(Project::class, 10)
            ->make([])
            ->each(function (Project $project) {
                $this->draftProject($project);
                $project->requestQuotation();
                $reason = \App\Models\Category::query()
                                              ->orderByRaw('RAND()')
                                              ->first();
                $project->rejectQuotation($reason);
            });

        //IN PROGRESS PROJECTS
        factory(Project::class, 10)
            ->make([])
            ->each(function (Project $project) {
                $this->draftProject($project);
                $project->requestQuotation();
                $manager = \App\Models\User::query()
                                           ->whereHas('roles')
                                           ->orderByRaw('RAND()')
                                           ->first();
                $project->acceptQuotation($manager->id);
                $project->updateProgress(rand(1, 1000));
                $project->updateProgress(rand(1, 1000));
            });

        //FINISHED PROJECTS
        factory(Project::class, 10)
            ->make([])
            ->each(function (Project $project) {
                $this->draftProject($project);
                $project->requestQuotation();
                $manager = \App\Models\User::query()
                                           ->whereHas('roles')
                                           ->orderByRaw('RAND()')
                                           ->first();
                $project->acceptQuotation($manager->id);
                $project->updateProgress(rand(1, 1000));
                $project->markAsDone();
            });

    }

    private function draftProject(Project $project)
    {
        $client = \App\Models\User::query()
                                  ->whereDoesntHave('roles')
                                  ->orderByRaw('RAND()')
                                  ->first();
        $project->client()
                ->associate($client);
        $service = \App\Models\Service::query()
                                      ->orderByRaw('RAND()')
                                      ->first();
        $project->save();
        $project->services()
                ->attach($service);
        $project->save();
    }
}

Zerion Mini Shell 1.0