32 lines
1.3 KiB
PHP
32 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Modules\Helpdesk\Services;
|
|
|
|
use App\Models\User;
|
|
use Modules\Helpdesk\Models\Ticket;
|
|
|
|
final class CannedResponseRenderer
|
|
{
|
|
public function render(string $template, Ticket $ticket, ?User $actor = null): string
|
|
{
|
|
$ticket->loadMissing(['user.company', 'owner.company', 'agent.company', 'status', 'priority', 'category', 'project', 'team']);
|
|
$actor?->loadMissing('company');
|
|
|
|
return strtr($template, [
|
|
'{{ ticket.reference }}' => $ticket->reference,
|
|
'{{ ticket.subject }}' => $ticket->subject,
|
|
'{{ ticket.status }}' => (string) ($ticket->status?->name ?? ''),
|
|
'{{ ticket.priority }}' => (string) ($ticket->priority?->name ?? ''),
|
|
'{{ ticket.category }}' => (string) ($ticket->category?->name ?? ''),
|
|
'{{ ticket.project }}' => (string) ($ticket->project?->title ?? ''),
|
|
'{{ ticket.team }}' => (string) ($ticket->team?->name ?? ''),
|
|
'{{ requester.name }}' => (string) ($ticket->owner?->name ?? ''),
|
|
'{{ agent.name }}' => (string) ($ticket->agent?->name ?? ''),
|
|
'{{ actor.name }}' => (string) ($actor?->name ?? ''),
|
|
'{{ ticket.url }}' => route('helpdesk.tickets.show', ['ticket' => $ticket->getKey()]),
|
|
]);
|
|
}
|
|
}
|