<?php
/**
 * SEN RDV SANTÉ+ — Création RDV par le gérant
 * RDV sur place → patient_id technique
 */

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
header('Content-Type: application/json');

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

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

// ─────────────────────────────────────────────
// Auth gérant / admin hôpital
// ─────────────────────────────────────────────
$user = verifierToken();
if (!in_array($user['role'], ['gerant', 'admin_hopital'])) {
    repondre(['erreur' => 'Accès interdit'], 403);
}

// ─────────────────────────────────────────────
// Lecture / validation body
// ─────────────────────────────────────────────
$db   = getDB();
$body = getBody();

validerChamps($body, [
    'patient_nom',
    'patient_prenom',
    'service_id',
    'date_rdv',
    'heure_rdv',
    'motif',
]);

// ─────────────────────────────────────────────
// Normalisation heure (TIME)
// ─────────────────────────────────────────────
$heureRdv = strlen($body['heure_rdv']) === 5
    ? $body['heure_rdv'] . ':00'
    : $body['heure_rdv'];

// ─────────────────────────────────────────────
// INSERT RDV (ALIGNÉ TABLE rendez_vous)
// patient_id = patient sur place (ID 51)
// ─────────────────────────────────────────────
$stmt = $db->prepare("
    INSERT INTO rendez_vous (
        patient_id,
        service_id,
        patient_nom,
        patient_prenom,
        patient_age,
        motif,
        date_rdv,
        heure_rdv,
        statut,
        confirme_par,
        confirme_at
    )
    VALUES (
        ?, ?, ?, ?, ?, ?, ?, ?, 'paye', ?, NOW()
    )
");

$stmt->execute([
    PATIENT_SUR_PLACE_ID,
    (int)$body['service_id'],
    trim($body['patient_nom']),
    trim($body['patient_prenom']),
    !empty($body['patient_age']) ? (int)$body['patient_age'] : null,
    trim($body['motif']),
    $body['date_rdv'],
    $heureRdv,
    $user['utilisateur_id'],
]);

$rdvId = $db->lastInsertId();

// ─────────────────────────────────────────────
// Génération ticket QR
// ─────────────────────────────────────────────
$codeQr   = genererCodeQR();
$heureFin = date('H:i:s', strtotime($heureRdv) + 15 * 60);

$db->prepare("
    INSERT INTO tickets (
        rdv_id,
        code_qr,
        prioritaire,
        statut,
        heure_validite_debut,
        heure_validite_fin
    )
    VALUES (?, ?, 0, 'actif', ?, ?)
")->execute([
    $rdvId,
    $codeQr,
    $heureRdv,
    $heureFin
]);

// ─────────────────────────────────────────────
// Réponse finale
// ─────────────────────────────────────────────
repondre([
    'succes'  => true,
    'message' => 'RDV créé avec succès (patient sur place)',
    'rdv_id'  => $rdvId,
    'code_qr' => $codeQr
], 201);