File: D:/HostingSpaces/SBogers10/beat-the-barn.komma.nl/database/seeds/VacancySeeder.php
<?php
use App\Vacancies\Models\Vacancy;
use App\Vacancies\Models\VacancyTranslation;
use Illuminate\Support\Str;
use Komma\KMS\Globalization\Languages\Models\Language;
use Illuminate\Database\Seeder;
use Illuminate\Support\Collection;
class VacancySeeder extends Seeder
{
/** @var Vacancy */
private $rootVacancy;
/** @var \Faker\Generator */
private $faker;
/** @var Collection */
private $languages;
/**
* Run the seed
*/
public function run()
{
//Create a faker to generate fake data.
$this->faker = Faker\Factory::create();
//Create the root vacancy
$this->rootVacancy = new Vacancy(['active' => 0]);
$this->rootVacancy->makeRoot();
//Get the languages
$this->languages = Language::whereIn('iso_2', config('seeds.languages'))->get(['id', 'iso_2']);
for($index = 0; $index < config('seeds.models.vacancies'); $index++) {
$this->createVacancy();
}
}
/**
* @param null $jobTitle
*
* @return Vacancy
*/
private function createVacancy($jobTitle = null): Vacancy
{
//Create the vacancy itself...
$vacancy = new Vacancy([
'active' => 1,
'code_name' => $this->faker->words(3,true),
]);
$vacancy->makeLastChildOf($this->rootVacancy);
$vacancy->save();
foreach ($this->languages as $language) {
$faker = Faker\Factory::create(strtolower($language->iso_2) . '_' . strtoupper($language->iso_2));
$vacancyTitle = $faker->jobTitle;
$vacancyTranslation = new VacancyTranslation([
'slug' => Str::slug($vacancyTitle),
'name' => $vacancyTitle,
]);
$vacancyTranslation->language()->associate($language);
$vacancyTranslation->translatable()->associate($vacancy);
$vacancyTranslation->save();
}
return $vacancy;
}
}