Files
nnterp-react-admin/app/Models/HelpdeskTicket.php
2026-03-13 20:49:46 +08:00

60 lines
1.4 KiB
PHP

<?php
namespace App\Models;
use App\Traits\BelongsToCompany;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
class HelpdeskTicket extends Model
{
use HasFactory, BelongsToCompany;
protected $fillable = [
'ticket_id',
'title',
'description',
'status',
'priority',
'category_id',
'created_by',
'resolved_at',
];
protected function casts(): array
{
return [
'resolved_at' => 'datetime',
];
}
protected static function boot()
{
parent::boot();
static::creating(function ($ticket) {
if (empty($ticket->ticket_id)) {
do {
$ticket->ticket_id = mt_rand(10000000, 99999999);
} while (self::where('ticket_id', $ticket->ticket_id)->exists());
}
});
}
public function category(): BelongsTo
{
return $this->belongsTo(HelpdeskCategory::class, 'category_id');
}
public function creator(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by');
}
public function replies(): HasMany
{
return $this->hasMany(HelpdeskReply::class, 'ticket_id');
}
}