%PDF- %PDF-
Direktori : /var/www/html/workeasy-api/database/seeds/ |
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; } }