Files
Epicnabbo-Catalogus-Updated…/Updated_Cms/app/Models/Help/WebsiteHelpCenterTicket.php
T
Remco 6c42ec0edd 🆙 More fixes 🆙
2026-01-19 20:59:00 +01:00

70 lines
1.8 KiB
PHP

<?php
namespace App\Models\Help;
use App\Models\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Facades\Auth;
use Stevebauman\Purify\Facades\Purify;
class WebsiteHelpCenterTicket extends Model
{
protected $guarded = ['id'];
public $timestamps = false;
/**
* @return BelongsTo<User, $this>
*/
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
/**
* @return BelongsTo<WebsiteHelpCenterCategory, $this>
*/
public function category(): BelongsTo
{
return $this->belongsTo(WebsiteHelpCenterCategory::class);
}
/**
* @return HasMany<WebsiteHelpCenterTicketReply, $this>
*/
public function replies(): HasMany
{
return $this->hasMany(WebsiteHelpCenterTicketReply::class, 'ticket_id');
}
public function canDeleteTicket(): bool
{
return $this->user_id === Auth::id() || hasPermission('delete_website_tickets');
}
public function canManageTicket(): bool
{
return $this->user_id === Auth::id() || hasPermission('manage_website_tickets');
}
public function canCloseTicket(): bool
{
return $this->user_id === Auth::id() || hasPermission('manage_website_tickets');
}
public function isOpen(): bool
{
return $this->open || hasPermission('manage_website_tickets');
}
/**
* @return \Illuminate\Database\Eloquent\Casts\Attribute<string, never>
*/
protected function content(): \Illuminate\Database\Eloquent\Casts\Attribute
{
return \Illuminate\Database\Eloquent\Casts\Attribute::make(get: fn ($value) => Purify::clean(is_string($value) ? $value : ''));
}
}