Implement ticket statuses

This commit is contained in:
2026-04-14 03:09:12 +02:00
parent 2dc12c5d60
commit 8f4a8276ac
40 changed files with 1602 additions and 100 deletions
@@ -27,5 +27,12 @@ class InitializeProjectTicketMetadata
'position' => 1,
]);
}
if (! $project->ticketStatuses()->whereNull('board_column_id')->exists()) {
$project->ticketStatuses()->create([
'name' => 'Backlog',
'position' => 1,
]);
}
}
}
+9 -3
View File
@@ -4,6 +4,7 @@ namespace App\Actions\Tickets;
use App\Models\Project;
use App\Models\Ticket;
use App\Models\TicketStatus;
use App\Models\User;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
@@ -21,6 +22,7 @@ class CreateProjectTicket
* description: string|null,
* story_points?: int|null,
* ticket_priority_id: int,
* ticket_status_id: int,
* ticket_type_id: int,
* title: string
* } $attributes
@@ -31,17 +33,20 @@ class CreateProjectTicket
$nextSequenceNumber = (int) Ticket::query()
->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,
'board_column_id' => null,
'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'),
@@ -52,11 +57,12 @@ class CreateProjectTicket
$ticket,
$actor,
'created',
'Ticket was created in Backlog.',
"Ticket was created in {$ticketStatus->name}.",
[
'from' => null,
'to' => [
'label' => 'Backlog',
'label' => $ticketStatus->name,
'ticket_status_id' => $ticketStatus->id,
],
],
);