channels; } protected function ticketUrl(): string { return route($this->recipientRole === 'operator' ? 'operator.ticket' : 'client.ticket', $this->ticket); } public function toDatabase(object $notifiable): array { return [ 'ticket_id' => $this->ticket->id, 'number' => $this->ticket->number, 'subject' => $this->ticket->subject, 'message' => 'Zgłoszenie '.$this->ticket->displayNumber().' — '.$this->ticket->subject, 'url' => $this->ticketUrl(), ]; } public function toMail(object $notifiable): MailMessage { $template = $this->templateSource === 'trigger_email_template' ? TriggerEmailTemplate::query()->find($this->emailTemplateId) : EmailTemplate::query()->find($this->emailTemplateId); $firstName = trim(explode(' ', $this->ticket->name)[0] ?? $this->ticket->name); $rendered = $template?->render([ 'numer' => $this->ticket->formattedNumber(), 'imie' => $firstName, 'temat' => $this->ticket->subject, 'status' => $this->ticket->statusLabel(), 'kategoria' => $this->ticket->categoryLabel(), 'priorytet' => $this->ticket->priorityLabel(), 'zespol' => $this->ticket->team?->name ?? 'Brak', 'operator' => $this->ticket->assignee?->name ?? 'Nieprzypisane', 'link' => $this->ticketUrl(), 'ocena' => route('client.ticket', $this->ticket).'#csat', ]) ?? [ 'subject' => 'Zgłoszenie '.$this->ticket->displayNumber(), 'body' => $this->ticket->subject, ]; return (new MailMessage) ->subject($rendered['subject']) ->view('emails.ticket-notification', [ 'html' => Settings::renderEmailLayout($rendered['body']), ]); } }