<?php 
use App\Core\Auth; 
$title = 'Consultation des incidents'; 
$base = rtrim(base_url(), '/');
?>

<?php if (isset($_GET['success']) && $_GET['success'] === 'incident_deleted'): ?>
  <div class="alert alert-success alert-dismissible fade show" role="alert">
    <i class="fas fa-check-circle me-2"></i>
    <strong>Succès !</strong> L'incident a été supprimé avec succès.
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
  </div>
<?php endif; ?>

<?php if (isset($_GET['error'])): ?>
  <?php
    $errorMessages = [
      'incident_not_found' => 'Incident introuvable.',
      'cannot_delete_taken' => 'Impossible de supprimer un incident déjà pris en charge.',
      'delete_failed' => 'Échec de la suppression de l\'incident.'
    ];
    $errorMsg = $errorMessages[$_GET['error']] ?? 'Une erreur est survenue.';
  ?>
  <div class="alert alert-danger alert-dismissible fade show" role="alert">
    <i class="fas fa-exclamation-triangle me-2"></i>
    <strong>Erreur !</strong> <?= htmlspecialchars($errorMsg) ?>
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
  </div>
<?php endif; ?>

<style>
  /* Variante compacte pour les widgets */
  .small-box.sm { position: relative; border-radius: .5rem; }
  .small-box.sm .inner { padding: .5rem .75rem; }
  .small-box.sm h3 { font-size: 1.1rem; margin: 0 0 .15rem; line-height: 1.2; }
  .small-box.sm p { font-size: .8rem; margin: 0; opacity: .9; }
  .small-box.sm .icon { position: absolute; right: .5rem; top: .5rem; font-size: 1.25rem; opacity: .35; }

  /* Cartes compactes (statuts/priorités) */
  .card.card-compact .card-header { padding: .5rem .75rem; }
  .card.card-compact .card-header strong { font-size: .95rem; }
  .card.card-compact .card-body { padding: .75rem; }
  .card.card-compact .badge { font-size: .75rem; padding: .35em .5em; }
  .chart-compact { height: 140px !important; max-height: 140px !important; }
</style>

<!-- KPIs -->
<div class="row g-2 mb-2">
  <div class="col-6 col-md-3">
    <div class="small-box sm bg-primary text-white shadow-sm">
      <div class="inner">
        <h3 class="mb-0"><?= isset($kpis['total']) ? (int)$kpis['total'] : count($incidents) ?></h3>
        <p class="mb-0">Incidents (filtrés)</p>
      </div>
      <div class="icon"><i class="fas fa-list"></i></div>
    </div>
  </div>
  <div class="col-6 col-md-3">
    <div class="small-box sm bg-info text-white shadow-sm">
      <div class="inner">
        <h3 class="mb-0"><?= (int)($kpis['open'] ?? 0) ?></h3>
        <p class="mb-0">Ouverts</p>
      </div>
      <div class="icon"><i class="fas fa-door-open"></i></div>
    </div>
  </div>
  <div class="col-6 col-md-3">
    <div class="small-box sm bg-warning text-dark shadow-sm">
      <div class="inner">
        <h3 class="mb-0"><?= (int)($kpis['in_progress'] ?? 0) ?></h3>
        <p class="mb-0">En cours</p>
      </div>
      <div class="icon"><i class="fas fa-spinner"></i></div>
    </div>
  </div>
  <div class="col-6 col-md-3">
    <div class="small-box sm bg-success text-white shadow-sm">
      <div class="inner">
        <h3 class="mb-0"><?= (int)($kpis['closed'] ?? 0) ?></h3>
        <p class="mb-0">Clos / Résolus</p>
      </div>
      <div class="icon"><i class="fas fa-check-circle"></i></div>
    </div>
  </div>
  
  <?php if (!empty($statusChart['labels'])): ?>
  <div class="col-12 col-lg-6">
    <div class="card card-compact h-100">
      <div class="card-header bg-light d-flex align-items-center gap-2">
        <i class="fas fa-chart-pie text-secondary"></i>
        <strong class="mb-0">Répartition par statut</strong>
      </div>
      <div class="card-body">
        <canvas id="statusChart" class="chart-compact" height="140"></canvas>
      </div>
    </div>
  </div>
  <?php endif; ?>

  <?php if (!empty($priorityStats)): ?>
  <div class="col-12 col-lg-6">
    <div class="card card-compact h-100">
      <div class="card-header bg-light d-flex align-items-center gap-2">
        <i class="fas fa-signal text-secondary"></i>
        <strong class="mb-0">Priorités</strong>
      </div>
      <div class="card-body">
        <?php 
          $prioOrder = ['Urgent' => 'danger', 'Haute' => 'warning', 'Moyenne' => 'info', 'Basse' => 'secondary'];
          foreach ($priorityStats as $prio => $cnt):
            $variant = $prioOrder[$prio] ?? 'secondary';
        ?>
          <span class="badge text-bg-<?= $variant ?> me-2 mb-2">
            <?= htmlspecialchars($prio) ?>
            <span class="ms-1" style="font-weight:600;"><?= (int)$cnt ?></span>
          </span>
        <?php endforeach; ?>
      </div>
    </div>
  </div>
  <?php endif; ?>
</div>

<div class="row mb-3">
  <div class="col-12">
    <div class="card">
      <div class="card-header bg-light d-flex justify-content-between align-items-center">
        <h5 class="mb-0"><i class="fas fa-filter"></i> Filtres de recherche</h5>
        <button type="button" id="btnOpenCreate" class="btn btn-primary btn-sm">
          <i class="fas fa-plus-circle"></i> Déclarer un incident
        </button>
      </div>
      <div class="card-body">
        <form method="get" action="<?= htmlspecialchars($base) ?>/incidents" class="row g-3">
          <div class="col-12 col-md-6 col-lg-2">
            <label class="form-label">ID Ticket</label>
            <input class="form-control form-control-sm" name="ticket_id" value="<?= htmlspecialchars($filters['ticket_id']) ?>" placeholder="INC-2025-001">
          </div>
          <div class="col-12 col-md-6 col-lg-2">
            <label class="form-label">Numéro Incident</label>
            <input class="form-control form-control-sm" name="incident_number" value="<?= htmlspecialchars($filters['incident_number'] ?? '') ?>" placeholder="Réf interne">
          </div>
          <div class="col-12 col-md-6 col-lg-2">
            <label class="form-label">Client</label>
            <select class="form-select form-select-sm" name="client_id">
              <option value="">Tous les clients</option>
              <?php foreach ($clients as $client): ?>
                <option value="<?= (int)$client['id'] ?>" <?= $filters['client_id'] == $client['id'] ? 'selected' : '' ?>>
                  <?= htmlspecialchars($client['name']) ?>
                </option>
              <?php endforeach; ?>
            </select>
          </div>
          <div class="col-12 col-md-6 col-lg-2">
            <label class="form-label">Statut</label>
            <select class="form-select form-select-sm" name="status_id">
              <option value="">Tous statuts</option>
              <?php foreach ($statuses as $status): ?>
                <option value="<?= (int)$status['id'] ?>" <?= $filters['status_id'] == $status['id'] ? 'selected' : '' ?>>
                  <?= htmlspecialchars($status['label']) ?>
                </option>
              <?php endforeach; ?>
            </select>
          </div>
          <div class="col-12 col-md-6 col-lg-2">
            <label class="form-label">Priorité</label>
            <select class="form-select form-select-sm" name="priority">
              <option value="">Toutes</option>
              <option value="Basse" <?= $filters['priority'] === 'Basse' ? 'selected' : '' ?>>Basse</option>
              <option value="Moyenne" <?= $filters['priority'] === 'Moyenne' ? 'selected' : '' ?>>Moyenne</option>
              <option value="Haute" <?= $filters['priority'] === 'Haute' ? 'selected' : '' ?>>Haute</option>
              <option value="Urgent" <?= $filters['priority'] === 'Urgent' ? 'selected' : '' ?>>Urgent</option>
            </select>
          </div>
          <?php if (in_array(Auth::user()['role_key'] ?? '', ['admin','agent'])): ?>
            <div class="col-12 col-md-6 col-lg-2">
              <label class="form-label">Technicien</label>
              <select class="form-select form-select-sm" name="assigned_user">
                <option value="">Tous</option>
                <?php foreach ($users as $user): ?>
                  <option value="<?= (int)$user['id'] ?>" <?= $filters['assigned_user'] == $user['id'] ? 'selected' : '' ?>>
                    <?= htmlspecialchars($user['name']) ?>
                  </option>
                <?php endforeach; ?>
              </select>
            </div>
          <?php endif; ?>
          <div class="col-12 col-md-6 col-lg-2">
            <label class="form-label">Date début</label>
            <input type="date" class="form-control form-control-sm" name="date_from" value="<?= htmlspecialchars($filters['date_from']) ?>">
          </div>
          <div class="col-12 col-md-6 col-lg-2">
            <label class="form-label">Date fin</label>
            <input type="date" class="form-control form-control-sm" name="date_to" value="<?= htmlspecialchars($filters['date_to']) ?>">
          </div>
          <div class="col-12 col-md-6 col-lg-2 d-flex align-items-end">
            <div class="form-check">
              <input class="form-check-input" type="checkbox" value="1" id="sla_late" name="sla_late" <?= !empty($filters['sla_late']) ? 'checked' : '' ?>>
              <label class="form-check-label" for="sla_late">
                Hors SLA (résolution)
              </label>
            </div>
          </div>
          <div class="col-12 text-end">
            <button type="submit" class="btn btn-primary btn-sm">
              <i class="fas fa-search"></i> Rechercher
            </button>
            <a href="<?= htmlspecialchars($base) ?>/incidents" class="btn btn-outline-secondary btn-sm">
              <i class="fas fa-rotate"></i> Réinitialiser
            </a>
          </div>
        </form>
      </div>
    </div>
  </div>
</div>

<div class="row">
  <div class="col-12">
    <div class="card">
      <div class="card-header bg-light">
        <h5 class="mb-0"><i class="fas fa-exclamation-triangle"></i> Incidents <span class="badge bg-primary"><?= count($incidents) ?></span></h5>
      </div>
      <div class="card-body p-0">
        <div class="table-responsive">
          <table class="table table-hover mb-0">
            <thead class="table-light">
              <tr>
                <th><i class="fas fa-ticket"></i> Ticket</th>
                <th><i class="fas fa-calendar-alt"></i> Déclaré le</th>
                <th><i class="fas fa-building"></i> Client</th>
                <th><i class="fas fa-location-dot"></i> Localisation</th>
                <th><i class="fas fa-user-check"></i> Assigné à</th>
                <th><i class="fas fa-comment-dots"></i> Titre</th>
                <th><i class="fas fa-exclamation"></i> Priorité</th>
                <th><i class="fas fa-circle"></i> Statut</th>
                <th>Actions</th>
              </tr>
            </thead>
            <tbody>
              <?php if (empty($incidents)): ?>
                <tr>
                  <td colspan="9" class="text-center text-muted py-4">
                    <i class="fas fa-inbox" style="font-size: 2rem;"></i><br>
                    Aucun incident trouvé
                  </td>
                </tr>
              <?php else: ?>
                <?php foreach ($incidents as $incident): ?>
                  <tr>
                    <td>
                      <?php
                        $nowTs = time();
                        $expRes = !empty($incident['expected_resolution_at']) ? strtotime($incident['expected_resolution_at']) : null;
                        $resAt  = !empty($incident['resolved_at']) ? strtotime($incident['resolved_at']) : null;
                        $isLateUnresolved = ($expRes && !$resAt && $expRes < $nowTs);
                        $isLateResolved   = ($expRes && $resAt && $resAt > $expRes);
                        $ticketDisplay = $incident['ticket_id'] ?? '';
                        if (empty($ticketDisplay)) {
                          $ticketDisplay = $incident['reference'] ?? ('INC-' . (int)$incident['id']);
                        }
                        // Couleur de statut (palette centralisée + SLA)
                        $statusColor = incident_status_color($incident);
                      ?>
                      <strong class="text-primary"><?= htmlspecialchars($ticketDisplay) ?></strong>
                      <?php if (!empty($incident['incident_number'])): ?>
                        <br><small class="text-muted">N°: <?= htmlspecialchars($incident['incident_number']) ?></small>
                      <?php endif; ?>
                      <?php if ($isLateUnresolved || $isLateResolved): ?>
                        <span class="badge text-bg-danger ms-1" title="SLA de résolution dépassé">SLA hors délai</span>
                      <?php endif; ?>
                      <?php if (!empty($incident['last_gps_lat']) && !empty($incident['last_gps_lng'])): ?>
                        <span class="badge text-bg-info ms-1" title="Coordonnées disponibles: <?= htmlspecialchars((string)$incident['last_gps_lat']) ?>, <?= htmlspecialchars((string)$incident['last_gps_lng']) ?>">GPS</span>
                      <?php endif; ?>
                      <?php if (!empty($incident['intervention_completed_by_user'])): ?>
                        <span class="badge text-bg-success ms-1" title="Intervention terminée par vous"><i class="fas fa-flag-checkered"></i> Terminée</span>
                      <?php endif; ?>
                    </td>
                    <td>
                      <small><?= date('d/m/Y H:i', strtotime($incident['declared_at'])) ?></small><br>
                      <small class="text-muted">par <?= htmlspecialchars((string)($incident['declared_by_name'] ?? '')) ?></small>
                    </td>
                    <td><?= htmlspecialchars($incident['client_name']) ?></td>
                    <td><?= htmlspecialchars($incident['location_name']) ?></td>
                    <td>
                      <?php 
                      $incId = (int)$incident['id'];
                      if (!empty($assignedUsersMap[$incId])): 
                        foreach ($assignedUsersMap[$incId] as $userName): ?>
                          <span class="badge text-bg-success me-1 mb-1"><?= htmlspecialchars($userName) ?></span>
                        <?php endforeach;
                      else: ?>
                        <span class="text-muted small">Non assigné</span>
                      <?php endif; ?>
                    </td>
                    <td>
                      <?= htmlspecialchars($incident['title']) ?>
                      <?php if ($incident['cause_name']): ?>
                        <br><small class="text-muted"><?= htmlspecialchars($incident['cause_name']) ?></small>
                      <?php endif; ?>
                    </td>
                    <td>
                      <?php
                      $priorityClass = match($incident['priority']) {
                        'Urgent' => 'text-bg-danger',
                        'Haute' => 'text-bg-warning',
                        'Moyenne' => 'text-bg-info',
                        'Basse' => 'text-bg-secondary',
                        default => 'text-bg-secondary'
                      };
                      ?>
                      <span class="badge <?= $priorityClass ?>"><?= htmlspecialchars($incident['priority']) ?></span>
                    </td>
                    <td>
                      <span class="badge" style="background-color: <?= htmlspecialchars($statusColor) ?>">
                        <?= htmlspecialchars($incident['status_label']) ?>
                      </span>
                    </td>
                    <td>
                      <div class="d-flex flex-wrap gap-1">
                        <a href="<?= htmlspecialchars($base) ?>/incidents/detail?id=<?= (int)$incident['id'] ?>" class="btn btn-sm btn-outline-primary" title="Ouvrir la fiche">
                          <i class="fas fa-eye"></i>
                        </a>
                        <?php if ((Auth::user()['role_key'] ?? '') === 'technicien'): ?>
                          <button type="button"
                                  class="btn btn-sm btn-warning btn-takeover"
                                  data-action="takeover"
                                  title="Enregistrer la prise en charge maintenant">
                            <i class="fas fa-play"></i>
                          </button>
                        <?php endif; ?>
                        <?php if (!empty($incident['last_gps_lat']) && !empty($incident['last_gps_lng'])): ?>
                          <a href="<?= htmlspecialchars(route_url('/interventions/live', ['incident_id' => (int)$incident['id']])) ?>" class="btn btn-sm btn-outline-primary" title="Voir localisation">
                            <i class="fas fa-map-location-dot"></i>
                          </a>
                        <?php endif; ?>
                        <?php
                          // Bouton supprimer uniquement si statut "open" et rôle admin/agent
                          $canDeleteIncident = in_array(Auth::user()['role_key'] ?? '', ['admin','agent'], true) 
                                            && strtolower($incident['status_key'] ?? '') === 'open';
                          if ($canDeleteIncident):
                        ?>
                            <button type="button"
                                  class="btn btn-sm btn-outline-danger"
                              onclick="confirmDeleteIncidentFromList(<?= (int)$incident['id'] ?>, '<?= htmlspecialchars($ticketDisplay, ENT_QUOTES) ?>')"
                                  title="Supprimer cet incident">
                            <i class="fas fa-trash-alt"></i>
                          </button>
                        <?php endif; ?>
                      </div>
                    </td>
                  </tr>
                <?php endforeach; ?>
              <?php endif; ?>
            </tbody>
          </table>
        </div>
        <?php 
          // Pagination controls
          $page = (int)($pagination['page'] ?? 1);
          $perPage = (int)($pagination['per_page'] ?? 50);
          $total = (int)($pagination['total'] ?? count($incidents));
          $totalPages = max(1, (int)($pagination['total_pages'] ?? 1));
          $qs = $_GET ?? [];
          unset($qs['page']); unset($qs['per_page']);
          $makeUrl = function(int $p) use ($qs, $base, $perPage) {
            $qs2 = $qs; $qs2['page'] = $p; $qs2['per_page'] = $perPage;
            $q = http_build_query($qs2);
            return htmlspecialchars($base . '/incidents' . ($q? ('?' . $q) : ''));
          };
        ?>
        <div class="p-3 d-flex flex-wrap align-items-center justify-content-between border-top">
          <div class="text-muted small">
            Affichage page <strong><?= $page ?></strong> / <?= $totalPages ?> • Total: <strong><?= $total ?></strong>
          </div>
          <nav>
            <ul class="pagination pagination-sm mb-0">
              <li class="page-item <?= ($page<=1?'disabled':'') ?>">
                <a class="page-link" href="<?= $page>1 ? $makeUrl(1) : '#' ?>" aria-label="Première">«</a>
              </li>
              <li class="page-item <?= ($page<=1?'disabled':'') ?>">
                <a class="page-link" href="<?= $page>1 ? $makeUrl($page-1) : '#' ?>" aria-label="Précédente">‹</a>
              </li>
              <?php 
                // fenêtre de pages autour de la page courante
                $start = max(1, $page-2); $end = min($totalPages, $page+2);
                for ($p=$start; $p<=$end; $p++):
              ?>
                <li class="page-item <?= ($p===$page?'active':'') ?>">
                  <a class="page-link" href="<?= $makeUrl($p) ?>"><?= $p ?></a>
                </li>
              <?php endfor; ?>
              <li class="page-item <?= ($page>=$totalPages?'disabled':'') ?>">
                <a class="page-link" href="<?= $page<$totalPages ? $makeUrl($page+1) : '#' ?>" aria-label="Suivante">›</a>
              </li>
              <li class="page-item <?= ($page>=$totalPages?'disabled':'') ?>">
                <a class="page-link" href="<?= $page<$totalPages ? $makeUrl($totalPages) : '#' ?>" aria-label="Dernière">»</a>
              </li>
            </ul>
          </nav>
        </div>
      </div>
    </div>
  </div>
</div>

  </div>

<!-- Modal confirmation suppression incident -->
<div class="modal fade" id="deleteIncidentModal" tabindex="-1" aria-labelledby="deleteIncidentLabel" aria-hidden="true">
  <div class="modal-dialog modal-dialog-centered">
    <div class="modal-content border-0 shadow">
      <div class="modal-header bg-danger text-white border-0">
        <h5 class="modal-title" id="deleteIncidentLabel">
          <i class="fas fa-exclamation-triangle me-2"></i>
          Confirmer la suppression
        </h5>
        <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Fermer"></button>
      </div>
      <div class="modal-body p-4">
        <div class="alert alert-warning border-0 mb-3">
          <i class="fas fa-info-circle me-2"></i>
          <strong>Attention !</strong> Cette action est irréversible.
        </div>
        <p class="mb-2">
          Êtes-vous sûr de vouloir supprimer l'incident 
          <strong id="deleteIncidentTicketId" class="text-primary"></strong> ?
        </p>
        <p class="text-muted small mb-0">
          <i class="fas fa-trash-alt me-1"></i>
          Toutes les données associées seront définitivement supprimées :
        </p>
        <ul class="text-muted small mt-2 mb-0">
          <li>Commentaires et réponses</li>
          <li>Pièces jointes</li>
          <li>Historique des modifications</li>
          <li>Assignations de techniciens</li>
        </ul>
      </div>
      <div class="modal-footer border-0 bg-light">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
          <i class="fas fa-times me-1"></i> Annuler
        </button>
        <button type="button" class="btn btn-danger" id="confirmDeleteIncidentBtn">
          <i class="fas fa-trash-alt me-1"></i> Supprimer définitivement
        </button>
      </div>
    </div>
  </div>
</div>

<!-- Modal Création Incident -->
<div class="modal fade" id="incidentModal" tabindex="-1" aria-hidden="true">
  <div class="modal-dialog modal-lg modal-dialog-scrollable">
    <div class="modal-content">
      <div class="modal-header py-2">
        <h5 class="modal-title"><i class="fas fa-circle-plus me-2 text-primary"></i>Déclarer un incident</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body p-2">
        <div class="text-center text-muted py-5" id="incidentModalLoader">
          <div class="spinner-border text-primary" role="status"><span class="visually-hidden">Chargement...</span></div>
          <div class="mt-2">Chargement du formulaire…</div>
        </div>
        <div id="incidentModalContent" style="display:none"></div>
      </div>
    </div>
  </div>
  </div>

<?php if (!empty($statusChart['labels'])): ?>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>
<script>
  const stx = document.getElementById('statusChart');
  if (stx) {
    const data = {
      labels: <?= json_encode($statusChart['labels'] ?? []) ?>,
      datasets: [{
        data: <?= json_encode($statusChart['data'] ?? []) ?>,
        backgroundColor: <?= json_encode($statusChart['colors'] ?? []) ?>,
        borderWidth: 1,
      }]
    };
    new Chart(stx, { type: 'doughnut', data, options: { plugins: { legend: { position: 'bottom' }}}});
  }
</script>
<?php endif; ?>

<script>
  // Ouverture du modal de création avec chargement du formulaire
  (function(){
    const btn = document.getElementById('btnOpenCreate');
    if (!btn) return;
    const modalEl = document.getElementById('incidentModal');
    let bsModal = null;
    btn.addEventListener('click', async () => {
      try {
        if (!bsModal) { bsModal = new bootstrap.Modal(modalEl); }
        document.getElementById('incidentModalLoader').style.display = '';
        const content = document.getElementById('incidentModalContent');
        content.style.display = 'none';
        content.innerHTML = '';
        bsModal.show();

        const res = await fetch('<?= $base ?>' + '/incidents/create?modal=1', { credentials: 'same-origin' });
        const html = await res.text();
        content.innerHTML = html;

        // Exécuter les balises <script> contenues dans le fragment HTML chargé
        // (par défaut, innerHTML n'exécute pas les scripts)
        const scripts = content.querySelectorAll('script');
        scripts.forEach(function(oldScript) {
          const newScript = document.createElement('script');
          // Copier les attributs éventuels (src, type, etc.)
          if (oldScript.src) {
            newScript.src = oldScript.src;
          } else {
            newScript.textContent = oldScript.textContent;
          }
          if (oldScript.type) {
            newScript.type = oldScript.type;
          }
          document.head.appendChild(newScript);
          document.head.removeChild(newScript);
        });

        document.getElementById('incidentModalLoader').style.display = 'none';
        content.style.display = '';
      } catch(e) {
        console.error('Erreur chargement formulaire incident:', e);
        document.getElementById('incidentModalLoader').innerHTML = '<div class="text-danger">Impossible de charger le formulaire.</div>';
      }
    });
  })();

  // Bouton prise en charge (technicien) AJAX (avec géoloc + prévention double prise)
  (function(){
    const buttons = document.querySelectorAll('.btn-takeover');
    if (!buttons.length) return;
    buttons.forEach(btn => {
      btn.addEventListener('click', async () => {
        if (btn.disabled) return;
        btn.disabled = true;
        const original = btn.innerHTML;
        btn.innerHTML = '<span class="spinner-border spinner-border-sm"></span>';
        try {
          // Obtenir géolocalisation rapide (non bloquant >3s)
          const getGeo = () => new Promise(resolve => {
            if (!('geolocation' in navigator)) return resolve(null);
            let doneFlag = false; const done = v => { if(!doneFlag){ doneFlag=true; resolve(v);} };
            navigator.geolocation.getCurrentPosition(p => done({lat:p.coords.latitude,lng:p.coords.longitude}), () => done(null), { enableHighAccuracy:false, timeout:3000, maximumAge:60000 });
            setTimeout(() => done(null), 3200);
          });
          const geo = await getGeo();
          const params = new URLSearchParams({ ajax: '1' });
          if (geo) { params.append('lat', String(geo.lat)); params.append('lng', String(geo.lng)); }
          const resp = await fetch('<?= htmlspecialchars($base) ?>/users/takeover', {
            method: 'POST', headers: { 'X-Requested-With': 'XMLHttpRequest' }, body: params
          });
          const data = await resp.json();
          if ((data.status === 'ok' || data.status === 'already') && data.takeover_at) {
            btn.classList.remove('btn-warning');
            btn.classList.add('btn-success');
            const dt = new Date(data.takeover_at.replace(' ', 'T'));
            const hh = String(dt.getHours()).padStart(2,'0');
            const mm = String(dt.getMinutes()).padStart(2,'0');
            btn.innerHTML = '<i class="fas fa-check"></i> Pris à '+hh+':'+mm;
            btn.title = 'Prise en charge enregistrée le '+dt.toLocaleDateString('fr-FR')+' '+hh+':'+mm;
            btn.disabled = true; // verrouiller définitivement
          } else {
            btn.classList.remove('btn-warning');
            btn.classList.add('btn-danger');
            btn.innerHTML = '<i class="fas fa-triangle-exclamation"></i> Échec';
            setTimeout(() => { btn.disabled = false; btn.innerHTML = original; btn.classList.add('btn-warning'); btn.classList.remove('btn-danger'); }, 3000);
          }
        } catch(e) {
          console.error('Erreur prise en charge:', e);
          btn.classList.remove('btn-warning');
          btn.classList.add('btn-danger');
          btn.innerHTML = '<i class="fas fa-triangle-exclamation"></i> Erreur';
          setTimeout(() => { btn.disabled = false; btn.innerHTML = original; btn.classList.add('btn-warning'); btn.classList.remove('btn-danger'); }, 3000);
        }
      });
    });
  })();

  // Modal et fonction de confirmation de suppression d'incident depuis la liste
  let deleteIncidentModal = null;
  let incidentIdToDelete = null;

  function confirmDeleteIncidentFromList(incidentId, ticketId) {
    incidentIdToDelete = incidentId;
    document.getElementById('deleteIncidentTicketId').textContent = ticketId;
    
    if (!deleteIncidentModal) {
      deleteIncidentModal = new bootstrap.Modal(document.getElementById('deleteIncidentModal'));
    }
    deleteIncidentModal.show();
  }

  // Gérer la confirmation de suppression
  document.addEventListener('DOMContentLoaded', function() {
    const confirmBtn = document.getElementById('confirmDeleteIncidentBtn');
    if (confirmBtn) {
      confirmBtn.addEventListener('click', function() {
        if (incidentIdToDelete) {
          const form = document.createElement('form');
          form.method = 'POST';
          form.action = '<?= htmlspecialchars(route_url('/incidents/delete')) ?>';
          const input = document.createElement('input');
          input.type = 'hidden';
          input.name = 'incident_id';
          input.value = incidentIdToDelete;
          form.appendChild(input);
          document.body.appendChild(form);
          form.submit();
        }
      });
    }
  });
</script>