<?php
// perfil/excluir_perfil_candidato.php (COM LOG)

session_start();
include '../conexao.php'; 

if (!isset($_SESSION['id']) || ($_SESSION['role'] ?? '') !== 'Candidatos') {
    header("Location: ../login.php"); 
    exit();
}

$id_candidato = (int)$_SESSION['id'];

try {
    $pdo->beginTransaction();

    // 1. BUSCAR DADOS DO CANDIDATO ANTES DE EXCLUIR
    // ⚠️ Assumindo que a tabela principal é 'Candidatos' e as colunas são 'nome' e 'email'
    $stmt_fetch = $pdo->prepare("SELECT nome, email FROM Candidatos WHERE id = :id");
    $stmt_fetch->bindParam(':id', $id_candidato);
    $stmt_fetch->execute();
    $candidato_data = $stmt_fetch->fetch(PDO::FETCH_ASSOC);

    if (!$candidato_data) {
        throw new Exception("Dados do candidato não encontrados.");
    }
    
    // 2. REGISTRAR LOG DA EXCLUSÃO
    $sql_log = "INSERT INTO LogExclusoesCandidatos 
                (candidato_id, nome_candidato, email_excluido, motivo, usuario_responsavel)
                VALUES (:cand_id, :nome, :email, :motivo, :responsavel)";
    
    $stmt_log = $pdo->prepare($sql_log);
    $stmt_log->execute([
        'cand_id' => $id_candidato,
        'nome' => $candidato_data['nome'],
        'email' => $candidato_data['email'],
        'motivo' => 'Exclusão voluntária do próprio perfil.',
        'responsavel' => 'Candidato ID: ' . $id_candidato
    ]);
    
    // 3. EXCLUIR DADOS RELACIONADOS (Currículos, Agendamentos, Candidaturas)
    
    // Corrige a coluna para 'candidato_id', conforme o seu schema
    $sql_curriculos = "DELETE FROM CandidatoCurriculos WHERE candidato_id = :id";
    $stmt_curriculos = $pdo->prepare($sql_curriculos);
    $stmt_curriculos->bindParam(':id', $id_candidato);
    $stmt_curriculos->execute();

    // Exclui Agendamentos
    $sql_agendamentos = "DELETE FROM Agendamentos WHERE candidato_id = :id";
    $stmt_agendamentos = $pdo->prepare($sql_agendamentos);
    $stmt_agendamentos->bindParam(':id', $id_candidato);
    $stmt_agendamentos->execute();

    // Exclui Candidaturas (Assumindo coluna candidado_id como FK)
    $sql_candidaturas = "DELETE FROM candidaturas WHERE candidato_id = :id";
    $stmt_candidaturas = $pdo->prepare($sql_candidaturas);
    $stmt_candidaturas->bindParam(':id', $id_candidato);
    $stmt_candidaturas->execute();
    
    // 4. EXCLUIR O PERFIL PRINCIPAL
    $sql_candidato = "DELETE FROM Candidatos WHERE id = :id";
    $stmt_candidato = $pdo->prepare($sql_candidato);
    $stmt_candidato->bindParam(':id', $id_candidato);
    $stmt_candidato->execute();

    $pdo->commit();

    // 5. FINALIZAÇÃO (Sucesso)
    session_destroy();
    header("Location: ../index.php?sucesso=candidato_excluido"); 
    exit();

} catch (Exception $e) {
    if ($pdo && $pdo->inTransaction()) {
        $pdo->rollBack();
    }
    error_log('Erro fatal ao excluir perfil de candidato: ' . $e->getMessage());
    
    $_SESSION['mensagem_rollback'] = "Falha ao excluir o perfil. Erro: " . substr($e->getMessage(), 0, 100);
    $_SESSION['tipo_mensagem_rollback'] = "danger";

    header("Location: ../editar_cadastro.php?erro=falha_exclusao"); 
    exit();
}