MafOrderFactory.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace Database\Factories;
  3. use App\Models\MafOrder;
  4. use App\Models\Product;
  5. use App\Models\User;
  6. use Illuminate\Database\Eloquent\Factories\Factory;
  7. /**
  8. * @extends Factory<MafOrder>
  9. */
  10. class MafOrderFactory extends Factory
  11. {
  12. protected $model = MafOrder::class;
  13. public function definition(): array
  14. {
  15. $quantity = fake()->numberBetween(1, 20);
  16. return [
  17. 'year' => (int) date('Y'),
  18. 'order_number' => fake()->unique()->bothify('MO-####'),
  19. 'status' => 'active',
  20. 'user_id' => User::factory(),
  21. 'product_id' => Product::factory(),
  22. 'quantity' => $quantity,
  23. 'in_stock' => fake()->numberBetween(0, $quantity),
  24. ];
  25. }
  26. public function forProduct(Product $product): static
  27. {
  28. return $this->state(fn (array $attributes) => [
  29. 'product_id' => $product->id,
  30. ]);
  31. }
  32. public function fullyInStock(): static
  33. {
  34. return $this->state(function (array $attributes) {
  35. $qty = $attributes['quantity'] ?? 10;
  36. return [
  37. 'in_stock' => $qty,
  38. ];
  39. });
  40. }
  41. }