/
DATKAI
/
ITCUP
Обзор
Документация
Войти
/
DATKAI
/
ITCUP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
app/Models/TicketComment.php
66 строк
2 KB
DATKAI
feat(account): полноценный ЛК сотрудника — дашборд и уведомления
03 июл 2026, 07:46
03 июл 2026, 07:46
004a052
Код
Авторство
О чём код?
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class TicketComment extends Model { protected $fillable = [ 'ticket_id', 'user_id', 'body', 'is_internal', 'attachments', ]; protected $casts = [ 'is_internal' => 'boolean', 'attachments' => 'array', ]; protected static function booted(): void { static::created(function (TicketComment $comment) { // Фиксируем время первого ответа $ticket = $comment->ticket; if ($ticket && !$ticket->first_responded_at && $comment->user_id !== $ticket->created_by) { $ticket->update(['first_responded_at' => now()]); } // Уведомления о новом комментарии (внутренние заметки не рассылаем автору) if (!$ticket) { return; } if ($comment->user_id !== $ticket->created_by && !$comment->is_internal && $ticket->creator) { // Ответил админ/исполнитель → уведомляем автора заявки \Filament\Notifications\Notification::make() ->title("Ответ по заявке {$ticket->number}") ->body(\Illuminate\Support\Str::limit($comment->body, 120)) ->icon('heroicon-o-chat-bubble-left-right') ->color('info') ->sendToDatabase($ticket->creator); } elseif ($comment->user_id === $ticket->created_by && $ticket->assignedUser) { // Написал автор → уведомляем исполнителя \Filament\Notifications\Notification::make() ->title("Комментарий в заявке {$ticket->number}") ->body(\Illuminate\Support\Str::limit($comment->body, 120)) ->icon('heroicon-o-chat-bubble-left-right') ->color('info') ->sendToDatabase($ticket->assignedUser); } }); } public function ticket(): BelongsTo { return $this->belongsTo(Ticket::class); } public function user(): BelongsTo { return $this->belongsTo(User::class); } }