Files
Helpddesk/Modules/Helpdesk/Models/KanbanBoard.php
T
2026-08-25 12:36:04 +01:00

62 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
namespace Modules\Helpdesk\Models;
use App\Models\User;
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;
/**
* Configurable Helpdesk Kanban board.
*/
final class KanbanBoard extends Model
{
use HasFactory;
protected $table = 'helpdesk_kanban_boards';
/** @var list<string> */
protected $fillable = [
'name',
'slug',
'description',
'owner_id',
'is_default',
'sort_order',
];
/** @var array<string, string> */
protected $casts = [
'owner_id' => 'integer',
'is_default' => 'boolean',
'sort_order' => 'integer',
];
/** @return BelongsTo<User, KanbanBoard> */
public function owner(): BelongsTo
{
return $this->belongsTo(User::class, 'owner_id');
}
/** @return HasMany<Ticket> */
public function tickets(): HasMany
{
return $this->hasMany(Ticket::class, 'board_id');
}
/** @return BelongsToMany<Status> */
public function statuses(): BelongsToMany
{
return $this->belongsToMany(Status::class, 'helpdesk_kanban_board_statuses', 'board_id', 'status_id')
->withPivot(['sort_order'])
->orderBy('helpdesk_kanban_board_statuses.sort_order')
->orderBy('helpdesk_statuses.sort_order')
->withTimestamps();
}
}