mi-proyecto/app/templates/admin_obras_sociales.html

82 lines
5.2 KiB
HTML

{% extends 'base.html' %}
{% block content %}
<div class="d-flex justify-content-between align-items-start flex-wrap gap-3 mb-4">
<div>
<h1 class="h3 mb-1">Obra social</h1>
<p class="text-muted mb-0">Catálogo local sincronizable desde la SSSalud. Se guarda el grupo oficial, origen de datos y estado de cada tipo.</p>
</div>
<form method="post" action="{{ url_for('admin_obras_sociales_sync') }}">
<button class="btn btn-primary">Sincronizar ahora</button>
</form>
</div>
<div class="row g-4">
<div class="col-xl-8">
<div class="card shadow-sm mb-3">
<div class="card-body">
<form method="get" class="row g-3">
<div class="col-md-6"><input class="form-control" name="q" value="{{ request.args.get('q','') }}" placeholder="Buscar por denominación, RNAS, localidad o categoría"></div>
<div class="col-md-2"><input class="form-control" name="tipo" value="{{ request.args.get('tipo','') }}" placeholder="Tipo"></div>
<div class="col-md-2"><select class="form-select" name="sort"><option value="denominacion">Denominación</option><option value="rnas" {% if request.args.get('sort')=='rnas' %}selected{% endif %}>RNAS</option><option value="tipo" {% if request.args.get('sort')=='tipo' %}selected{% endif %}>Tipo</option><option value="localidad" {% if request.args.get('sort')=='localidad' %}selected{% endif %}>Localidad</option></select></div>
<div class="col-md-2 d-grid"><button class="btn btn-outline-primary">Filtrar</button></div>
</form>
</div>
</div>
<div class="card shadow-sm">
<div class="card-header d-flex justify-content-between align-items-center"><span class="fw-bold">Listado</span><span class="small text-muted">Página {{ pagination.page }} de {{ pagination.pages or 1 }}</span></div>
<div class="table-responsive">
<table class="table align-middle mb-0">
<thead><tr><th>RNAS</th><th>Denominación</th><th>Tipo</th><th>Localidad</th><th>Opciones</th></tr></thead>
<tbody>
{% for item in items %}
<tr>
<td>{{ item.rnas }}</td>
<td>{{ item.denominacion }}<br><span class="small text-muted">{{ item.categoria_oficial }}</span></td>
<td>{{ item.tipo }}</td>
<td>{{ item.localidad or '—' }}</td>
<td>{{ item.habilitada_opciones or '—' }}</td>
</tr>
{% else %}
<tr><td colspan="5" class="text-center text-muted py-4">No hay datos cargados todavía.</td></tr>
{% endfor %}
</tbody>
</table>
</div>
{% if pagination.pages > 1 %}
<div class="card-body border-top">
<nav><ul class="pagination mb-0 justify-content-end">
<li class="page-item {% if not pagination.has_prev %}disabled{% endif %}"><a class="page-link" href="{{ url_for('admin_obras_sociales', page=pagination.prev_num, q=request.args.get('q',''), tipo=request.args.get('tipo',''), sort=request.args.get('sort','denominacion'), dir=request.args.get('dir','asc')) }}">Anterior</a></li>
{% for page_num in pagination.iter_pages() %}
{% if page_num %}<li class="page-item {% if page_num == pagination.page %}active{% endif %}"><a class="page-link" href="{{ url_for('admin_obras_sociales', page=page_num, q=request.args.get('q',''), tipo=request.args.get('tipo',''), sort=request.args.get('sort','denominacion'), dir=request.args.get('dir','asc')) }}">{{ page_num }}</a></li>{% else %}<li class="page-item disabled"><span class="page-link"></span></li>{% endif %}
{% endfor %}
<li class="page-item {% if not pagination.has_next %}disabled{% endif %}"><a class="page-link" href="{{ url_for('admin_obras_sociales', page=pagination.next_num, q=request.args.get('q',''), tipo=request.args.get('tipo',''), sort=request.args.get('sort','denominacion'), dir=request.args.get('dir','asc')) }}">Siguiente</a></li>
</ul></nav>
</div>
{% endif %}
</div>
</div>
<div class="col-xl-4">
<div class="card shadow-sm">
<div class="card-header fw-bold">Estado por tipo</div>
<div class="card-body p-0">
{% for page in pages_meta %}
<div class="audit-line px-3">
<div class="d-flex justify-content-between gap-2">
<strong>Tipo {{ page.tipo }}</strong>
<span class="badge {% if page.status == 'ok' %}text-bg-success{% elif page.status == 'warning' %}text-bg-warning{% elif page.status == 'error' %}text-bg-danger{% else %}text-bg-secondary{% endif %}">{{ page.status }}</span>
</div>
<div class="small text-muted mt-1">{{ page.categoria_oficial or 'Sin categoría detectada' }}</div>
<div class="small text-muted">Origen: {{ page.origen_datos or '—' }}</div>
<div class="small text-muted">Filas: {{ page.row_count or 0 }} · Última sync: {{ page.last_synced_at.strftime('%d/%m/%Y %H:%M') if page.last_synced_at else 'Nunca' }}</div>
{% if page.last_error %}<div class="small text-danger mt-1">{{ page.last_error }}</div>{% endif %}
</div>
{% else %}
<div class="p-4 text-muted">Todavía no corriste ninguna sincronización.</div>
{% endfor %}
</div>
</div>
</div>
</div>
{% endblock %}