forked from audrey/intranet
158 lines
5.7 KiB
Twig
158 lines
5.7 KiB
Twig
<!DOCTYPE html>
|
|
<html>
|
|
{{ include('_header.html.twig') }}
|
|
<body>
|
|
<!-- Navigation -->
|
|
<div class="siteNavbar">
|
|
<ul class="list-group list-group-horizontal-md">
|
|
<h3 class="px-5 navitem"><a class=" list-group-item list-group-item-action text-decoration-none h-100 text-white border-0" onclick="history.back()">
|
|
<span class="bi bi-arrow-bar-left"/>
|
|
Back
|
|
</a>
|
|
</h3>
|
|
</ul>
|
|
</div>
|
|
<div class="container">
|
|
|
|
<div class="row">
|
|
<table class="table">
|
|
<tr>
|
|
<h1>
|
|
<small class="text-muted">Ticket #{{ticket.getId()}}</small>
|
|
{{ticket.getSummary()}}
|
|
</h1>
|
|
</tr>
|
|
<tr></tr>
|
|
</table>
|
|
</div>
|
|
<div class="row">
|
|
<ul
|
|
class="list-group col-8">
|
|
<!--Ticket Creator -->
|
|
<li class="col-12 border border-dark rounded list-group-item list-group-item-primary">
|
|
<div class="d-flex w-100 justify-content-between">
|
|
<h5 class="mb-1">
|
|
{{ticket.getCreatedBy().getFullName() ?? ticket.getCreatedBy().getEmail()}}</h5>
|
|
<small>{{ticket.getCreatedAt().format('m-d-y')}}</small>
|
|
</div>
|
|
<p class="mb-1">{{ticket.getDescription()|nl2br}}</p>
|
|
</li>
|
|
{% for comment in ticket.getComments() %}
|
|
<li class=" border border-dark rounded list-group-item my-1
|
|
{# If this comment does not belong to an end user (is sales support) then float right #}
|
|
{% if comment.getCreatedBy().getRole() != 'end_user' %}
|
|
col-11 list-group-item-warning align-self-end
|
|
{% else %}
|
|
col-12 list-group-item-primary
|
|
{% endif %}">
|
|
<div class="d-flex w-100 justify-content-between">
|
|
<h5 class="mb-1">
|
|
{{comment.getCreatedBy().getFullName() ?? comment.getCreatedBy.getEmail()}}</h5>
|
|
<div>
|
|
<small>{{comment.getCreatedAt().format('m-d-y')}}:</small>
|
|
<small class="text-muted">{{comment.getCreatedAt().format('h:m A')}}</small>
|
|
</div>
|
|
</div>
|
|
<p class="mb-1">{{comment.getBody()|nl2br}}</p>
|
|
{% if comment.getAttachmentName() != null %}
|
|
<p>Attachment: <a href="{{ asset('TicketAttachments/' ~ portal ~ '/' ~ ticket.getId() ~ '/' ~ comment.getId() ~ '-' ~ comment.getAttachmentName())}}">{{comment.getAttachmentName()}}</a> </p>
|
|
{% endif %}
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
<div class="col-4">
|
|
<div class="card text-center service-card py-2">
|
|
<div class="card-body">
|
|
<div class="card-header">
|
|
<h4>Status</h4>
|
|
</div>
|
|
<div class="card-text">
|
|
<h5 class="text-capitalize">{{ticket.getStatus()}}</h5>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class=" py-2 card text-center service-card">
|
|
<div class="card-body">
|
|
<div class="card-header">
|
|
<h5 class="card-title">Contributors</h5>
|
|
</div>
|
|
<div class="card-text">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
{% for contributor in ticket.getContributors() %}
|
|
<div class="col">
|
|
<img/>
|
|
{% if contributor.getUser().getFirstname == NULL and contributor.getUser().getLastName == NULL %}
|
|
<p>{{contributor.getUser().getEmail()}}
|
|
{% else %}
|
|
<p>{{contributor.getUser().getFirstname()}}<br>{{contributor.getUser().getLastName()}}</p>
|
|
{% endif %}
|
|
{% if contributor.getUser() == ticket.getCreatedBy() %}
|
|
<small class="text-muted">Creator</small>
|
|
{% endif %}
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="card py-2">
|
|
<div class="card text-center service-card">
|
|
<div class="card-body">
|
|
<div class="card-header">
|
|
<h5 class="card-title">Ticket Details</h5>
|
|
</div>
|
|
<div class="card-text">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<p class="col-6 text-start"><strong>Created: </strong>{{ticket.getCreatedAt().format('M d, Y')}}</p>
|
|
<p class="col-6 text-start"><strong>Due By: </strong>{{ticket.getDueAt() ? ticket.getDueAt().format('M d, Y') : "N/A"}}</p>
|
|
</div>
|
|
<div class="row">
|
|
<p class="col-6 text-start"><strong>Created By: </strong>{{ticket.getCreatedBy().getFullName()}}</p>
|
|
<p class="col-6 text-start"><strong>Assignee: </strong>{{ticket.getAssignedTo() ? ticket.getAssignedTo().getFullName() : "Not Assigned"}}
|
|
</div>
|
|
<div class="row">
|
|
<p class="col text-start"><strong>Category: </strong>{{ticket.getCategory() ?? "Not Specified"}}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card">
|
|
<div class="card text-center service-card">
|
|
<div class="card-body">
|
|
<div class="card-header">
|
|
<h5 class="card-title">Attachments</h5>
|
|
</div>
|
|
<div class="card-text">
|
|
<div class="container">
|
|
<div class="row">
|
|
{% for comment in ticket.getComments() %}
|
|
{% if comment.getAttachmentName() != null %}
|
|
<a class="col-4 text-decoration-none" href="{{ asset('TicketAttachments/' ~ portal ~ '/' ~ ticket.getId() ~ '/' ~ comment.getId() ~ '-' ~ comment.getAttachmentName())}}">
|
|
|
|
<i class="bi bi-file-earmark-pdf-fill icon"></i>
|
|
|
|
<p class="text-truncate">{{comment.getAttachmentName()}}</p>
|
|
|
|
|
|
</a>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|