Files
help_desk/views/agent/view-ticket.ejs
T

103 lines
5.2 KiB
Plaintext

<%- include('../partials/header') %>
<% title = 'Ticket #' + ticket.id; %>
<% if (success_msg && success_msg.length > 0) { %>
<% success_msg.forEach(msg => { %>
<div class="alert alert-success alert-dismissible fade show mt-3"><%= msg %><button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>
<% }) %>
<% } %>
<% if (error_msg && error_msg.length > 0) { %>
<% error_msg.forEach(msg => { %>
<div class="alert alert-danger alert-dismissible fade show mt-3"><%= msg %><button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>
<% }) %>
<% } %>
<div class="d-flex justify-content-between align-items-center pt-3 pb-2 mb-3 border-bottom">
<h1 class="h2">Ticket #<%= ticket.id %>: <%= ticket.asunto %></h1>
<a href="/agent/dashboard" class="btn btn-secondary"><i class="fas fa-arrow-left"></i> Volver</a>
</div>
<div class="row">
<div class="col-md-3">
<div class="card mb-3">
<div class="card-header"><h6 class="mb-0">Información</h6></div>
<div class="card-body">
<p><strong>Estado:</strong> <span class="badge bg-<%= ticket.status === 'abierto' ? 'success' : ticket.status === 'en_progreso' ? 'primary' : 'secondary' %>"><%= ticket.status %></span></p>
<p><strong>Prioridad:</strong> <span class="badge bg-<%= ticket.prioridad === 'alta' ? 'danger' : ticket.prioridad === 'critica' ? 'dark' : ticket.prioridad === 'media' ? 'warning' : 'info' %>"><%= ticket.prioridad %></span></p>
<p><strong>Departamento:</strong> <%= ticket.departamento_nombre || 'Sin departamento' %></p>
<p><strong>Cliente:</strong> <%= ticket.usuario_nombre %> (<%= ticket.usuario_email %>)</p>
<p><strong>Asignado:</strong> <%= ticket.asignado_nombre || 'Sin asignar' %></p>
<p><strong>Creado:</strong> <%= ticket.created_at %></p>
</div>
</div>
<div class="card mb-3">
<div class="card-header"><h6 class="mb-0">Acciones</h6></div>
<div class="card-body">
<form action="/agent/ticket/<%= ticket.id %>/status" method="POST" class="mb-2">
<label class="form-label">Cambiar Estado</label>
<select name="status" class="form-select mb-2">
<option value="abierto" <%= ticket.status === 'abierto' ? 'selected' : '' %>>Abierto</option>
<option value="en_progreso" <%= ticket.status === 'en_progreso' ? 'selected' : '' %>>En Progreso</option>
<option value="cerrado" <%= ticket.status === 'cerrado' ? 'selected' : '' %>>Cerrado</option>
</select>
<button type="submit" class="btn btn-primary btn-sm w-100">Actualizar</button>
</form>
<% if (user.rol === 'admin') { %>
<form action="/agent/ticket/<%= ticket.id %>/assign" method="POST">
<label class="form-label">Asignar a</label>
<select name="assigned_to" class="form-select mb-2">
<option value="">Sin asignar</option>
<% agents.forEach(a => { %>
<option value="<%= a.id %>" <%= ticket.assigned_to === a.id ? 'selected' : '' %>><%= a.nombre %></option>
<% }) %>
</select>
<button type="submit" class="btn btn-info btn-sm w-100">Asignar</button>
</form>
<% } %>
</div>
</div>
</div>
<div class="col-md-9">
<div class="card mb-3">
<div class="card-header">
<strong><%= ticket.usuario_nombre %></strong> <span class="text-muted">- <%= ticket.created_at %></span>
</div>
<div class="card-body">
<p><%= ticket.mensaje %></p>
</div>
</div>
<h5>Respuestas</h5>
<% if (respuestas.length === 0) { %>
<p class="text-muted">No hay respuestas aún</p>
<% } %>
<% respuestas.forEach(r => { %>
<div class="card mb-2 <%= r.usuario_rol === 'agent' || r.usuario_rol === 'admin' ? 'border-primary' : '' %>">
<div class="card-header">
<strong><%= r.usuario_nombre %></strong>
<span class="badge bg-<%= r.usuario_rol === 'admin' ? 'danger' : r.usuario_rol === 'agent' ? 'info' : 'secondary' %> ms-1"><%= r.usuario_rol %></span>
<span class="text-muted float-end"><%= r.created_at %></span>
</div>
<div class="card-body"><p class="mb-0"><%= r.mensaje %></p></div>
</div>
<% }) %>
<div class="card mt-3">
<div class="card-header"><strong>Responder</strong></div>
<div class="card-body">
<form action="/agent/ticket/<%= ticket.id %>/respond" method="POST">
<div class="mb-3">
<textarea name="mensaje" class="form-control" rows="3" required></textarea>
</div>
<button type="submit" class="btn btn-primary"><i class="fas fa-reply"></i> Responder</button>
</form>
</div>
</div>
</div>
</div>
<%- include('../partials/footer') %>