77 lines
2.0 KiB
PHP
77 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace Database\Factories;
|
|
|
|
use App\Models\Package;
|
|
use App\Models\Module;
|
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
|
|
|
/**
|
|
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Package>
|
|
*/
|
|
class PackageFactory extends Factory
|
|
{
|
|
protected $model = Package::class;
|
|
|
|
/**
|
|
* Define the model's default state.
|
|
*
|
|
* @return array<string, mixed>
|
|
*/
|
|
public function definition(): array
|
|
{
|
|
$year = fake()->numberBetween(2020, 2025);
|
|
$lot = 'LOTE-' . $year . '-' . fake()->numberBetween(1, 99);
|
|
$boxNumber = 'CAJA-' . strtoupper(fake()->bothify('??##'));
|
|
|
|
$startingPage = fake()->numberBetween(1, 100) * 100;
|
|
$endingPage = $startingPage + fake()->numberBetween(50, 200);
|
|
|
|
return [
|
|
'lot' => $lot,
|
|
'box_number' => $boxNumber,
|
|
'starting_page' => $startingPage,
|
|
'ending_page' => $endingPage,
|
|
'module_id' => Module::factory(),
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Indicate that the package belongs to a specific module.
|
|
*/
|
|
public function forModule(int $moduleId): static
|
|
{
|
|
return $this->state(fn (array $attributes) => [
|
|
'module_id' => $moduleId,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Create a small package (50-100 pages)
|
|
*/
|
|
public function small(): static
|
|
{
|
|
return $this->state(function (array $attributes) {
|
|
$startingPage = fake()->numberBetween(1, 50) * 100;
|
|
return [
|
|
'starting_page' => $startingPage,
|
|
'ending_page' => $startingPage + fake()->numberBetween(50, 100),
|
|
];
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Create a large package (200-500 pages)
|
|
*/
|
|
public function large(): static
|
|
{
|
|
return $this->state(function (array $attributes) {
|
|
$startingPage = fake()->numberBetween(1, 100) * 100;
|
|
return [
|
|
'starting_page' => $startingPage,
|
|
'ending_page' => $startingPage + fake()->numberBetween(200, 500),
|
|
];
|
|
});
|
|
}
|
|
}
|