85 lines
3 KiB
PHP
85 lines
3 KiB
PHP
<?php
|
|
|
|
namespace Database\Factories;
|
|
|
|
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;
|
|
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
|
|
{
|
|
/**
|
|
* The name of the factory's corresponding model.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $model = Product::class;
|
|
|
|
/**
|
|
* Define the model's default state.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function definition(): array
|
|
{
|
|
$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
|
|
) {
|
|
$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;
|
|
|
|
return [
|
|
'user_id' => fake()->randomElement(User::pluck('id')),
|
|
'brand_id' => fake()->randomElement(Brand::pluck('id')),
|
|
'name' => fake()->unique()->word . " " . fake()->unique()->word,
|
|
'seen_at' => fake()->dateTime(),
|
|
'source' => $source,
|
|
'fair' => $fair,
|
|
'shop' => $shop,
|
|
'catalogue' => $catalogue,
|
|
'gencod' => fake()->numberBetween(0, 9999999999999),
|
|
'picture_alt' => fake()->text,
|
|
'picture_title' => fake()->text,
|
|
'docs' => [],
|
|
'url' => fake()->url,
|
|
'certification' => \collect(CertificationEnum::toArray())->random()->value,
|
|
'origins' => [\collect(OriginEnum::toArray())->random()->value],
|
|
'claims' => [$claim],
|
|
'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,
|
|
'weight' => fake()->randomNumber(),
|
|
'pvc' => fake()->randomNumber(),
|
|
'comment' => fake()->sentence(5),
|
|
'is_tasted' => $isTasted,
|
|
'tasters_number' => ($isTasted) ? fake()->numberBetween(0, 15) : null,
|
|
'deleted_at' => fake()->dateTime(),
|
|
];
|
|
}
|
|
}
|