<?php
namespace Database\Factories;
use App\Modules\Order\Models\Order;
use App\Modules\Order\Models\ReturnRequest;
use App\Modules\User\Models\User;
use App\Modules\Vendor\Models\Vendor;
use Illuminate\Database\Eloquent\Factories\Factory;
class ReturnRequestFactory extends Factory
{
protected $model = ReturnRequest::class;
public function definition(): array
{
$order = Order::factory()->delivered()->create();
return [
'order_id' => $order->id,
'user_id' => $order->user_id,
'vendor_id' => $order->vendor_id,
'reason' => fake()->randomElement(['Defective', 'Wrong item', 'Not as described', 'Other']),
'description' => fake()->sentence(),
'status' => 'pending',
'refund_amount' => fake()->randomFloat(2, 100, 2000),
'refund_method' => null,
'item_ids' => [],
'media' => [],
];
}
public function pending(): static
{
return $this->state(['status' => 'pending']);
}
public function vendorApproved(): static
{
return $this->state(['status' => 'vendor_approved', 'vendor_note' => 'Approved']);
}
public function vendorRejected(): static
{
return $this->state(['status' => 'vendor_rejected', 'vendor_note' => 'Rejected']);
}
public function escalated(): static
{
return $this->state([
'status' => 'escalated',
'escalation_reason' => 'Customer disputes rejection',
'escalated_at' => now(),
]);
}
public function refundProcessed(): static
{
return $this->state([
'status' => 'refund_processed',
'resolved_at' => now(),
]);
}
}