*/ class TicketFieldValueFactory extends Factory { /** * Define the model's default state. * * @return array */ public function definition(): array { return [ 'value_number' => fake()->randomFloat(1, 1, 13), 'value_user_id' => null, ]; } public function configure(): static { return $this->afterMaking(function (TicketFieldValue $ticketFieldValue): void { $ticket = $ticketFieldValue->ticket_id === null ? Ticket::factory()->create() : Ticket::query()->findOrFail($ticketFieldValue->ticket_id); app(InitializeProjectTicketMetadata::class)->handle($ticket->project); $ticketFieldDefinition = $ticketFieldValue->ticket_field_definition_id === null ? TicketFieldDefinition::factory()->for($ticket->project)->create([ 'field_type' => 'number', 'label' => 'Story Points', 'position' => $ticket->project->ticketFieldDefinitions()->count() + 1, ]) : TicketFieldDefinition::query()->findOrFail($ticketFieldValue->ticket_field_definition_id); $ticketFieldValue->ticket_id = $ticket->id; $ticketFieldValue->ticket_field_definition_id = $ticketFieldDefinition->id; if ($ticketFieldDefinition->field_type === 'user') { $ticketFieldValue->value_number = null; $ticketFieldValue->value_user_id ??= User::factory()->create()->id; return; } $ticketFieldValue->value_user_id = null; }); } }