197 lines
10 KiB
HTML
197 lines
10 KiB
HTML
{% extends 'layouts/base.html' %}
|
|
{% load i18n %}
|
|
|
|
{% block title %}{% trans "Inquiries" %}{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="container-fluid">
|
|
<!-- Page Header -->
|
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<div>
|
|
<h1 class="h3 mb-0">{% trans "Inquiries" %}</h1>
|
|
<p class="text-muted">{% trans "Manage patient inquiries and requests" %}</p>
|
|
</div>
|
|
<div>
|
|
<a href="{% url 'complaints:inquiry_create' %}" class="btn btn-primary">
|
|
<i class="fas fa-plus"></i> {% trans "New Inquiry" %}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Statistics Cards -->
|
|
<div class="row mb-4">
|
|
<div class="col-md-3">
|
|
<div class="card border-left-primary">
|
|
<div class="card-body">
|
|
<div class="text-xs font-weight-bold text-primary text-uppercase mb-1">{% trans "Total" %}</div>
|
|
<div class="h5 mb-0 font-weight-bold">{{ stats.total }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card border-left-warning">
|
|
<div class="card-body">
|
|
<div class="text-xs font-weight-bold text-warning text-uppercase mb-1">{% trans "Open" %}</div>
|
|
<div class="h5 mb-0 font-weight-bold">{{ stats.open }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card border-left-info">
|
|
<div class="card-body">
|
|
<div class="text-xs font-weight-bold text-info text-uppercase mb-1">{% trans "In Progress" %}</div>
|
|
<div class="h5 mb-0 font-weight-bold">{{ stats.in_progress }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="card border-left-success">
|
|
<div class="card-body">
|
|
<div class="text-xs font-weight-bold text-success text-uppercase mb-1">{% trans "Resolved" %}</div>
|
|
<div class="h5 mb-0 font-weight-bold">{{ stats.resolved }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Filters -->
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<h6 class="m-0 font-weight-bold">{% trans "Filters" %}</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<form method="get" class="row g-3">
|
|
<div class="col-md-3">
|
|
<label class="form-label">{% trans "Search" %}</label>
|
|
<input type="text" name="search" class="form-control" value="{{ filters.search }}" placeholder="{% trans 'Subject, contact name...' %}">
|
|
</div>
|
|
<div class="col-md-2">
|
|
<label class="form-label">{% trans "Status" %}</label>
|
|
<select name="status" class="form-select">
|
|
<option value="">{% trans "All" %}</option>
|
|
<option value="open" {% if filters.status == 'open' %}selected{% endif %}>{% trans "Open" %}</option>
|
|
<option value="in_progress" {% if filters.status == 'in_progress' %}selected{% endif %}>{% trans "In Progress" %}</option>
|
|
<option value="resolved" {% if filters.status == 'resolved' %}selected{% endif %}>{% trans "Resolved" %}</option>
|
|
<option value="closed" {% if filters.status == 'closed' %}selected{% endif %}>{% trans "Closed" %}</option>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-2">
|
|
<label class="form-label">{% trans "Category" %}</label>
|
|
<select name="category" class="form-select">
|
|
<option value="">{% trans "All" %}</option>
|
|
<option value="appointment" {% if filters.category == 'appointment' %}selected{% endif %}>{% trans "Appointment" %}</option>
|
|
<option value="billing" {% if filters.category == 'billing' %}selected{% endif %}>{% trans "Billing" %}</option>
|
|
<option value="medical_records" {% if filters.category == 'medical_records' %}selected{% endif %}>{% trans "Medical Records" %}</option>
|
|
<option value="general" {% if filters.category == 'general' %}selected{% endif %}>{% trans "General" %}</option>
|
|
<option value="other" {% if filters.category == 'other' %}selected{% endif %}>{% trans "Other" %}</option>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<label class="form-label">{% trans "Hospital" %}</label>
|
|
<select name="hospital" class="form-select">
|
|
<option value="">{% trans "All" %}</option>
|
|
{% for hospital in hospitals %}
|
|
<option value="{{ hospital.id }}" {% if filters.hospital == hospital.id|stringformat:"s" %}selected{% endif %}>{{ hospital.name }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
<div class="col-md-2 d-flex align-items-end">
|
|
<button type="submit" class="btn btn-primary me-2">{% trans "Apply" %}</button>
|
|
<a href="{% url 'complaints:inquiry_list' %}" class="btn btn-secondary">{% trans "Clear" %}</a>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Inquiries Table -->
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h6 class="m-0 font-weight-bold">{% trans "Inquiries List" %}</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="table-responsive">
|
|
<table class="table table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th>{% trans "ID" %}</th>
|
|
<th>{% trans "Subject" %}</th>
|
|
<th>{% trans "Contact" %}</th>
|
|
<th>{% trans "Category" %}</th>
|
|
<th>{% trans "Status" %}</th>
|
|
<th>{% trans "Hospital" %}</th>
|
|
<th>{% trans "Created" %}</th>
|
|
<th>{% trans "Actions" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for inquiry in inquiries %}
|
|
<tr>
|
|
<td><small class="text-muted">{{ inquiry.id|truncatechars:8 }}</small></td>
|
|
<td>
|
|
<a href="{% url 'complaints:inquiry_detail' inquiry.id %}">{{ inquiry.subject }}</a>
|
|
</td>
|
|
<td>
|
|
{% if inquiry.patient %}
|
|
{{ inquiry.patient.get_full_name }}
|
|
{% else %}
|
|
{{ inquiry.contact_name|default:inquiry.contact_email }}
|
|
{% endif %}
|
|
</td>
|
|
<td><span class="badge bg-secondary">{{ inquiry.get_category_display }}</span></td>
|
|
<td>
|
|
{% if inquiry.status == 'open' %}
|
|
<span class="badge bg-warning">{% trans "Open" %}</span>
|
|
{% elif inquiry.status == 'in_progress' %}
|
|
<span class="badge bg-info">{% trans "In Progress" %}</span>
|
|
{% elif inquiry.status == 'resolved' %}
|
|
<span class="badge bg-success">{% trans "Resolved" %}</span>
|
|
{% else %}
|
|
<span class="badge bg-secondary">{{ inquiry.get_status_display }}</span>
|
|
{% endif %}
|
|
</td>
|
|
<td>{{ inquiry.hospital.name }}</td>
|
|
<td>{{ inquiry.created_at|date:"Y-m-d H:i" }}</td>
|
|
<td>
|
|
<a href="{% url 'complaints:inquiry_detail' inquiry.id %}" class="btn btn-sm btn-primary">
|
|
<i class="fas fa-eye"></i>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
{% empty %}
|
|
<tr>
|
|
<td colspan="8" class="text-center text-muted">{% trans "No inquiries found" %}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<!-- Pagination -->
|
|
{% if page_obj.has_other_pages %}
|
|
<nav aria-label="Page navigation">
|
|
<ul class="pagination justify-content-center">
|
|
{% if page_obj.has_previous %}
|
|
<li class="page-item">
|
|
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% for key, value in filters.items %}&{{ key }}={{ value }}{% endfor %}">{% trans "Previous" %}</a>
|
|
</li>
|
|
{% endif %}
|
|
|
|
{% for num in page_obj.paginator.page_range %}
|
|
<li class="page-item {% if page_obj.number == num %}active{% endif %}">
|
|
<a class="page-link" href="?page={{ num }}{% for key, value in filters.items %}&{{ key }}={{ value }}{% endfor %}">{{ num }}</a>
|
|
</li>
|
|
{% endfor %}
|
|
|
|
{% if page_obj.has_next %}
|
|
<li class="page-item">
|
|
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% for key, value in filters.items %}&{{ key }}={{ value }}{% endfor %}">{% trans "Next" %}</a>
|
|
</li>
|
|
{% endif %}
|
|
</ul>
|
|
</nav>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|