<% layout('layouts/main') %>
<% const adminBase = typeof adminBaseUrl !== 'undefined' ? adminBaseUrl : '/admin'; %>
<% const c = concierge || {}; %>
<% const context = c.context || { clients: [], employees: [] }; %>
<% const personName = (item) => [item?.first_name, item?.last_name].filter(Boolean).join(' ') || item?.email || 'Non assigné'; %>
<% const clientName = (item) => item?.company_name || personName(item); %>
<% const buildingName = (id) => (c.buildings || []).find((building) => Number(building.id)===Number(id))?.name || 'Immeuble'; %>
<div class="app-shell">
  <%- partial('partials/admin-nav') %>
  <section class="content advanced-module-page concierge-page">
    <div class="page-head compact-page-head">
      <div>
        <p class="eyebrow">Module conciergerie</p>
        <h1>Gérer immeubles, tournées, tickets et rapports régie.</h1>
        <p class="muted">Pensé pour les contrats d’entretien d’immeubles : checklists par site, tournées multi-immeubles, tickets urgents et rapports PDF.</p>
      </div>
      <div class="actions">
        <a class="button secondary" href="#tickets">Tickets</a>
        <a class="button secondary" href="#rapports">Rapports</a>
      </div>
    </div>

    <section class="suite-command-grid advanced-kpis">
      <article><span>Contrats actifs</span><strong><%= c.summaries.activeContracts.total || 0 %></strong><small><%= ui.money(c.summaries.monthlyRevenue.monthly || 0) %> / mois</small></article>
      <article><span>Immeubles gérés</span><strong><%= c.summaries.activeBuildings.total || 0 %></strong><small>Sites actifs</small></article>
      <article><span>Tickets ouverts</span><strong><%= c.summaries.openTickets.total || 0 %></strong><small>À traiter</small></article>
      <article><span>Urgents</span><strong><%= c.summaries.urgentTickets.total || 0 %></strong><small>Priorité haute ou critique</small></article>
      <article><span>Tournées du jour</span><strong><%= c.summaries.todayRounds.total || 0 %></strong><small>Passages planifiés</small></article>
      <article><span>Hors contrat</span><strong><%= ui.money(c.summaries.outOfContract.amount || 0) %></strong><small>À facturer</small></article>
      <article><span>Rapports à envoyer</span><strong><%= c.summaries.reportsToSend.total || 0 %></strong><small>Brouillon ou prêt</small></article>
    </section>

    <nav class="suite-module-nav" aria-label="Navigation conciergerie">
      <a href="#immeubles">Immeubles</a>
      <a href="#regies">Régies</a>
      <a href="#contrats">Contrats</a>
      <a href="#checklists">Checklists</a>
      <a href="#tournees">Tournées</a>
      <a href="#tickets">Tickets</a>
      <a href="#rapports">Rapports</a>
    </nav>

    <div class="advanced-admin-grid" data-module-workspace data-module-workspace-label="Conciergerie">
      <details class="panel suite-module-drawer" id="immeubles">
        <summary class="suite-module-title"><div><p class="eyebrow">Immeubles / sites</p><h2>Fiche complète du bâtiment et accès.</h2></div><span class="suite-module-toggle">Ouvrir</span></summary>
        <form method="post" action="<%= adminBase %>/conciergerie/immeubles" class="form-grid compact">
          <input type="hidden" name="_csrf" value="<%= csrfToken %>">
          <div class="form-grid two"><label>Nom immeuble<input name="name" required></label><label>Client/régie portail<select name="client_id"><option value="">Non lié</option><% context.clients.forEach((client) => { %><option value="<%= client.id %>"><%= clientName(client) %></option><% }) %></select></label></div>
          <div class="form-grid three"><label>Adresse<input name="address"></label><label>NPA<input name="postal_code"></label><label>Ville<input name="city"></label></div>
          <div class="form-grid three"><label>Régie<select name="property_manager_id"><option value="">Aucune</option><% (c.managers || []).forEach((manager) => { %><option value="<%= manager.id %>"><%= manager.name %></option><% }) %></select></label><label>Propriétaire<input name="owner_name"></label><label>Contact principal<input name="main_contact"></label></div>
          <div class="form-grid four"><label>Entrées<input type="number" name="entries_count" value="1"></label><label>Étages<input type="number" name="floors_count" value="1"></label><label>Notes accès<textarea name="access_notes" rows="2"></textarea></label><label>Accès sécurisés<textarea name="secure_access_notes" rows="2"></textarea></label></div>
          <div class="checkbox-row">
            <label class="check"><input type="checkbox" name="has_elevator"><span>Ascenseur</span></label>
            <label class="check"><input type="checkbox" name="has_laundry"><span>Buanderie</span></label>
            <label class="check"><input type="checkbox" name="has_bin_room"><span>Local poubelle</span></label>
            <label class="check"><input type="checkbox" name="has_parking"><span>Parking</span></label>
            <label class="check"><input type="checkbox" name="has_outdoors"><span>Extérieurs</span></label>
          </div>
          <button>Ajouter immeuble</button>
        </form>
        <div class="compact-card-grid">
          <% (c.buildings || []).forEach((building) => { %>
            <article class="mini-record"><strong><%= building.name %></strong><span><%= [building.address, building.postal_code, building.city].filter(Boolean).join(', ') || 'Adresse non renseignée' %></span><em><%= building.manager_name || 'Sans régie' %></em></article>
          <% }) %>
        </div>
      </details>

      <details class="panel suite-module-drawer" id="regies">
        <summary class="suite-module-title"><div><p class="eyebrow">Régies / propriétaires</p><h2>Contacts techniques et facturation.</h2></div><span class="suite-module-toggle">Ouvrir</span></summary>
        <form method="post" action="<%= adminBase %>/conciergerie/regies" class="form-grid compact">
          <input type="hidden" name="_csrf" value="<%= csrfToken %>">
          <div class="form-grid two"><label>Nom<input name="name" required></label><label>Client lié<select name="client_id"><option value="">Non lié</option><% context.clients.forEach((client) => { %><option value="<%= client.id %>"><%= clientName(client) %></option><% }) %></select></label></div>
          <div class="form-grid two"><label>Contact technique<input name="contact_technical"></label><label>Contact facturation<input name="contact_billing"></label></div>
          <div class="form-grid three"><label>Email<input type="email" name="email"></label><label>Téléphone<input name="phone"></label><label>Adresse<input name="address"></label></div>
          <label>Historique / notes<textarea name="notes" rows="3"></textarea></label>
          <button>Ajouter régie</button>
        </form>
        <div class="compact-list">
          <% (c.managers || []).forEach((manager) => { %><article class="line-card"><strong><%= manager.name %></strong><span><%= manager.email || 'Email non renseigné' %> · <%= manager.phone || 'Téléphone non renseigné' %></span><b><%= manager.contact_billing || 'Facturation à préciser' %></b></article><% }) %>
        </div>
      </details>

      <details class="panel suite-module-drawer" id="contrats">
        <summary class="suite-module-title"><div><p class="eyebrow">Contrats conciergerie</p><h2>Récurrence, prix mensuel et renouvellement.</h2></div><span class="suite-module-toggle">Ouvrir</span></summary>
        <form method="post" action="<%= adminBase %>/conciergerie/contrats" class="form-grid compact">
          <input type="hidden" name="_csrf" value="<%= csrfToken %>">
          <div class="form-grid two"><label>Titre<input name="title" required></label><label>Immeuble<select name="building_id"><option value="">Aucun</option><% (c.buildings || []).forEach((building) => { %><option value="<%= building.id %>"><%= building.name %></option><% }) %></select></label></div>
          <div class="form-grid three"><label>Régie<select name="property_manager_id"><option value="">Aucune</option><% (c.managers || []).forEach((manager) => { %><option value="<%= manager.id %>"><%= manager.name %></option><% }) %></select></label><label>Client<select name="client_id"><option value="">Non lié</option><% context.clients.forEach((client) => { %><option value="<%= client.id %>"><%= clientName(client) %></option><% }) %></select></label><label>Prix mensuel<input type="number" step="0.01" name="monthly_price"></label></div>
          <div class="form-grid three"><label>Fréquence<input name="frequency" value="Hebdomadaire"></label><label>Début<input type="date" name="starts_on"></label><label>Fin<input type="date" name="ends_on"></label></div>
          <label>Prestations incluses<textarea name="included_services" rows="3" placeholder="Entrées, escaliers, local poubelle, sortie containers..."></textarea></label>
          <label>Conditions<textarea name="conditions_text" rows="2"></textarea></label>
          <button>Créer contrat</button>
        </form>
        <div class="compact-list">
          <% (c.contracts || []).forEach((contract) => { %><article class="line-card"><strong><%= contract.title %></strong><span><%= contract.building_name || 'Sans immeuble' %> · <%= ui.money(contract.monthly_price) %>/mois</span><b><%= ui.label(contract.status) %></b></article><% }) %>
        </div>
      </details>

      <details class="panel suite-module-drawer" id="checklists">
        <summary class="suite-module-title"><div><p class="eyebrow">Checklists conciergerie</p><h2>Modèles et checklists personnalisées par immeuble.</h2></div><span class="suite-module-toggle">Ouvrir</span></summary>
        <form method="post" action="<%= adminBase %>/conciergerie/checklists" class="form-grid compact">
          <input type="hidden" name="_csrf" value="<%= csrfToken %>">
          <div class="form-grid two"><label>Nom<input name="name" value="Checklist conciergerie standard"></label><label>Immeuble<select name="building_id"><option value="">Modèle général</option><% (c.buildings || []).forEach((building) => { %><option value="<%= building.id %>"><%= building.name %></option><% }) %></select></label></div>
          <div class="checkbox-row">
            <% (c.checklistItems || []).forEach((item) => { %><label class="check"><input type="checkbox" name="items" value="<%= item %>" checked><span><%= item %></span></label><% }) %>
          </div>
          <label class="check"><input type="checkbox" name="is_template" checked><span>Utiliser comme modèle métier</span></label>
          <button>Créer checklist</button>
        </form>
        <div class="compact-list">
          <% (c.checklists || []).forEach((checklist) => { %><article class="line-card"><strong><%= checklist.name %></strong><span><%= checklist.building_name || 'Modèle général' %></span><b><%= checklist.is_template ? 'Modèle' : 'Site' %></b></article><% }) %>
        </div>
      </details>

      <details class="panel suite-module-drawer" id="tournees">
        <summary class="suite-module-title"><div><p class="eyebrow">Tournées</p><h2>Passages quotidiens, hebdomadaires ou personnalisés.</h2></div><span class="suite-module-toggle">Ouvrir</span></summary>
        <form method="post" action="<%= adminBase %>/conciergerie/tournees" class="form-grid compact">
          <input type="hidden" name="_csrf" value="<%= csrfToken %>">
          <div class="form-grid three"><label>Nom<input name="name" required></label><label>Date<input type="date" name="round_date"></label><label>Récurrence<select name="recurrence_type"><option value="daily">Quotidienne</option><option value="weekly" selected>Hebdomadaire</option><option value="monthly">Mensuelle</option><option value="custom">Personnalisée</option></select></label></div>
          <div class="form-grid two"><label>Employé<select name="assigned_user_id"><option value="">Non assigné</option><% context.employees.forEach((employee) => { %><option value="<%= employee.id %>"><%= personName(employee) %></option><% }) %></select></label><label>Durée par immeuble<input type="number" name="estimated_minutes" value="45"></label></div>
          <label>Immeubles dans la tournée<select name="building_ids" multiple size="5"><% (c.buildings || []).forEach((building) => { %><option value="<%= building.id %>"><%= building.name %></option><% }) %></select><small>Maintenez Ctrl/Cmd pour sélectionner plusieurs immeubles.</small></label>
          <label>Notes<textarea name="notes" rows="2"></textarea></label>
          <button>Créer tournée</button>
        </form>
        <div class="compact-list">
          <% (c.rounds || []).forEach((round) => { %><article class="line-card"><strong><%= round.name %></strong><span><%= ui.date(round.round_date) %> · <%= personName(round) %></span><b><%= ui.label(round.status) %></b></article><% }) %>
        </div>
      </details>

      <details class="panel suite-module-drawer" id="tickets">
        <summary class="suite-module-title"><div><p class="eyebrow">Tickets / signalements</p><h2>Incidents immeubles et demandes régie.</h2></div><span class="suite-module-toggle">Ouvrir</span></summary>
        <form method="post" action="<%= adminBase %>/conciergerie/tickets" class="form-grid compact">
          <input type="hidden" name="_csrf" value="<%= csrfToken %>">
          <div class="form-grid three"><label>Immeuble<select name="building_id"><option value="">Non lié</option><% (c.buildings || []).forEach((building) => { %><option value="<%= building.id %>"><%= building.name %></option><% }) %></select></label><label>Catégorie<select name="category"><option value="ampoule">Ampoule cassée</option><option value="degat">Dégât</option><option value="vandalisme">Vandalisme</option><option value="proprete">Propreté</option><option value="container">Container</option><option value="serrure">Serrure</option><option value="encombrant">Encombrant</option><option value="demande_regie">Demande régie</option><option value="other">Autre</option></select></label><label>Priorité<select name="priority"><option value="normal">Normale</option><option value="high">Haute</option><option value="critical">Critique</option><option value="low">Basse</option></select></label></div>
          <div class="form-grid two"><label>Assigné à<select name="assigned_user_id"><option value="">Non assigné</option><% context.employees.forEach((employee) => { %><option value="<%= employee.id %>"><%= personName(employee) %></option><% }) %></select></label><label>Date limite<input type="date" name="due_on"></label></div>
          <label>Description<textarea name="description" rows="3" required></textarea></label>
          <label class="check"><input type="checkbox" name="billable_out_of_contract"><span>Prestation hors contrat à facturer</span></label>
          <button>Ouvrir ticket</button>
        </form>
        <div class="compact-list">
          <% (c.tickets || []).forEach((ticket) => { %>
            <article class="list-card slim-card">
              <div class="list-card-head"><div><strong><%= ticket.building_name || buildingName(ticket.building_id) %> · <%= ui.label(ticket.category) %></strong><span><%= ticket.description %></span></div><span class="badge <%= ticket.priority === 'critical' || ticket.priority === 'high' ? 'danger' : '' %>"><%= ui.label(ticket.priority) %></span></div>
              <form method="post" action="<%= adminBase %>/conciergerie/tickets/<%= ticket.id %>" class="form-grid inline-ticket-form">
                <input type="hidden" name="_csrf" value="<%= csrfToken %>">
                <label>Statut<select name="status"><% ['open','in_progress','resolved','billed_out_of_contract','closed'].forEach((status) => { %><option value="<%= status %>" <%= ticket.status===status?'selected':'' %>><%= ui.label(status) %></option><% }) %></select></label>
                <label>Priorité<select name="priority"><% ['low','normal','high','critical'].forEach((priority) => { %><option value="<%= priority %>" <%= ticket.priority===priority?'selected':'' %>><%= ui.label(priority) %></option><% }) %></select></label>
                <label>Assigné<select name="assigned_user_id"><option value="">Non assigné</option><% context.employees.forEach((employee) => { %><option value="<%= employee.id %>" <%= Number(ticket.assigned_user_id)===Number(employee.id)?'selected':'' %>><%= personName(employee) %></option><% }) %></select></label>
                <label>Note<input name="note" placeholder="Historique"></label>
                <button class="secondary">Mettre à jour</button>
              </form>
            </article>
          <% }) %>
        </div>
      </details>

      <details class="panel suite-module-drawer" id="rapports">
        <summary class="suite-module-title"><div><p class="eyebrow">Rapports régie</p><h2>PDF par période, immeuble et tickets.</h2></div><span class="suite-module-toggle">Ouvrir</span></summary>
        <form method="post" action="<%= adminBase %>/conciergerie/rapports" class="form-grid compact">
          <input type="hidden" name="_csrf" value="<%= csrfToken %>">
          <div class="form-grid three"><label>Immeuble<select name="building_id"><option value="">Tous</option><% (c.buildings || []).forEach((building) => { %><option value="<%= building.id %>"><%= building.name %></option><% }) %></select></label><label>Du<input type="date" name="period_from"></label><label>Au<input type="date" name="period_to"></label></div>
          <div class="form-grid two"><label>Heures passées<input type="number" step="0.01" name="hours_spent"></label><label>Hors contrat CHF<input type="number" step="0.01" name="out_of_contract_amount"></label></div>
          <label>Résumé<textarea name="summary" rows="4" placeholder="Interventions réalisées, checklists complétées, photos, remarques, prestations hors contrat..."></textarea></label>
          <button>Générer rapport PDF</button>
        </form>
        <div class="compact-list">
          <% (c.reports || []).forEach((report) => { %><article class="line-card"><strong><%= report.building_name || 'Rapport global' %></strong><span><%= report.period_from || 'Début' %> → <%= report.period_to || 'Aujourd’hui' %> · <%= ui.money(report.out_of_contract_amount) %> hors contrat</span><a class="button secondary small" href="<%= adminBase %>/conciergerie/rapports/<%= report.id %>/pdf">PDF</a></article><% }) %>
        </div>
      </details>
    </div>
  </section>
</div>
