Files
KanbanGit/app/Models/TicketStatus.php
T
Twyco 634b78904b
linter / quality (pull_request) Successful in 1m31s
tests / ci (8.4) (pull_request) Successful in 1m44s
Revert "Merge pull request 'KAN-11 Move remaining project metadata ownership to templates' (#94) from koda/kan-11-restliche-projekt-konfiguration-auf-templates-umstellen into epic/kan-3"
This reverts commit d39d21d303, reversing
changes made to a8952d7867.
2026-06-24 00:29:04 +02:00

69 lines
1.8 KiB
PHP

<?php
namespace App\Models;
use Database\Factories\TicketStatusFactory;
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\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Str;
#[Fillable(['board_column_id', 'name', 'position', 'project_id', 'slug'])]
class TicketStatus extends Model
{
/** @use HasFactory<TicketStatusFactory> */
use HasFactory;
protected static function booted(): void
{
static::saving(function (self $ticketStatus): void {
$ticketStatus->slug = Str::slug($ticketStatus->name);
});
}
public function allowedSourceStatuses(): BelongsToMany
{
return $this->belongsToMany(
self::class,
'ticket_status_transitions',
'to_ticket_status_id',
'from_ticket_status_id',
)
->orderBy('board_column_id')
->orderBy('position')
->withTimestamps();
}
public function allowedTargetStatuses(): BelongsToMany
{
return $this->belongsToMany(
self::class,
'ticket_status_transitions',
'from_ticket_status_id',
'to_ticket_status_id',
)
->orderBy('board_column_id')
->orderBy('position')
->withTimestamps();
}
public function boardColumn(): BelongsTo
{
return $this->belongsTo(BoardColumn::class);
}
public function project(): BelongsTo
{
return $this->belongsTo(Project::class);
}
public function tickets(): HasMany
{
return $this->hasMany(Ticket::class)
->orderByDesc('sequence_number');
}
}