feat: full dashboard-ticketing scaffold with data model, controllers, Vue pages

This commit is contained in:
Joel Wedemire
2026-04-08 17:10:30 -07:00
parent 81d0d54f50
commit 391699220f
33 changed files with 1947 additions and 719 deletions

View File

@@ -9,27 +9,36 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
class Ticket extends Model
{
protected $fillable = [
'user_id',
'assigned_to',
'title',
'description',
'category',
'priority',
'status',
'number', 'group_id', 'submitter_id', 'assigned_to', 'project_id',
'title', 'description', 'status', 'priority_id', 'due_date',
];
public function submitter(): BelongsTo
protected $casts = [
'due_date' => 'date',
];
public function group(): BelongsTo
{
return $this->belongsTo(\App\Models\User::class, 'user_id');
return $this->belongsTo(TicketingGroup::class, 'group_id');
}
public function assignee(): BelongsTo
public function priority(): BelongsTo
{
return $this->belongsTo(\App\Models\User::class, 'assigned_to');
return $this->belongsTo(PriorityLevel::class, 'priority_id');
}
public function comments(): HasMany
public function project(): BelongsTo
{
return $this->hasMany(TicketComment::class);
return $this->belongsTo(TicketingProject::class, 'project_id');
}
public function messages(): HasMany
{
return $this->hasMany(TicketMessage::class, 'ticket_id')->orderBy('created_at');
}
public function attachments(): HasMany
{
return $this->hasMany(TicketAttachment::class, 'ticket_id');
}
}