Files
radicall/database/factories/MediaAssignmentFactory.php
T

90 lines
2.2 KiB
PHP

<?php
namespace Database\Factories;
use App\Enums\MediaCollectionEnum;
use App\Models\Document;
use App\Models\Medium;
use App\Models\Report;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\MediaAssignment>
*/
class MediaAssignmentFactory extends Factory
{
public function definition(): array
{
$mediableType = fake()->randomElement([Document::class, Report::class]);
return [
'media_id' => Medium::factory(),
'mediable_id' => $mediableType::factory(),
'mediable_type' => $mediableType,
'collection' => fake()->randomElement(MediaCollectionEnum::cases()),
];
}
public function forDocument(): static
{
return $this->state(fn (array $attributes) => [
'mediable_id' => Document::factory(),
'mediable_type' => Document::class,
]);
}
public function forReport(): static
{
return $this->state(fn (array $attributes) => [
'mediable_id' => Report::factory(),
'mediable_type' => Report::class,
]);
}
public function primary(): static
{
return $this->state(fn (array $attributes) => [
'collection' => MediaCollectionEnum::Primary,
]);
}
public function history(): static
{
return $this->state(fn (array $attributes) => [
'collection' => MediaCollectionEnum::History,
]);
}
public function attachments(): static
{
return $this->state(fn (array $attributes) => [
'collection' => MediaCollectionEnum::Attachments,
]);
}
public function thumbnails(): static
{
return $this->state(fn (array $attributes) => [
'collection' => MediaCollectionEnum::Thumbnails,
]);
}
public function documents(): static
{
return $this->state(fn (array $attributes) => [
'collection' => MediaCollectionEnum::Documents,
]);
}
public function images(): static
{
return $this->state(fn (array $attributes) => [
'collection' => MediaCollectionEnum::Images,
]);
}
}