<?php
/**
 * API para Salvar Notificação Local (Sem Firebase)
 * Salva notificação no banco para o app verificar
 */

require_once __DIR__ . '/../../config/bootstrap.php';

use ControleFrotas\Utils\Logger;

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');

// Tratar OPTIONS (CORS preflight)
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['success' => false, 'message' => 'Método não permitido']);
    exit;
}

try {
    $input = json_decode(file_get_contents('php://input'), true);
    
    $userId = $input['user_id'] ?? null;
    $userType = $input['user_type'] ?? 'motorista';
    $tipo = $input['tipo'] ?? 'geral';
    $titulo = $input['titulo'] ?? 'Nova Notificação';
    $mensagem = $input['mensagem'] ?? '';
    $solicitacaoId = $input['solicitacao_id'] ?? null;
    $viagemId = $input['viagem_id'] ?? null;
    
    if (!$userId) {
        http_response_code(400);
        echo json_encode(['success' => false, 'message' => 'ID do usuário é obrigatório']);
        exit;
    }
    
    // Salvar notificação no banco
    $sql = "INSERT INTO notificacoes_push (
        user_id, user_type, tipo, titulo, mensagem, 
        solicitacao_id, viagem_id, lida, enviada, data_envio
    ) VALUES (?, ?, ?, ?, ?, ?, ?, FALSE, TRUE, NOW())";
    
    $result = Database::execute($sql, [
        $userId,
        $userType,
        $tipo,
        $titulo,
        $mensagem,
        $solicitacaoId,
        $viagemId
    ]);
    
    if ($result) {
        $notificacaoId = Database::lastInsertId();
        
        Logger::info('Notificação local salva', [
            'notificacao_id' => $notificacaoId,
            'user_id' => $userId,
            'tipo' => $tipo,
            'titulo' => $titulo
        ]);
        
        echo json_encode([
            'success' => true,
            'message' => 'Notificação salva com sucesso',
            'data' => [
                'notificacao_id' => $notificacaoId,
                'user_id' => $userId,
                'tipo' => $tipo
            ]
        ]);
    } else {
        http_response_code(500);
        echo json_encode([
            'success' => false,
            'message' => 'Erro ao salvar notificação'
        ]);
    }
    
} catch (Exception $e) {
    Logger::error('Erro ao salvar notificação local', [
        'error' => $e->getMessage(),
        'user_id' => $userId ?? null
    ]);
    
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'message' => 'Erro interno: ' . $e->getMessage()
    ]);
}
?> 
