<?php
// ============================================
// SEN RDV SANTÉ+ — Envoi de notifications push
// j'utilise l'API Expo Push Notifications — gratuite et sans configuration serveur
// ============================================

function envoyerNotificationPush(int $userId, string $titre, string $corps, array $data = []) {
    $db = getDB();

    // je récupère le token push de l'utilisateur
    $stmt = $db->prepare("SELECT push_token FROM utilisateurs WHERE id = ? AND push_token IS NOT NULL");
    $stmt->execute([$userId]);
    $user = $stmt->fetch();

    if (!$user || empty($user['push_token'])) {
        return false; // l'utilisateur n'a pas activé les notifications
    }

    // je prépare le message pour l'API Expo
    $message = [
        'to'       => $user['push_token'],
        'title'    => $titre,
        'body'     => $corps,
        'data'     => $data,
        'sound'    => 'default',
        'priority' => 'high',
        'channelId' => 'senrdv',
    ];

    // j'envoie la notification via l'API Expo Push
    $ch = curl_init('https://exp.host/--/api/v2/push/send');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($message));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Accept: application/json',
        'Content-Type: application/json',
        'Accept-Encoding: gzip, deflate',
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);

    return json_decode($result, true);
}

// j'envoie une notification à plusieurs utilisateurs en une seule requête
function envoyerNotificationsMasse(array $userIds, string $titre, string $corps, array $data = []) {
    foreach ($userIds as $userId) {
        envoyerNotificationPush($userId, $titre, $corps, $data);
    }
}