<?php
/**
 * Selflix Vagas - Processa Decisão da Empresa (Aceitar/Recusar Reagendamento)
 */
header('Content-Type: application/json');
if (session_status() == PHP_SESSION_NONE) { session_start(); }

require_once dirname(__DIR__) . '/conexao.php';

// Validação de Segurança
if (!isset($_SESSION['id']) || $_SESSION['role'] !== 'Empresas') {
    echo json_encode(['success' => false, 'message' => 'Sessão expirada ou acesso negado.']);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['success' => false, 'message' => 'Método inválido.']);
    exit;
}

$agendamento_id = filter_input(INPUT_POST, 'agendamento_id', FILTER_VALIDATE_INT);
$acao = $_POST['acao'] ?? ''; // 'confirmar' ou 'recusar'

if (!$agendamento_id || !in_array($acao, ['confirmar', 'recusar'])) {
    echo json_encode(['success' => false, 'message' => 'Dados incompletos.']);
    exit;
}

try {
    // 1. Verificar se este agendamento pertence a uma vaga desta empresa
    // (Segurança adicional para evitar que uma empresa altere agendamentos de outra)
    $sqlCheck = "SELECT a.id 
                 FROM Agendamentos a
                 LEFT JOIN anuncio_pago ap ON (a.vaga_id = ap.id AND a.tipo_anuncio IN ('pago', 'paga'))
                 LEFT JOIN anuncio_gratuito ag ON (a.vaga_id = ag.id AND a.tipo_anuncio IN ('gratuito', 'gratuita'))
                 WHERE a.id = :id 
                 AND (ap.empresa_id = :emp1 OR ag.id_empresa = :emp2)";
    
    $stmtCheck = $pdo->prepare($sqlCheck);
    $stmtCheck->execute([
        ':id'   => $agendamento_id,
        ':emp1' => $_SESSION['id'],
        ':emp2' => $_SESSION['id']
    ]);

    if (!$stmtCheck->fetch()) {
        echo json_encode(['success' => false, 'message' => 'Agendamento não encontrado ou sem permissão.']);
        exit;
    }

    // 2. Definir o novo status e limpar mensagens de reagendamento se necessário
    if ($acao === 'confirmar') {
        $novoStatus = 'Confirmado';
        $msgSucesso = 'Reagendamento aceito e confirmado com sucesso!';
    } else {
        $novoStatus = 'Cancelado';
        $msgSucesso = 'O pedido de reagendamento foi recusado e a entrevista cancelada.';
    }

    // 3. Atualizar o banco de dados
    $sqlUpd = "UPDATE Agendamentos 
               SET status = :status, 
                   motivo_reagendamento = NULL 
               WHERE id = :id";
    
    $stmtUpd = $pdo->prepare($sqlUpd);
    $stmtUpd->execute([
        ':status' => $novoStatus,
        ':id'     => $agendamento_id
    ]);

    echo json_encode(['success' => true, 'message' => $msgSucesso]);

} catch (PDOException $e) {
    echo json_encode(['success' => false, 'message' => 'Erro interno: ' . $e->getMessage()]);
}