<?php
/**
 * Helper para Notificações/Broadcast
 * 
 * Funções auxiliares para gerenciar notificações
 */

// Garantir que a conexão do banco está disponível
if (!isset($pdo)) {
    require_once __DIR__ . '/../config/config_db.php';
}

require_once __DIR__ . '/auth_helper.php';

/**
 * Busca notificações não lidas pelo usuário
 * 
 * @param int $usuario_id ID do usuário
 * @return array
 */
function buscar_notificacoes_nao_lidas($usuario_id) {
    global $pdo;
    
    try {
        $stmt = $pdo->prepare("
            SELECT n.*
            FROM notificacoes n
            WHERE n.status = 'enviado'
            AND n.id NOT IN (
                SELECT notificacao_id 
                FROM notificacoes_lidas 
                WHERE usuario_id = ?
            )
            AND (n.agendado = 0 OR (n.agendado = 1 AND n.data_envio <= NOW()))
            ORDER BY n.created_at DESC
        ");
        $stmt->execute([$usuario_id]);
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
        error_log("Erro ao buscar notificações: " . $e->getMessage());
        return [];
    }
}

/**
 * Marca uma notificação como lida
 * 
 * @param int $notificacao_id ID da notificação
 * @param int $usuario_id ID do usuário
 * @return bool
 */
function marcar_notificacao_lida($notificacao_id, $usuario_id) {
    global $pdo;
    
    try {
        $stmt = $pdo->prepare("
            INSERT INTO notificacoes_lidas (notificacao_id, usuario_id, lida_em)
            VALUES (?, ?, NOW())
            ON DUPLICATE KEY UPDATE lida_em = NOW()
        ");
        $stmt->execute([$notificacao_id, $usuario_id]);
        return true;
    } catch (PDOException $e) {
        error_log("Erro ao marcar notificação como lida: " . $e->getMessage());
        return false;
    }
}

