<?php
session_start();
header('Content-Type: application/json'); // Garante que o JS entenda a resposta

require_once dirname(__DIR__) . '/conexao.php';
require_once dirname(__DIR__) . '/env.php';
require_once dirname(__DIR__) . '/include/email-anuncio-pago.php'; 

if (!isset($_SESSION['id']) || ($_SESSION['role'] ?? '') !== 'Candidatos') {
    echo json_encode(['success' => false, 'message' => 'Sessão expirada ou acesso negado.']);
    exit;
}

$agendamento_id = $_POST['agendamento_id'] ?? null;
$acao           = $_POST['acao'] ?? ''; 
$motivo         = $_POST['motivo'] ?? 'Não informado';
$nova_data      = $_POST['nova_data'] ?? null;
$candidato_id   = $_SESSION['id'];

if (!$agendamento_id) {
    echo json_encode(['success' => false, 'message' => 'ID do agendamento não informado.']);
    exit;
}

try {
    // 1. Busca dados para o e-mail e valida se o agendamento pertence ao candidato
    $sql = "SELECT c.nome as nome_candidato, e.email as email_empresa, e.nome_empresa, 
                   age.data_hora_entrevista,
                   COALESCE(ap.titulo_vaga, ag.titulo_vaga) as titulo_vaga
            FROM Agendamentos age
            JOIN Candidatos c ON age.candidato_id = c.id
            LEFT JOIN anuncio_pago ap ON age.vaga_id = ap.id
            LEFT JOIN anuncio_gratuito ag ON age.vaga_id = ag.id
            JOIN Empresas e ON (COALESCE(ap.empresa_id, ag.empresa_id) = e.id)
            WHERE age.id = ? AND age.candidato_id = ?";
            
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$agendamento_id, $candidato_id]);
    $info = $stmt->fetch();

    if (!$info) {
        throw new Exception("Agendamento não localizado.");
    }

    $data_f = date('d/m/Y H:i', strtotime($info['data_hora_entrevista']));

    if ($acao === 'confirmar') {
        // Atualiza status e limpa qualquer motivo anterior
        $update = $pdo->prepare("UPDATE Agendamentos SET status = 'Aceito' WHERE id = ?");
        $update->execute([$agendamento_id]);
        
        $msg_sucesso = "Sua presença foi confirmada com sucesso!";
        $assunto = "Entrevista Confirmada - " . $info['nome_candidato'];
        $corpo = "O candidato <b>{$info['nome_candidato']}</b> confirmou a presença para a vaga <b>{$info['titulo_vaga']}</b> em {$data_f}.";

    } elseif ($acao === 'reagendar') {
        if (!$nova_data) throw new Exception("Informe a nova data sugerida.");

        // Usa a nova coluna que criamos para o balão de conversa
        $update = $pdo->prepare("UPDATE Agendamentos SET status = 'Reagendamento Solicitado', motivo_reagendamento = ? WHERE id = ?");
        $update->execute([$motivo, $agendamento_id]);
        
        $msg_sucesso = "Solicitação de reagendamento enviada!";
        $assunto = "Solicitação de Reagendamento - " . $info['nome_candidato'];
        $corpo = "O candidato solicitou novo horário para <b>{$info['titulo_vaga']}</b>.<br>Sugestão: ".date('d/m/Y H:i', strtotime($nova_data))."<br>Motivo: {$motivo}";

    } else {
        // Em vez de deletar, marcamos como cancelado para manter a justificativa no balão
        $update = $pdo->prepare("UPDATE Agendamentos SET status = 'Cancelado', justificativa_cancelamento = ? WHERE id = ?");
        $update->execute([$motivo, $agendamento_id]);
        
        $msg_sucesso = "Candidatura cancelada com sucesso.";
        $assunto = "Candidato Desistiu da Entrevista - " . $info['nome_candidato'];
        $corpo = "O candidato cancelou o agendamento para a vaga <b>{$info['titulo_vaga']}</b> marcada para {$data_f}.<br>Motivo: {$motivo}";
    }

    // Notificação por E-mail (Otimizada)
    $mail = configurarMailerParaAnuncioPago();
    if ($mail) {
        $mail->addAddress($info['email_empresa'], $info['nome_empresa']);
        $mail->Subject = $assunto;
        $mail->isHTML(true);
        $mail->CharSet = 'UTF-8';
        $mail->Body = "<h2>Notificação Selflix Vagas</h2><p>{$corpo}</p>";
        $mail->send();
    }

    // RESPOSTA FINAL EM JSON (Obrigatório para o Modal)
    echo json_encode(['success' => true, 'message' => $msg_sucesso]);

} catch (Exception $e) {
    echo json_encode(['success' => false, 'message' => $e->getMessage()]);
}