{% extends "admin/base.html" %}
{% load static %}
{% block content %}
<div class="k4w-maint-page">
  <section class="k4w-maint-hero">
    <div class="k4w-maint-hero-copy">
      <span class="k4w-maint-kicker">SISTEMA · MANUTENÇÃO CONTROLADA</span>
      <h1>Manutenção da base de dados</h1>
      <p>Limpe dados fictícios ou módulos específicos com pré-visualização, dependências automáticas, backup e auditoria. A conta atual e o esquema da base são sempre preservados.</p>
      <div class="k4w-maint-tags"><span>Exclusivo superutilizador</span><span>Transação atómica</span><span>Auditoria permanente</span></div>
    </div>
    <aside class="k4w-maint-state {% if enabled %}is-enabled{% else %}is-disabled{% endif %}">
      <span class="material-symbols-outlined">{% if enabled %}verified_user{% else %}lock{% endif %}</span>
      <small>Estado da ferramenta</small>
      <strong>{% if enabled %}Disponível{% else %}Bloqueada{% endif %}</strong>
      <em>Portal v{{ version }}</em>
    </aside>
  </section>

  {% if not enabled %}
  <section class="k4w-maint-alert is-warning"><span class="material-symbols-outlined">shield_lock</span><div><strong>Ferramenta desativada neste ambiente</strong><p>Ative <code>K4W_DATABASE_MAINTENANCE_ENABLED=True</code> no ficheiro <code>.env</code> apenas durante a janela de manutenção.</p></div></section>
  {% endif %}

  <section class="k4w-maint-safety">
    <article><span class="material-symbols-outlined">preview</span><div><strong>Pré-visualização</strong><p>Nada é eliminado no primeiro passo.</p></div></article>
    <article><span class="material-symbols-outlined">backup</span><div><strong>Backup protegido</strong><p>Snapshot JSON comprimido antes da limpeza total.</p></div></article>
    <article><span class="material-symbols-outlined">password</span><div><strong>Dupla confirmação</strong><p>Palavra-passe e frase exata.</p></div></article>
    <article><span class="material-symbols-outlined">history</span><div><strong>Auditoria</strong><p>Resultado detalhado por tabela e ficheiro.</p></div></article>
  </section>

  <form method="post" id="k4w-maint-form" class="k4w-maint-form">
    {% csrf_token %}
    {% if form.non_field_errors %}<div class="k4w-maint-alert is-danger">{{ form.non_field_errors }}</div>{% endif %}

    <section class="k4w-maint-panel">
      <header><div><span>PASSO 1</span><h2>Modo de limpeza</h2><p>Escolha uma operação seletiva ou uma reposição completa dos dados funcionais.</p></div></header>
      <div class="k4w-maint-mode-grid">
        <label class="k4w-maint-mode">
          <input type="radio" name="mode" value="selective" {% if form.mode.value != 'full' %}checked{% endif %}>
          <span class="material-symbols-outlined">checklist</span>
          <div><strong>Eliminação seletiva</strong><p>Selecione apenas os módulos que pretende limpar.</p></div>
          <i></i>
        </label>
        {% if allow_full %}
        <label class="k4w-maint-mode is-danger">
          <input type="radio" name="mode" value="full" {% if form.mode.value == 'full' %}checked{% endif %}>
          <span class="material-symbols-outlined">delete_forever</span>
          <div><strong>Limpeza total</strong><p>Remove todos os dados funcionais, preservando o esquema e a conta atual.</p></div>
          <i></i>
        </label>
        {% endif %}
      </div>
      {% if form.mode.errors %}<div class="k4w-maint-field-error">{{ form.mode.errors }}</div>{% endif %}
    </section>

    <div id="k4w-selective-area">
      {% for section in sections %}
      <section class="k4w-maint-panel">
        <header><div><span>SELEÇÃO</span><h2>{{ section.title }}</h2><p>Os módulos relacionados serão incluídos automaticamente quando necessário.</p></div></header>
        <div class="k4w-maint-groups">
          {% for group in section.groups %}
          <label class="k4w-maint-group is-{{ group.tone }}">
            <input type="checkbox" name="groups" value="{{ group.key }}" {% if group.key in form.groups.value %}checked{% endif %}>
            <span class="material-symbols-outlined">{{ group.icon }}</span>
            <div><strong>{{ group.label }}</strong><p>{{ group.description }}</p></div>
            <b>{{ group.count }}</b><i></i>
          </label>
          {% endfor %}
        </div>
      </section>
      {% endfor %}
      {% if form.groups.errors %}<div class="k4w-maint-field-error">{{ form.groups.errors }}</div>{% endif %}
    </div>

    <section class="k4w-maint-panel">
      <header><div><span>PASSO 2</span><h2>Proteções e comportamento</h2><p>Defina o tratamento do backup, ficheiros físicos e dados estruturais.</p></div></header>
      <div class="k4w-maint-options">
        <label><input type="checkbox" name="create_backup" {% if form.create_backup.value or not form.is_bound %}checked{% endif %}><span><strong>Criar cópia de segurança</strong><small>Recomendado e obrigatório na limpeza total.</small></span></label>
        <label><input type="checkbox" name="delete_files" {% if form.delete_files.value %}checked{% endif %}><span><strong>Eliminar ficheiros físicos</strong><small>Inclui comprovativos, anexos, documentos e ficheiros importados abrangidos.</small></span></label>
      </div>
      <div class="k4w-maint-preserve" id="k4w-full-options">
        <h3>Preservar durante a limpeza total</h3>
        <div class="k4w-maint-options">
          <label><input type="checkbox" name="preserve_configuration" {% if form.preserve_configuration.value or not form.is_bound %}checked{% endif %}><span><strong>Configuração global</strong><small>Empresa, email, pagamentos e opções gerais.</small></span></label>
          <label><input type="checkbox" name="preserve_templates" {% if form.preserve_templates.value or not form.is_bound %}checked{% endif %}><span><strong>Templates e formulários</strong><small>Biblioteca de conteúdos e modelos de email.</small></span></label>
          <label><input type="checkbox" name="preserve_automation" {% if form.preserve_automation.value or not form.is_bound %}checked{% endif %}><span><strong>Automação periódica</strong><small>Agenda do Celery Beat.</small></span></label>
          <label><input type="checkbox" name="preserve_other_staff" {% if form.preserve_other_staff.value or not form.is_bound %}checked{% endif %}><span><strong>Outros administradores</strong><small>A conta atual é sempre preservada.</small></span></label>
        </div>
      </div>
    </section>

    <section class="k4w-maint-actionbar">
      <div><span class="material-symbols-outlined">info</span><p>O próximo ecrã apresenta as contagens, dependências e ficheiros afetados. Ainda não elimina dados.</p></div>
      <button type="submit" {% if not enabled %}disabled{% endif %}><span class="material-symbols-outlined">visibility</span> Pré-visualizar impacto</button>
    </section>
  </form>

  <section class="k4w-maint-panel">
    <header class="has-action"><div><span>AUDITORIA</span><h2>Operações recentes</h2><p>Histórico permanente das limpezas solicitadas.</p></div><a href="{% url 'admin:maintenance_databasecleanupoperation_changelist' %}">Ver histórico completo</a></header>
    <div class="k4w-maint-history">
      {% for item in recent_operations %}
      <a href="{% url 'database_maintenance_result' item.pk %}">
        <span class="material-symbols-outlined">{% if item.status == 'completed' %}check_circle{% elif item.status == 'failed' %}error{% else %}pending{% endif %}</span>
        <div><strong>{{ item.get_mode_display }}</strong><small>{{ item.created_at|date:'d/m/Y H:i' }} · {{ item.requested_by|default:'Utilizador removido' }}</small></div>
        <b class="is-{{ item.status }}">{{ item.get_status_display }}</b>
      </a>
      {% empty %}<div class="k4w-maint-empty"><span class="material-symbols-outlined">database</span><p>Ainda não existem operações de limpeza.</p></div>{% endfor %}
    </div>
  </section>
</div>
<script>
(function(){const form=document.getElementById('k4w-maint-form'),selective=document.getElementById('k4w-selective-area'),full=document.getElementById('k4w-full-options');function sync(){const mode=form.querySelector('input[name="mode"]:checked')?.value||'selective';selective.hidden=mode!=='selective';full.hidden=mode!=='full'}form.querySelectorAll('input[name="mode"]').forEach(el=>el.addEventListener('change',sync));sync()})();
</script>
{% endblock %}
