Implement ticket types priorities and custom fields

This commit is contained in:
2026-03-25 01:28:25 +01:00
parent 3f9b83ec16
commit 35aacff318
32 changed files with 1832 additions and 1 deletions
+18
View File
@@ -28,4 +28,22 @@ class Project extends Model
return $this->hasMany(BoardColumn::class)
->orderBy('position');
}
public function ticketFieldDefinitions(): HasMany
{
return $this->hasMany(TicketFieldDefinition::class)
->orderBy('position');
}
public function ticketPriorities(): HasMany
{
return $this->hasMany(TicketPriority::class)
->orderBy('position');
}
public function ticketTypes(): HasMany
{
return $this->hasMany(TicketType::class)
->orderBy('position');
}
}
+29
View File
@@ -0,0 +1,29 @@
<?php
namespace App\Models;
use Database\Factories\TicketFieldDefinitionFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
#[Fillable(['field_type', 'label', 'position', 'project_id'])]
class TicketFieldDefinition extends Model
{
/**
* @var array<int, string>
*/
public const FIELD_TYPES = [
'user',
'number',
];
/** @use HasFactory<TicketFieldDefinitionFactory> */
use HasFactory;
public function project(): BelongsTo
{
return $this->belongsTo(Project::class);
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
namespace App\Models;
use Database\Factories\TicketPriorityFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
#[Fillable(['name', 'position', 'project_id'])]
class TicketPriority extends Model
{
/** @use HasFactory<TicketPriorityFactory> */
use HasFactory;
public function project(): BelongsTo
{
return $this->belongsTo(Project::class);
}
}
+29
View File
@@ -0,0 +1,29 @@
<?php
namespace App\Models;
use Database\Factories\TicketTypeFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
#[Fillable(['is_builtin', 'name', 'position', 'project_id', 'system_key'])]
class TicketType extends Model
{
/**
* @var array<int, string>
*/
public const BUILTIN_KEYS = [
'task',
'parent',
];
/** @use HasFactory<TicketTypeFactory> */
use HasFactory;
public function project(): BelongsTo
{
return $this->belongsTo(Project::class);
}
}