*/ class ReportJobFactory extends Factory { public function definition(): array { return [ 'tenant_id' => Tenant::factory(), 'user_id' => User::factory()->state(fn (array $attrs, ReportJob $r) => ['tenant_id' => $r->tenant_id]), 'type' => 'deals_export', 'parameters' => [ 'format' => 'csv', 'date_from' => Carbon::now()->subMonth()->toDateString(), 'date_to' => Carbon::now()->toDateString(), ], 'status' => ReportJob::STATUS_PENDING, ]; } public function processing(): static { return $this->state(['status' => ReportJob::STATUS_PROCESSING]); } public function done(): static { return $this->state([ 'status' => ReportJob::STATUS_DONE, 'file_path' => 'reports/1/123.csv', 'file_size' => 1024, 'generation_seconds' => 2, 'finished_at' => Carbon::now(), 'expires_at' => Carbon::now()->addDays(30), ]); } public function failed(): static { return $this->state([ 'status' => ReportJob::STATUS_FAILED, 'error_message' => 'S3 timeout', 'finished_at' => Carbon::now(), ]); } }