where('project_id', $project->id) ->max('sequence_number') + 1; $ticketStatus = TicketStatus::query() ->where('project_id', $project->id) ->findOrFail(Arr::get($attributes, 'ticket_status_id')); $ticket = Ticket::query()->create([ 'acceptance_criteria' => Arr::get($attributes, 'acceptance_criteria'), 'assignee_user_id' => Arr::get($attributes, 'assignee_user_id'), 'author_user_id' => $actor?->id, 'description' => Arr::get($attributes, 'description'), 'project_id' => $project->id, 'sequence_number' => $nextSequenceNumber, 'ticket_key' => "{$project->key}-{$nextSequenceNumber}", 'ticket_priority_id' => Arr::get($attributes, 'ticket_priority_id'), 'ticket_status_id' => $ticketStatus->id, 'ticket_type_id' => Arr::get($attributes, 'ticket_type_id'), 'title' => Arr::get($attributes, 'title'), 'story_points' => Arr::get($attributes, 'story_points'), ]); $occurredAt = CarbonImmutable::now(); if ($actor !== null) { $this->createTicketWorklogEntry->handle( $ticket, $actor, TicketWorklogEntryType::Created, "Ticket was created in {$ticketStatus->name}.", [ 'from' => null, 'to' => [ 'label' => $ticketStatus->name, 'ticket_status_id' => $ticketStatus->id, ], ], ); } TicketCreated::dispatch( $this->buildTicketCreatedPayload->handle( $project, $ticket, $ticketStatus, $actor, $occurredAt, ), ); return $ticket; }); } }