%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/workeasy-api/database/seeds/
Upload File :
Create Path :
Current File : /var/www/html/workeasy-api/database/seeds/CandidatesTableSeeder.php

<?php

use Carbon\Carbon;
use Faker\Generator as Faker;
use Illuminate\Database\Seeder;
use Workeasy\Models\Experience;
use Workeasy\Models\Interview;
use Workeasy\Models\Offer;
use Workeasy\Models\Role;
use Workeasy\Models\User;

class CandidatesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @param \Faker\Generator $faker
     *
     * @return void
     */
    public function run(Faker $faker)
    {
        $hasOffers = Offer::query()->count() > 0;
        factory(User::class)->times(10)->create()->each(function ($user) use ($faker, $hasOffers) {
            $role_id = Role::query()->where('name', 'CANDIDATE')->first()->id;
            /** @var User $user */
            $user->roles()->attach($role_id);
            $candidate = $user->candidate()->create([
                'name'         => $faker->firstName,
                'surname'      => $faker->lastName,
                'age'          => $faker->randomDigitNotNull,
                'description'  => $faker->word,
                'phone_number' => $faker->randomDigit,
            ]);
            /** @var Interview $interview */
            if ($hasOffers) {
                $interview = Interview::query()->make([
                    'status' => Interview::PENDING,
                ]);
                $interview->candidate()->associate($candidate);
                $interview->offer()->associate($this->getRandomOffer());
                $interview->save();
                $interview->feedback()->create([
                    'rating'      => rand(1, 5),
                    'description' => $faker->sentence(),
                ]);
            }
            $xp = rand(0, 4);
            for ($i = 0; $i < $xp; $i++) {
                /** @var Experience $experience */
                $start = Carbon::now()->addYear(-1)->startOfYear();
                $end = Carbon::now()->addYear(-1)->endOfYear();
                $experience = Experience::query()->make([
                    'position'    => $faker->word,
                    'company'     => $faker->word,
                    'description' => $faker->sentence(),
                    'start_date'  => $faker->dateTimeBetween($start, $end),
                    'end_date'    => $faker->dateTimeBetween($start, $end),
                ]);
                $experience->candidate()->associate($candidate);
                $experience->save();
            }
        });
    }

    private function getRandomOffer()
    {
        $offer = Offer::query()->orderByRaw('RAND()')->first();
        if (!$offer) {
            return $this->getRandomOffer();
        }
        return $offer;
    }

}

Zerion Mini Shell 1.0