<?php
// ============================================
// SEN RDV SANTÉ+ — Liste des hôpitaux
// GET /api/hopitaux/liste.php
// GET /api/hopitaux/liste.php?ville_id=1
// GET /api/hopitaux/liste.php?type=public
// GET /api/hopitaux/liste.php?recherche=fann
// ============================================

require_once '../config/database.php';
require_once '../config/helpers.php';

if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
    repondre(['erreur' => 'Méthode non autorisée'], 405);
}

$db = getDB();

// LEFT JOIN pour ne pas exclure les hôpitaux sans ville_id
// COALESCE : si ville/région vient du JOIN → ok, sinon fallback sur colonnes texte
$sql = "
    SELECT h.id, h.nom, h.adresse, h.telephone, h.email, h.type,
           h.latitude, h.longitude,
           COALESCE(v.nom,  h.ville)  AS ville,
           COALESCE(r.nom,  h.region) AS region,
           COUNT(DISTINCT s.id) AS nb_services
    FROM hopitaux h
    LEFT JOIN villes  v ON v.id = h.ville_id
    LEFT JOIN regions r ON r.id = v.region_id
    LEFT JOIN services s ON s.hopital_id = h.id AND s.actif = 1
    WHERE h.actif = 1
";

$params = [];

if (!empty($_GET['ville_id'])) {
    $sql .= " AND h.ville_id = ?";
    $params[] = $_GET['ville_id'];
}

if (!empty($_GET['type'])) {
    $sql .= " AND h.type = ?";
    $params[] = $_GET['type'];
}

if (!empty($_GET['recherche'])) {
    $sql .= " AND (h.nom LIKE ? OR h.ville LIKE ? OR h.region LIKE ?)";
    $params[] = '%' . $_GET['recherche'] . '%';
    $params[] = '%' . $_GET['recherche'] . '%';
    $params[] = '%' . $_GET['recherche'] . '%';
}

$sql .= " GROUP BY h.id ORDER BY h.nom ASC";

$stmt = $db->prepare($sql);
$stmt->execute($params);

repondre([
    'succes'   => true,
    'total'    => $stmt->rowCount(),
    'hopitaux' => $stmt->fetchAll(PDO::FETCH_ASSOC)
]);