*/ class PackageFactory extends Factory { protected $model = Package::class; /** * Define the model's default state. * * @return array */ 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), ]; }); } }