<?php
require_once 'connexion/auth.php'; 

// SÉCURITÉ : Accès réservé
if (!isLogged() || !(hasRole('Administrateur') || hasRole('Maire') || hasRole('Adjoint') || hasRole('Secretaire'))) {
    header('Location: index.php');
    exit();
}

// ==========================================
// CRÉATION ET MISE À JOUR AUTO DES TABLES
// ==========================================
try {
    // Création de la table si elle n'existe pas
    $pdo->exec("CREATE TABLE IF NOT EXISTS cimetiere_ayants_droit (
        id INT AUTO_INCREMENT PRIMARY KEY,
        concession_id INT NOT NULL,
        nom VARCHAR(100) NOT NULL,
        prenom VARCHAR(100),
        lien_parente VARCHAR(100),
        FOREIGN KEY (concession_id) REFERENCES cimetiere_concessions(id) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");

    // Ajout sécurisé des colonnes si elles n'existent pas déjà
    $colonnes = [
        'telephone' => "ALTER TABLE cimetiere_ayants_droit ADD COLUMN telephone VARCHAR(50)",
        'mail' => "ALTER TABLE cimetiere_ayants_droit ADD COLUMN mail VARCHAR(100)",
        'adresse_rue' => "ALTER TABLE cimetiere_ayants_droit ADD COLUMN adresse_rue VARCHAR(255)",
        'adresse_cp' => "ALTER TABLE cimetiere_ayants_droit ADD COLUMN adresse_cp VARCHAR(10)",
        'adresse_ville' => "ALTER TABLE cimetiere_ayants_droit ADD COLUMN adresse_ville VARCHAR(150)"
    ];

    foreach ($colonnes as $colonne => $sql) {
        $stmtCol = $pdo->prepare("
            SELECT COUNT(*) 
            FROM information_schema.COLUMNS 
            WHERE TABLE_SCHEMA = DATABASE()
            AND TABLE_NAME = 'cimetiere_ayants_droit'
            AND COLUMN_NAME = ?
        ");
        $stmtCol->execute([$colonne]);

        if ((int)$stmtCol->fetchColumn() === 0) {
            $pdo->exec($sql);
        }
    }
} catch (PDOException $e) {
    // En production : ne pas afficher les erreurs SQL sensibles
}

$message = '';
$type_msg = '';

// ==========================================
// TRAITEMENT DES FORMULAIRES (POST)
// ==========================================
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['action'])) {
        $action_post = $_POST['action'];

        // --- GESTION DU DOSSIER PRINCIPAL ---
        if (in_array($action_post, ['ajouter', 'editer', 'supprimer'], true)) {
            $numero = strtoupper(trim($_POST['numero_tombe'] ?? ''));
            $statut = $_POST['statut'] ?? 'Libre';
            $type_c = $_POST['type_concession'] ?? 'Caveau';
            $concessionnaire = trim($_POST['concessionnaire'] ?? '');
            $date_achat = !empty($_POST['date_achat']) ? $_POST['date_achat'] : null;
            $duree = !empty($_POST['duree']) ? (int)$_POST['duree'] : null;

$statuts_autorises = ['Libre', 'Occupée', 'Expirée', 'Abandonnée', 'Communal'];
            $types_autorises = ['Caveau', 'Case de columbarium', 'Jardin du souvenir', 'Cave urne', 'Fosse commune'];
            $ouvertures_autorisees = ['Dessus', 'Frontale'];

            if (!in_array($type_c, $types_autorises, true)) {
                $type_c = 'Caveau';
            }

            // --- GESTION DES ESPACES COMMUNAUX ---
            if (in_array($type_c, ['Jardin du souvenir', 'Fosse commune'])) {
                $statut = 'Communal';
                $concessionnaire = '';
                $date_achat = null;
                $duree = null;
                $nb_places = 1;
                $ouverture = 'Dessus';
            } else {
                // --- GESTION DES CONCESSIONS CLASSIQUES ---
                if (!in_array($statut, $statuts_autorises, true)) {
                    $statut = 'Libre';
                }
                $nb_places = in_array($type_c, ['Caveau', 'Case de columbarium']) ? max(1, (int)($_POST['nb_places'] ?? 1)) : 1;
                $ouverture = ($type_c === 'Caveau') ? ($_POST['type_ouverture'] ?? 'Dessus') : 'Dessus';
            }

            if ($action_post === 'ajouter') {
                if ($numero !== '') {
                    $stmt = $pdo->prepare("
                        INSERT INTO cimetiere_concessions 
                        (numero_tombe, statut, type_concession, concessionnaire, date_achat, duree, nb_places, type_ouverture) 
                        VALUES (?, ?, ?, ?, ?, ?, ?, ?)
                    ");
                    $stmt->execute([$numero, $statut, $type_c, $concessionnaire, $date_achat, $duree, $nb_places, $ouverture]);

                    $message = "Concession ajoutée avec succès.";
                    $type_msg = "succes";
                }
            } elseif ($action_post === 'editer') {
                $id = (int)($_POST['id'] ?? 0);

                if ($id > 0 && $numero !== '') {
                    $stmt = $pdo->prepare("
                        UPDATE cimetiere_concessions 
                        SET numero_tombe = ?, statut = ?, type_concession = ?, concessionnaire = ?, date_achat = ?, duree = ?, nb_places = ?, type_ouverture = ? 
                        WHERE id = ?
                    ");
                    $stmt->execute([$numero, $statut, $type_c, $concessionnaire, $date_achat, $duree, $nb_places, $ouverture, $id]);

                    $message = "Dossier mis à jour avec succès.";
                    $type_msg = "succes";
                }
            } elseif ($action_post === 'supprimer') {
                $id = (int)($_POST['id'] ?? 0);

                if ($id > 0) {
                    $stmt = $pdo->prepare("DELETE FROM cimetiere_concessions WHERE id = ?");
                    $stmt->execute([$id]);

                    $message = "Concession supprimée.";
                    $type_msg = "succes";
                }
            }
        }

        // --- GESTION DES AYANTS DROIT ---
        elseif ($action_post === 'ajouter_ayant_droit') {
            $concession_id = (int)($_POST['concession_id'] ?? 0);
            $nom = trim($_POST['ad_nom'] ?? '');
            $prenom = trim($_POST['ad_prenom'] ?? '');
            $lien = trim($_POST['ad_lien'] ?? '');
            $rue = trim($_POST['ad_adresse_rue'] ?? '');
            $cp = trim($_POST['ad_adresse_cp'] ?? '');
            $ville = trim($_POST['ad_adresse_ville'] ?? '');
            $telephone = trim($_POST['ad_telephone'] ?? '');
            $mail = trim($_POST['ad_mail'] ?? '');

            if ($concession_id > 0 && $nom !== '') {
                $stmtCheck = $pdo->prepare("SELECT id FROM cimetiere_concessions WHERE id = ?");
                $stmtCheck->execute([$concession_id]);

                if ($stmtCheck->fetchColumn()) {
                    $stmt = $pdo->prepare("
                        INSERT INTO cimetiere_ayants_droit 
                        (concession_id, nom, prenom, lien_parente, adresse_rue, adresse_cp, adresse_ville, telephone, mail) 
                        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
                    ");
                    $stmt->execute([$concession_id, $nom, $prenom, $lien, $rue, $cp, $ville, $telephone, $mail]);

                    header("Location: cimetiere_concessions.php?action=editer&id=" . $concession_id . "&msg=ad_add");
                    exit();
                }
            }
        } elseif ($action_post === 'supprimer_ayant_droit') {
            $id_ad = (int)($_POST['id_ayant_droit'] ?? 0);
            $concession_id = (int)($_POST['concession_id'] ?? 0);

            if ($id_ad > 0 && $concession_id > 0) {
                $stmt = $pdo->prepare("DELETE FROM cimetiere_ayants_droit WHERE id = ? AND concession_id = ?");
                $stmt->execute([$id_ad, $concession_id]);

                header("Location: cimetiere_concessions.php?action=editer&id=" . $concession_id . "&msg=ad_del");
                exit();
            }
        }
    }
}

// Messages de retour
if (isset($_GET['msg'])) {
    if ($_GET['msg'] === 'ad_add') {
        $message = "Ayant droit ajouté au dossier.";
        $type_msg = "succes";
    }

    if ($_GET['msg'] === 'ad_del') {
        $message = "Ayant droit retiré.";
        $type_msg = "succes";
    }
}

// ==========================================
// PRÉPARATION DE L'AFFICHAGE (GET)
// ==========================================
$action_get = $_GET['action'] ?? 'liste';
$concession_edit = null;
$liste_ayants_droit = [];

if (!in_array($action_get, ['liste', 'ajouter', 'editer'], true)) {
    $action_get = 'liste';
}

if ($action_get === 'editer' && isset($_GET['id'])) {
    $concession_id = (int)$_GET['id'];

    $stmt = $pdo->prepare("SELECT * FROM cimetiere_concessions WHERE id = ?");
    $stmt->execute([$concession_id]);
    $concession_edit = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$concession_edit) {
        $action_get = 'liste';
    } else {
        try {
            $stmt_ad = $pdo->prepare("SELECT * FROM cimetiere_ayants_droit WHERE concession_id = ? ORDER BY nom, prenom");
            $stmt_ad->execute([$concession_id]);
            $liste_ayants_droit = $stmt_ad->fetchAll(PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            $liste_ayants_droit = [];
        }
    }
}

// Récupération de toutes les concessions sans ordre spécifique SQL
$liste_concessions = $pdo->query("SELECT * FROM cimetiere_concessions")->fetchAll(PDO::FETCH_ASSOC);

// Tri "Naturel" via PHP (comprend que 2 est avant 10)
usort($liste_concessions, function($a, $b) {
    return strnatcasecmp($a['numero_tombe'], $b['numero_tombe']);
});

// NOUVEAU : Récupération des défunts en fosse commune 
// (Je suppose ici que ta table s'appelle cimetiere_defunts et qu'elle est liée par concession_id. À adapter si ta structure est différente !)
$liste_fosse_commune = [];
try {
    $stmt_fosse = $pdo->query("
        SELECT d.*, c.numero_tombe 
        FROM cimetiere_defunts d 
        JOIN cimetiere_concessions c ON d.concession_id = c.id 
        WHERE c.type_concession = 'Fosse commune' 
        ORDER BY d.nom, d.prenom
    ");
    if ($stmt_fosse) {
        $liste_fosse_commune = $stmt_fosse->fetchAll(PDO::FETCH_ASSOC);
    }
} catch (PDOException $e) {
    // La table defunts n'existe peut-être pas encore ou la structure est différente
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Concessions - Memoria</title>
    <link rel="stylesheet" href="css/global.css">
    <link rel="stylesheet" href="css/cimetiere.css">
    <style>
        .page-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; background: white; padding: 20px 25px; border-radius: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); }
        .btn-primary { background: var(--memoria-accent); color: white; border: none; padding: 10px 20px; border-radius: 8px; font-weight: bold; cursor: pointer; text-decoration: none; display: inline-block; transition: 0.2s;}
        .btn-primary:hover { opacity: 0.9; }
        .btn-secondary { background: #f0f0f0; color: #333; border: none; padding: 10px 20px; border-radius: 8px; font-weight: bold; cursor: pointer; text-decoration: none; transition: 0.2s; display: inline-block; }
        .btn-secondary:hover { background: #e0e0e0; }

        .table-container { background: white; border-radius: 15px; padding: 20px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); }
        .search-bar { width: 100%; padding: 12px; margin-bottom: 20px; border: 1px solid #ddd; border-radius: 8px; box-sizing: border-box; }
        table { width: 100%; border-collapse: collapse; }
        th, td { padding: 15px; border-bottom: 1px solid #eee; text-align: left; vertical-align: top; }
        th { background: #f9fbf9; color: var(--memoria-dark); }
        .badge { padding: 5px 10px; border-radius: 20px; font-size: 0.85em; font-weight: bold; }
        .badge-Libre { background: #e8f5e9; color: #2ecc71; }
        .badge-Occupee { background: #ecf0f1; color: #7f8c8d; }
        .badge-Expiree { background: #fee; color: #e74c3c; }
        .badge-Abandonnee { background: #fef5e7; color: #f39c12; }

        .filter-row { display: flex; gap: 10px; margin-bottom: 15px; align-items: center; flex-wrap: wrap; }
        .filter-row .search-bar { max-width: 220px; margin-bottom: 0; }
        .filter-row .btn-secondary { margin-bottom: 0; }

        .form-container { background: white; border-radius: 15px; padding: 30px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); max-width: 900px; margin: 0 auto; margin-bottom: 30px; }
        .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
        .form-group { display: flex; flex-direction: column; margin-bottom: 15px; }
        .form-group label { font-weight: bold; margin-bottom: 8px; color: #333; font-size: 0.9em; }
        .form-group input, .form-group select { padding: 12px; border: 1px solid #ccc; border-radius: 8px; font-family: inherit; }

        #caveau-options { grid-column: span 2; background: #f9fbf9; padding: 20px; border-radius: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 20px; border: 1px solid #e1ede0; margin-bottom: 15px; }

        .msg { padding: 15px; border-radius: 10px; margin-bottom: 20px; font-weight: bold; }
        .succes { background: #e8f5e9; color: #2ecc71; border: 1px solid #c8e6c9; }

        .ad-section { border-top: 2px solid #f0f0f0; padding-top: 30px; margin-top: 30px; }
        .ad-table { width: 100%; margin-bottom: 20px; border: 1px solid #eee; border-radius: 8px; overflow: hidden; }
        .ad-table th, .ad-table td { padding: 10px 15px; font-size: 0.95em; }
        .ad-table th { background: #f4f7f6; }
        .ad-form { background: #f9fbf9; padding: 20px; border-radius: 10px; border: 1px dashed #ccc; }
        .ad-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 15px; }
        .ad-contact-info { margin: 0; font-size: 0.9em; color: #555; line-height: 1.4; }
        
        /* Styles pour les onglets */
        .tabs { display: flex; gap: 10px; margin-bottom: 20px; border-bottom: 2px solid #eee; padding-bottom: 10px; overflow-x: auto; }
        .tab-btn { padding: 10px 20px; border: none; background: #f0f0f0; border-radius: 8px; cursor: pointer; font-weight: bold; color: #555; transition: 0.3s; white-space: nowrap; }
        .tab-btn:hover { background: #e0e0e0; }
        .tab-btn.active { background: var(--memoria-accent); color: white; }
        .tab-content { display: none; }
        .tab-content.active { display: block; }
        
    </style>
</head>
<body class="memoria-layout">

    <aside class="memoria-sidebar">
        <div class="memoria-sidebar-header">
            <img src="images/cimetiere/logo_memoria.webp" alt="Logo">
            <h1></h1>
        </div>

        <nav class="memoria-sidebar-nav">
            <a href="admin_cimetiere.php" class="memoria-nav-item"><span class="memoria-nav-icon">📊</span> Tableau de bord</a>
            <a href="cimetiere_plan.php" class="memoria-nav-item"><span class="memoria-nav-icon">🗺️</span> Plan interactif</a>
            <a href="cimetiere_concessions.php" class="memoria-nav-item active"><span class="memoria-nav-icon">📜</span> Concessions</a>
            <a href="cimetiere_defunts.php" class="memoria-nav-item"><span class="memoria-nav-icon">⚱️</span> Registre des défunts</a>
        </nav>

        <div class="memoria-sidebar-footer">
            <a href="index.php" class="memoria-btn-retour">← Retour au site</a>
        </div>
    </aside>

    <main class="memoria-main-content">

        <?php if ($message): ?>
            <div class="msg <?= htmlspecialchars($type_msg, ENT_QUOTES, 'UTF-8') ?>">
                <?= htmlspecialchars($message, ENT_QUOTES, 'UTF-8') ?>
            </div>
        <?php endif; ?>

        <?php if ($action_get === 'liste'): ?>

            <div class="page-header">
                <h2>Registre des Concessions</h2>
                <a href="cimetiere_concessions.php?action=ajouter" class="btn-primary" id="btn-add-concession">+ Ajouter une concession</a>
            </div>

            <div class="tabs">
                <button class="tab-btn active" onclick="openTab('tab-caveaux', 'Caveau')">Caveaux</button>
                <button class="tab-btn" onclick="openTab('tab-columbariums', 'Case de columbarium')">Columbariums</button>
                <button class="tab-btn" onclick="openTab('tab-jardins', 'Jardin du souvenir')">Jardins du souvenir</button>
                <button class="tab-btn" onclick="openTab('tab-fosse', 'Fosse commune')">Fosse commune</button>
            </div>

            <div id="concessions-wrapper" class="table-container tab-content active">
                <input type="text" id="searchInput" class="search-bar" placeholder="Rechercher un numéro, nom...">

                <div class="filter-row">
                    <select id="alleeFilter" class="search-bar">
                        <option value="">Toutes les allées</option>
                    </select>

                    <select id="tombeFilter" class="search-bar">
                        <option value="">Tous les emplacements</option>
                    </select>

                    <button type="button" id="resetFilters" class="btn-secondary">Réinitialiser</button>
                </div>

                <table id="concessionsTable">
                    <thead>
                        <tr>
                            <th>Emplacement</th>
                            <th>Statut</th>
                            <th>Type</th>
                            <th>Capacité</th>
                            <th>Concessionnaire principal</th>
                            <th>Échéance</th>
                            <th>Actions</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($liste_concessions as $c): ?>
                            <?php
                                // On exclut la fosse commune (gérée dans l'onglet dédié)
                                if (($c['type_concession'] ?? '') === 'Fosse commune') continue;

                                // NOUVEAU : On cache le meuble parent du Columbarium, on ne veut voir que ses cases !
                                if (in_array($c['type_concession'] ?? '', ['Columbarium', 'Colombarium']) && empty($c['parent_id'])) continue;

                                $echeance = "Non définie";
                                if (($c['type_concession'] ?? '') === 'Jardin du souvenir') {
                                    $echeance = "-";
                                } elseif (!empty($c['date_achat']) && !empty($c['duree'])) {
                                    if ((int)$c['duree'] === 99 || (int)$c['duree'] === 0) {
                                        $echeance = "Perpétuelle";
                                    } else {
                                        $annee_fin = (int)date('Y', strtotime($c['date_achat'])) + (int)$c['duree'];
                                        $echeance = (string)$annee_fin;
                                        if ($annee_fin < (int)date('Y') && ($c['statut'] ?? '') !== 'Libre') {
                                            $echeance = "<span style='color:#e74c3c; font-weight:bold;'>Expirée (" . htmlspecialchars((string)$annee_fin, ENT_QUOTES, 'UTF-8') . ")</span>";
                                        }
                                    }
                                }

                                $statut_brut = $c['statut'] ?? '';
                                $statut_classe = strtr($statut_brut, ['é'=>'e', 'è'=>'e', 'ê'=>'e', 'É'=>'E', 'È'=>'E', 'Ê'=>'E', 'à'=>'a', 'À'=>'A']);
                            ?>
                            <tr data-type="<?= htmlspecialchars($c['type_concession'] ?? '', ENT_QUOTES, 'UTF-8') ?>">
                                <td><strong><?= htmlspecialchars($c['numero_tombe'] ?? '', ENT_QUOTES, 'UTF-8') ?></strong></td>
                                <td>
                                    <?php if ($statut_brut === 'Communal'): ?>
                                        <span class="badge" style="background:#e3f2fd; color:#2980b9;">Espace Commun</span>
                                    <?php else: ?>
                                        <span class="badge badge-<?= htmlspecialchars($statut_classe, ENT_QUOTES, 'UTF-8') ?>">
                                            <?= htmlspecialchars($statut_brut, ENT_QUOTES, 'UTF-8') ?>
                                        </span>
                                    <?php endif; ?>
                                </td>
                                <td><?= htmlspecialchars($c['type_concession'] ?? '', ENT_QUOTES, 'UTF-8') ?></td>
                                <td>
                                    <?php if (($c['type_concession'] ?? '') === 'Caveau'): ?>
                                        <?= htmlspecialchars((string)($c['nb_places'] ?? 1), ENT_QUOTES, 'UTF-8') ?> places (<?= htmlspecialchars($c['type_ouverture'] ?? 'Dessus', ENT_QUOTES, 'UTF-8') ?>)
                                    <?php elseif (($c['type_concession'] ?? '') === 'Case de columbarium'): ?>
                                        <?= htmlspecialchars((string)($c['nb_places'] ?? 1), ENT_QUOTES, 'UTF-8') ?> urnes
                                    <?php else: ?>
                                        -
                                    <?php endif; ?>
                                </td>
                                <td><?= $statut_brut === 'Communal' ? '-' : htmlspecialchars($c['concessionnaire'] ?? '-', ENT_QUOTES, 'UTF-8') ?></td>
                                <td><?= $echeance ?></td>
                                <td>
                                    <a href="?action=editer&id=<?= (int)$c['id'] ?>" style="color:var(--memoria-accent); font-weight:bold; text-decoration:none;">Gérer</a>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>

            <div id="tab-fosse" class="table-container tab-content">
                <h3 style="margin-top: 0;">Registre des défunts en Fosse Commune</h3>
                <?php if (empty($liste_fosse_commune)): ?>
                    <p style="color: #666;">Aucun défunt enregistré en fosse commune actuellement.</p>
                <?php else: ?>
                    <table>
                        <thead>
                            <tr>
                                <th>Nom</th>
                                <th>Prénom</th>
                                <th>Date de décès</th>
                                <th>Emplacement d'origine</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($liste_fosse_commune as $defunt): ?>
                                <tr>
                                    <td><strong><?= htmlspecialchars($defunt['nom'] ?? '', ENT_QUOTES, 'UTF-8') ?></strong></td>
                                    <td><?= htmlspecialchars($defunt['prenom'] ?? '', ENT_QUOTES, 'UTF-8') ?></td>
                                    <td><?= !empty($defunt['date_deces']) ? date('d/m/Y', strtotime($defunt['date_deces'])) : '-' ?></td>
                                    <td><?= htmlspecialchars($defunt['numero_tombe'] ?? '', ENT_QUOTES, 'UTF-8') ?></td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                <?php endif; ?>
            </div>

        <?php else: ?>

            <div class="page-header">
                <h2>
                    <?php if ($action_get === 'ajouter'): ?>
                        Nouvelle concession
                    <?php else: ?>
                        Dossier Concession : <?= htmlspecialchars($concession_edit['numero_tombe'] ?? 'Nouveau', ENT_QUOTES, 'UTF-8') ?>
                    <?php endif; ?>
                </h2>

                <a href="cimetiere_concessions.php" class="btn-secondary">← Retour</a>
            </div>

            <div class="form-container">
                <form method="POST">
                    <input type="hidden" name="action" value="<?= htmlspecialchars($action_get, ENT_QUOTES, 'UTF-8') ?>">

                    <?php if ($concession_edit): ?>
                        <input type="hidden" name="id" value="<?= (int)$concession_edit['id'] ?>">
                    <?php endif; ?>

                    <div class="form-grid">
                        <div class="form-group">
                            <label>Numéro ou Nom de l'emplacement</label>
                            <input type="text" name="numero_tombe" value="<?= htmlspecialchars($concession_edit['numero_tombe'] ?? '', ENT_QUOTES, 'UTF-8') ?>" required>
                        </div>

                        <div class="form-group">
                            <label>Type d'emplacement</label>
                            <select name="type_concession" id="type_concession" onchange="toggleDynamicFields()">
                                <?php $tc = $concession_edit['type_concession'] ?? 'Caveau'; ?>
                                <option value="Caveau" <?= $tc === 'Caveau' ? 'selected' : '' ?>>Caveau</option>
                                <option value="Case de columbarium" <?= $tc === 'Case de columbarium' ? 'selected' : '' ?>>Case de columbarium</option>
                                <option value="Jardin du souvenir" <?= $tc === 'Jardin du souvenir' ? 'selected' : '' ?>>Jardin du souvenir</option>
                                <option value="Cave urne" <?= $tc === 'Cave urne' ? 'selected' : '' ?>>Cave urne</option>
                                <option value="Fosse commune" <?= $tc === 'Fosse commune' ? 'selected' : '' ?>>Fosse commune</option>
                            </select>
                        </div>

                        <div class="form-group" id="groupe-statut">
                            <label>Statut</label>
                            <select name="statut">
                                <?php $s = $concession_edit['statut'] ?? 'Libre'; ?>
                                <option value="Libre" <?= $s === 'Libre' ? 'selected' : '' ?>>Libre</option>
                                <option value="Occupée" <?= $s === 'Occupée' ? 'selected' : '' ?>>Occupée</option>
                                <option value="Expirée" <?= $s === 'Expirée' ? 'selected' : '' ?>>Expirée</option>
                                <option value="Abandonnée" <?= $s === 'Abandonnée' ? 'selected' : '' ?>>Abandonnée</option>
                            </select>
                        </div>

                        <div id="caveau-options" style="display: none; grid-column: span 2;">
                            <div class="form-group" id="groupe-places">
                                <label id="label-places">Nombre de places</label>
                                <input type="number" name="nb_places" value="<?= htmlspecialchars((string)($concession_edit['nb_places'] ?? 1), ENT_QUOTES, 'UTF-8') ?>" min="1">
                            </div>

                            <div class="form-group" id="groupe-ouverture">
                                <label>Type d'ouverture</label>
                                <select name="type_ouverture">
                                    <?php $o = $concession_edit['type_ouverture'] ?? 'Dessus'; ?>
                                    <option value="Dessus" <?= $o === 'Dessus' ? 'selected' : '' ?>>Par le dessus</option>
                                    <option value="Frontale" <?= $o === 'Frontale' ? 'selected' : '' ?>>Frontale</option>
                                </select>
                            </div>
                        </div>

                        <div class="form-group concession-only">
                            <label>Nom du concessionnaire (Acheteur initial)</label>
                            <input type="text" name="concessionnaire" value="<?= htmlspecialchars($concession_edit['concessionnaire'] ?? '', ENT_QUOTES, 'UTF-8') ?>">
                        </div>

                        <div class="form-group concession-only">
                            <label>Date d'achat</label>
                            <input type="date" name="date_achat" value="<?= htmlspecialchars($concession_edit['date_achat'] ?? '', ENT_QUOTES, 'UTF-8') ?>">
                        </div>

                        <div class="form-group concession-only" style="grid-column: span 2;">
                            <label>Durée</label>
                            <select name="duree" style="width: 50%;">
                                <?php $d = $concession_edit['duree'] ?? ''; ?>
                                <option value="">-- Non définie --</option>
                                <option value="15" <?= (int)$d === 15 ? 'selected' : '' ?>>15 ans</option>
                                <option value="30" <?= (int)$d === 30 ? 'selected' : '' ?>>30 ans</option>
                                <option value="50" <?= (int)$d === 50 ? 'selected' : '' ?>>50 ans</option>
                                <option value="99" <?= ((int)$d === 99 || ((int)$d === 0 && $concession_edit)) ? 'selected' : '' ?>>Perpétuelle</option>
                            </select>
                        </div>
                    </div>

                    <div style="margin-top: 20px;">
                        <button type="submit" class="btn-primary">
                            <?= $action_get === 'ajouter' ? 'Créer la concession' : 'Mettre à jour le dossier' ?>
                        </button>

                        <?php if ($action_get === 'editer'): ?>
                            <button type="submit" name="action" value="supprimer" style="background:#fee; color:#e74c3c; border:none; padding:10px 20px; border-radius:8px; cursor:pointer; font-weight:bold; float:right;" onclick="return confirm('Supprimer ce dossier supprimera également ses ayants droit. Continuer ?');">
                                Supprimer
                            </button>
                        <?php endif; ?>
                    </div>
                </form>

                <?php if ($action_get === 'editer'): ?>
                    <div class="ad-section" id="ad-section">
                        <h3 style="color: var(--memoria-dark);">👥 Ayants Droit & Héritiers</h3>
                        <p style="font-size: 0.9em; color: #666; margin-top: -10px;">Personnes autorisées à gérer la concession ou à y être inhumées.</p>

                        <?php if (!empty($liste_ayants_droit)): ?>
                            <table class="ad-table">
                                <thead>
                                    <tr>
                                        <th>Nom / Prénom</th>
                                        <th>Lien de parenté</th>
                                        <th>Adresse postale</th>
                                        <th>Contact (Tél / Mail)</th>
                                        <th style="width: 50px;"></th>
                                    </tr>
                                </thead>

                                <tbody>
                                    <?php foreach ($liste_ayants_droit as $ad): ?>
                                        <tr>
                                            <td><strong><?= htmlspecialchars(($ad['nom'] ?? '') . ' ' . ($ad['prenom'] ?? ''), ENT_QUOTES, 'UTF-8') ?></strong></td>
                                            <td><?= htmlspecialchars($ad['lien_parente'] ?? '-', ENT_QUOTES, 'UTF-8') ?></td>
                                            <td>
                                                <?php
                                                    $adresseComplete = trim(($ad['adresse_rue'] ?? '') . ' ' . ($ad['adresse_cp'] ?? '') . ' ' . ($ad['adresse_ville'] ?? ''));
                                                    echo !empty($adresseComplete) ? htmlspecialchars($adresseComplete, ENT_QUOTES, 'UTF-8') : '-';
                                                ?>
                                            </td>
                                            <td>
                                                <?php if (!empty($ad['telephone'])): ?>
                                                    <div class="ad-contact-info">📞 <?= htmlspecialchars($ad['telephone'], ENT_QUOTES, 'UTF-8') ?></div>
                                                <?php endif; ?>

                                                <?php if (!empty($ad['mail'])): ?>
                                                    <div class="ad-contact-info">✉️ <?= htmlspecialchars($ad['mail'], ENT_QUOTES, 'UTF-8') ?></div>
                                                <?php endif; ?>

                                                <?php if (empty($ad['telephone']) && empty($ad['mail'])): ?>
                                                    -
                                                <?php endif; ?>
                                            </td>
                                            <td>
                                                <form method="POST" onsubmit="return confirm('Retirer cet ayant droit ?');" style="margin:0;">
                                                    <input type="hidden" name="action" value="supprimer_ayant_droit">
                                                    <input type="hidden" name="concession_id" value="<?= (int)$concession_edit['id'] ?>">
                                                    <input type="hidden" name="id_ayant_droit" value="<?= (int)$ad['id'] ?>">
                                                    <button type="submit" style="background:none; border:none; color:#e74c3c; cursor:pointer; font-size:1.2em;" title="Retirer">✖</button>
                                                </form>
                                            </td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        <?php else: ?>
                            <p style="background: #f4f7f6; padding: 15px; border-radius: 8px; text-align: center; color: #888;">Aucun ayant droit enregistré pour ce dossier.</p>
                        <?php endif; ?>

                        <div class="ad-form">
                            <h4 style="margin-top: 0; color: #4a7c44;">+ Ajouter un ayant droit</h4>

                            <form method="POST">
                                <input type="hidden" name="action" value="ajouter_ayant_droit">
                                <input type="hidden" name="concession_id" value="<?= (int)$concession_edit['id'] ?>">

                                <div class="ad-grid">
                                    <div class="form-group" style="margin-bottom:0;"><input type="text" name="ad_nom" placeholder="Nom de famille" required></div>
                                    <div class="form-group" style="margin-bottom:0;"><input type="text" name="ad_prenom" placeholder="Prénom" required></div>
                                    <div class="form-group" style="margin-bottom:0;"><input type="text" name="ad_lien" placeholder="Lien (ex: Fils, Fille, Épouse...)"></div>

                                    <div class="form-group" style="grid-column: span 2; margin-bottom:0;">
                                        <input type="text" name="ad_adresse_rue" placeholder="N°, Rue, Lieu-dit...">
                                    </div>

                                    <div class="form-group" style="margin-bottom:0;">
                                        <input type="text" name="ad_adresse_cp" id="ad_cp" placeholder="Code Postal" maxlength="5">
                                    </div>

                                    <div class="form-group" style="margin-bottom:0;">
                                        <select name="ad_adresse_ville" id="ad_ville">
                                            <option value="">Ville (Saisissez le CP d'abord)</option>
                                        </select>
                                    </div>

                                    <div class="form-group" style="margin-bottom:0;"><input type="text" name="ad_telephone" placeholder="N° de Téléphone"></div>
                                    <div class="form-group" style="margin-bottom:0;"><input type="email" name="ad_mail" placeholder="Adresse e-mail"></div>
                                </div>

                                <button type="submit" class="btn-primary" style="margin-top: 15px;">Ajouter à la liste</button>
                            </form>
                        </div>
                    </div>
                <?php endif; ?>
            </div>

        <?php endif; ?>
    </main>

    <script>
        document.addEventListener("DOMContentLoaded", () => {
            const typeConcession = document.getElementById("type_concession");
            const divCaveau = document.getElementById("caveau-options");
            const divAd = document.getElementById("ad-section");

            function toggleDynamicFields() {
                const typeConcession = document.getElementById("type_concession");
                if (!typeConcession) return;

                const type = typeConcession.value;
                const divCaveau = document.getElementById("caveau-options");
                const divOuverture = document.getElementById("groupe-ouverture");
                const labelPlaces = document.getElementById("label-places");
                const divAd = document.getElementById("ad-section");
                const groupeStatut = document.getElementById("groupe-statut");
                const concessionOnlyEls = document.querySelectorAll(".concession-only");
                
                const isCommunal = (type === "Jardin du souvenir" || type === "Fosse commune");

                // Gestion Caveau / Case de columbarium
                if (divCaveau) {
                    if (type === "Caveau" || type === "Case de columbarium") {
                        divCaveau.style.display = "grid";
                        if (type === "Caveau") {
                            if(divOuverture) divOuverture.style.display = "flex";
                            if(labelPlaces) labelPlaces.innerText = "Nombre de places (Cercueils)";
                        } else {
                            if(divOuverture) divOuverture.style.display = "none";
                            if(labelPlaces) labelPlaces.innerText = "Nombre de places (Urnes)";
                        }
                    } else {
                        divCaveau.style.display = "none";
                    }
                }

                // Masquer les champs inutiles pour les espaces communs (statut, concessionnaire, etc)
                if (groupeStatut) groupeStatut.style.display = isCommunal ? "none" : "flex";
                concessionOnlyEls.forEach(el => el.style.display = isCommunal ? "none" : "flex");

                // Masquer les ayants droit
                if (divAd) {
                    divAd.style.display = isCommunal ? "none" : "block";
                }
            }
        });
    </script>

<script>
        // Logique des onglets : On déclare currentTypeFilter dans le scope global
        let currentTypeFilter = 'Caveau'; // Par défaut au chargement

        function openTab(tabId, typeConcession) {
            // Gestion des boutons actifs
            document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active'));
            if (event && event.target) {
                event.target.classList.add('active');
            }

            // Récupération du bouton d'ajout
            const btnAdd = document.getElementById('btn-add-concession');

            // Afficher ou masquer les filtres Allée et Emplacement
            const alleeFilter = document.getElementById('alleeFilter');
            const tombeFilter = document.getElementById('tombeFilter');
            
            if (alleeFilter && tombeFilter) {
                if (tabId === 'tab-caveaux') {
                    alleeFilter.style.display = ''; // Affiche
                    tombeFilter.style.display = ''; // Affiche
                } else {
                    alleeFilter.style.display = 'none'; // Masque
                    tombeFilter.style.display = 'none'; // Masque
                }
            }

            // Gestion de l'affichage Fosse commune vs Autres
            if (tabId === 'tab-fosse') {
                document.getElementById('concessions-wrapper').classList.remove('active');
                document.getElementById('tab-fosse').classList.add('active');
                
                // Masquer le bouton d'ajout de concession sur l'onglet Fosse
                if (btnAdd) btnAdd.style.display = 'none'; 
            } else {
                document.getElementById('tab-fosse').classList.remove('active');
                document.getElementById('concessions-wrapper').classList.add('active');
                
                // Réafficher le bouton sur les autres onglets
                if (btnAdd) btnAdd.style.display = 'inline-block'; 
                
                // On met à jour le filtre dynamique pour le tableau principal
                currentTypeFilter = typeConcession;
                if (typeof window.applyFullFilter === 'function') {
                    window.applyFullFilter(); 
                }
            }
        }

        document.addEventListener("DOMContentLoaded", () => {
            const table = document.getElementById("concessionsTable");
            const alleeSelect = document.getElementById("alleeFilter");
            const tombeSelect = document.getElementById("tombeFilter");
            const searchInput = document.getElementById("searchInput");
            const resetButton = document.getElementById("resetFilters");

            if (!table || !alleeSelect || !tombeSelect || !searchInput || !resetButton) {
                return;
            }

            const rows = Array.from(table.querySelectorAll("tbody tr"));
            const allees = new Set();
            const mapping = {};

            function normalizeText(value) {
                return String(value || "").trim().toUpperCase();
            }

            function getEmplacementFromRow(row) {
                if (!row || !row.cells || !row.cells[0]) {
                    return "";
                }
                return normalizeText(row.cells[0].innerText);
            }

            function getAlleeFromEmplacement(emplacement) {
                const match = normalizeText(emplacement).match(/^([A-Z]+)([0-9]+[A-Z]*)$/);
                if (!match) {
                    return "";
                }
                return match[1];
            }

            function naturalSort(a, b) {
                return String(a).localeCompare(String(b), "fr", {
                    numeric: true,
                    sensitivity: "base"
                });
            }

            function resetTombeSelect() {
                tombeSelect.innerHTML = "";
                const option = document.createElement("option");
                option.value = "";
                option.textContent = "Tous les emplacements";
                tombeSelect.appendChild(option);
            }

            rows.forEach(row => {
                const emplacement = getEmplacementFromRow(row);
                const allee = getAlleeFromEmplacement(emplacement);

                if (!emplacement || !allee) {
                    return;
                }

                if (!mapping[allee]) {
                    mapping[allee] = new Set();
                }

                mapping[allee].add(emplacement);
                allees.add(allee);
            });

            [...allees].sort(naturalSort).forEach(allee => {
                const option = document.createElement("option");
                option.value = allee;
                option.textContent = "Allée " + allee;
                alleeSelect.appendChild(option);
            });

            function updateTombeSelect() {
                const selectedAllee = normalizeText(alleeSelect.value);
                resetTombeSelect();

                if (!selectedAllee || !mapping[selectedAllee]) {
                    return;
                }

                [...mapping[selectedAllee]].sort(naturalSort).forEach(emplacement => {
                    const option = document.createElement("option");
                    option.value = emplacement;
                    option.textContent = emplacement;
                    tombeSelect.appendChild(option);
                });
            }

            window.applyFullFilter = function() {
                const texteRecherche = normalizeText(searchInput.value);
                const selectedAllee = normalizeText(alleeSelect.value);
                const selectedTombe = normalizeText(tombeSelect.value);

                rows.forEach(row => {
                    const emplacement = getEmplacementFromRow(row);
                    const allee = getAlleeFromEmplacement(emplacement);
                    const contenuLigne = normalizeText(row.innerText);
                    
                    // On normalise le type pour ignorer la casse et les majuscules
                    const typeLigne = normalizeText(row.getAttribute('data-type')); 
                    const typeFiltre = normalizeText(currentTypeFilter);

                    const matchText = !texteRecherche || contenuLigne.includes(texteRecherche);
                    const matchAllee = !selectedAllee || allee === selectedAllee;
                    const matchTombe = !selectedTombe || emplacement === selectedTombe;
                    
                    // CORRECTION : Tolérance orthographique blindée
                    let matchType = false;
                    if (typeFiltre === 'CASE DE COLUMBARIUM') {
                        // Accepte toutes les variantes possibles issues de la base
                        if (typeLigne === 'CASE DE COLUMBARIUM' || typeLigne === 'COLUMBARIUM' || typeLigne === 'COLOMBARIUM') {
                            matchType = true;
                        }
                    } else {
                        matchType = (typeLigne === typeFiltre);
                    }

                    row.style.display = (matchText && matchAllee && matchTombe && matchType) ? "" : "none";
                });
            };

            alleeSelect.addEventListener("change", () => {
                updateTombeSelect();
                window.applyFullFilter();
            });

            tombeSelect.addEventListener("change", window.applyFullFilter);
            searchInput.addEventListener("input", window.applyFullFilter);

            resetButton.addEventListener("click", () => {
                searchInput.value = "";
                alleeSelect.value = "";
                resetTombeSelect();
                
                // On réapplique le filtre complet pour ne pas afficher les autres types d'onglets
                window.applyFullFilter();
            });

            // Exécution immédiate au chargement
            window.applyFullFilter();
        });
    </script>


</body>
</html>
