Implement project board status workflow

This commit is contained in:
2026-03-25 08:04:34 +01:00
parent f7a0543ea1
commit 7e767b0c6c
22 changed files with 1076 additions and 7 deletions
+7
View File
@@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
#[Fillable(['name', 'position', 'project_id'])]
class BoardColumn extends Model
@@ -18,4 +19,10 @@ class BoardColumn extends Model
{
return $this->belongsTo(Project::class);
}
public function tickets(): HasMany
{
return $this->hasMany(Ticket::class)
->orderByDesc('sequence_number');
}
}
+8
View File
@@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
#[Fillable([
'acceptance_criteria',
@@ -43,4 +44,11 @@ class Ticket extends Model
{
return $this->belongsTo(TicketType::class);
}
public function worklogEntries(): HasMany
{
return $this->hasMany(TicketWorklogEntry::class)
->orderByDesc('created_at')
->orderByDesc('id');
}
}
+42
View File
@@ -0,0 +1,42 @@
<?php
namespace App\Models;
use Database\Factories\TicketWorklogEntryFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
#[Fillable([
'actor_id',
'changes',
'entry_type',
'summary',
'ticket_id',
])]
class TicketWorklogEntry extends Model
{
/** @use HasFactory<TicketWorklogEntryFactory> */
use HasFactory;
/**
* @return array<string, string>
*/
protected function casts(): array
{
return [
'changes' => 'array',
];
}
public function actor(): BelongsTo
{
return $this->belongsTo(User::class, 'actor_id');
}
public function ticket(): BelongsTo
{
return $this->belongsTo(Ticket::class);
}
}