ldc-startcoq/database/factories/ProductFactory.php

86 lines
3 KiB
PHP
Raw Permalink Normal View History

2023-02-23 16:23:00 +01:00
<?php
namespace Database\Factories;
2023-06-21 10:24:56 +00:00
use App\Enums\Products\CertificationEnum;
use App\Enums\Products\ClaimEnum;
use App\Enums\Products\DistributionNetworkEnum;
use App\Enums\Products\GeoAreaEnum;
use App\Enums\Products\OriginEnum;
use App\Enums\Products\RangeEnum;
use App\Enums\Products\RayEnum;
use App\Enums\Products\SourceEnum;
2023-02-23 16:23:00 +01:00
use App\Models\Brand;
use App\Models\Product;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends Factory<\App\Models\Product>
*/
final class ProductFactory extends Factory
{
/**
2023-06-21 10:24:56 +00:00
* The name of the factory's corresponding model.
*
* @var string
*/
2023-02-23 16:23:00 +01:00
protected $model = Product::class;
/**
2023-06-21 10:24:56 +00:00
* Define the model's default state.
*
* @return array
*/
2023-02-23 16:23:00 +01:00
public function definition(): array
{
2023-09-11 12:22:32 +02:00
$source = \collect(SourceEnum::toArray())->random()->value;
$catalogue = null;
$fair = null;
$shop = null;
if (
$source === SourceEnum::showConsumer->value ||
$source === SourceEnum::showCustomer->value ||
$source === SourceEnum::showTrade->value
) {
2023-06-21 10:24:56 +00:00
$fair = fake()->word;
} elseif ($source === SourceEnum::magazin->value) {
$shop = fake()->word;
} elseif ($source === SourceEnum::catalogArgumentary->value) {
$catalogue = fake()->word;
}
$isTasted = fake()->boolean;
$claim = \collect(ClaimEnum::toArray())->random()->value;
2023-02-23 16:23:00 +01:00
return [
'user_id' => fake()->randomElement(User::pluck('id')),
'brand_id' => fake()->randomElement(Brand::pluck('id')),
2023-06-21 10:24:56 +00:00
'name' => fake()->unique()->word . " " . fake()->unique()->word,
'seen_at' => fake()->dateTime(),
2023-06-21 10:24:56 +00:00
'source' => $source,
'fair' => $fair,
'shop' => $shop,
'catalogue' => $catalogue,
'gencod' => fake()->numberBetween(0, 9999999999999),
'picture_alt' => fake()->text,
'picture_title' => fake()->text,
'docs' => [],
2023-02-23 16:23:00 +01:00
'url' => fake()->url,
2023-06-21 10:24:56 +00:00
'certification' => \collect(CertificationEnum::toArray())->random()->value,
2023-09-06 17:53:13 +02:00
'origins' => [\collect(OriginEnum::toArray())->random()->value],
'claims' => [$claim],
2023-06-21 10:24:56 +00:00
'specified_claim' => ($claim == OriginEnum::others->value) ? fake()->text : null,
'distribution_network' => \collect(DistributionNetworkEnum::toArray())->random()->value,
'ray' => \collect(RayEnum::toArray())->random()->value,
'product_range' => \collect(RangeEnum::toArray())->random()->value,
'geo_area' => \collect(GeoAreaEnum::toArray())->random()->value,
2023-02-23 16:23:00 +01:00
'weight' => fake()->randomNumber(),
'pvc' => fake()->randomNumber(),
2023-06-21 10:24:56 +00:00
'comment' => fake()->sentence(5),
'is_tasted' => $isTasted,
'tasters_number' => ($isTasted) ? fake()->numberBetween(0, 15) : null,
2023-02-23 16:23:00 +01:00
'deleted_at' => fake()->dateTime(),
];
}
}