toby/database/factories/ResumeFactory.php
Adrian Hopek 431262dfb7
#134 - fill users data for resume (#144)
* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* lint fixes

* missing empty lines

* translations

* fix vue version

* #134 - fixes

* fix

* fix

* #134 - fix

* fix

* fix

* #134 - added tests

* #134 - fix to translations

* #134 - tests

* #134 - fix

* Update database/factories/ResumeFactory.php

Co-authored-by: Krzysztof Rewak <krzysztof.rewak@gmail.com>

* #134 - fix

* #134 - fix

Co-authored-by: EwelinaLasowy <ewelina.lasowy@blumilk.pl>
Co-authored-by: Krzysztof Rewak <krzysztof.rewak@gmail.com>
2022-05-18 08:50:41 +02:00

93 lines
2.9 KiB
PHP

<?php
declare(strict_types=1);
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
use Toby\Eloquent\Models\Resume;
use Toby\Eloquent\Models\Technology;
class ResumeFactory extends Factory
{
protected $model = Resume::class;
public function definition(): array
{
return [
"name" => fn(array $attributes): ?string => empty($attributes["user_id"]) ? $this->faker->name : null,
"education" => $this->generateEducation(),
"languages" => $this->generateLanguages(),
"technologies" => $this->generateTechnologies(),
"projects" => $this->generateProjects(),
];
}
protected function generateEducation(): array
{
$items = [];
for ($i = 0; $i < $this->faker->numberBetween(1, 2); $i++) {
$items[] = [
"school" => $this->faker->sentence,
"degree" => $this->faker->sentence,
"fieldOfStudy" => $this->faker->sentence,
"current" => false,
"startDate" => Carbon::create($this->faker->date)->format("m/Y"),
"endDate" => Carbon::create($this->faker->date)->format("m/Y"),
];
}
return $items;
}
protected function generateLanguages(): array
{
$languages = new Collection(["English", "Polish", "German"]);
$number = $this->faker->numberBetween(1, $languages->count());
return $languages->random($number)
->map(fn(string $language): array => [
"name" => $language,
"level" => $this->faker->numberBetween(1, 6),
])
->all();
}
protected function generateTechnologies(): array
{
$technologies = Technology::all()->pluck("name");
$number = $this->faker->numberBetween(2, $technologies->count());
return $technologies->random($number)
->map(fn(string $technology): array => [
"name" => $technology,
"level" => $this->faker->numberBetween(1, 5),
])
->all();
}
protected function generateProjects(): array
{
$items = [];
$technologies = Technology::all()->pluck("name");
for ($i = 0; $i < $this->faker->numberBetween(1, 3); $i++) {
$number = $this->faker->numberBetween(2, $technologies->count());
$items[] = [
"description" => $this->faker->text,
"technologies" => $technologies->random($number)->all(),
"current" => false,
"startDate" => Carbon::create($this->faker->date)->format("m/Y"),
"endDate" => Carbon::create($this->faker->date)->format("m/Y"),
"tasks" => $this->faker->text,
];
}
return $items;
}
}