<?php
// adm/admin_alternar_tipo.php

// --- 1. ATIVAR EXIBIÇÃO DE ERROS (Para debug) ---
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

// --- 2. INCLUDES CORRIGIDOS (Usando ../ para voltar para a raiz) ---

// Tenta encontrar o middleware na pasta anterior (raiz)
if (file_exists('../middleware-auth.php')) {
    require_once '../middleware-auth.php'; 
} elseif (file_exists('middleware-auth.php')) {
    require_once 'middleware-auth.php';
} else {
    die("Erro Crítico: O arquivo 'middleware-auth.php' não foi encontrado.");
}

authAdministrador();

// Incluindo env.php
if (file_exists('../env.php')) {
    require_once '../env.php';
} elseif (file_exists('env.php')) {
    require_once 'env.php';
}

// Incluindo conexao.php
if (file_exists('../conexao.php')) {
    require_once '../conexao.php';
} elseif (file_exists('conexao.php')) {
    require_once 'conexao.php';
} else {
    die("Erro Crítico: O arquivo 'conexao.php' não foi encontrado.");
}

// --- 3. LÓGICA DE MIGRAÇÃO ---
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Validação básica dos dados recebidos
    $id_anuncio = filter_input(INPUT_POST, 'id_anuncio', FILTER_VALIDATE_INT);
    $tipo_atual = $_POST['tipo_atual'] ?? ''; 
    $empresa_id_retorno = filter_input(INPUT_POST, 'empresa_id_retorno', FILTER_VALIDATE_INT);

    if (!$id_anuncio || !$tipo_atual || !$empresa_id_retorno) {
        die("Erro: Dados inválidos recebidos pelo formulário. (ID: $id_anuncio)");
    }

   try {
    if (!isset($pdo)) {
        throw new Exception("Erro de Conexão: A variável \$pdo não foi carregada.");
    }

    $pdo->beginTransaction();

    if ($tipo_atual === 'gratuito') {
        // --- DE GRATUITO PARA PAGO ---
        $stmt = $pdo->prepare("SELECT * FROM anuncio_gratuito WHERE id = ?");
        $stmt->execute([$id_anuncio]);
        $dados = $stmt->fetch(PDO::FETCH_ASSOC);

        if (!$dados) throw new Exception("Anúncio original não encontrado na tabela de gratuitos.");

        // CORREÇÃO: Alterado de 'cidade' para 'cidade_vaga' na tabela anuncio_pago
        $sqlInsert = "INSERT INTO anuncio_pago (
                        empresa_id, titulo_vaga, descricao_vaga, cidade_vaga, estado, requisitos_contratacao, data_criacao, status, agenda_recrutador_id
                      ) VALUES (
                        :empresa_id, :titulo, :desc, :cid, :est, :req, :data, 'ativo', NULL
                      )";
        
        $stmtInsert = $pdo->prepare($sqlInsert);
        $stmtInsert->execute([
            ':empresa_id' => $dados['id_empresa'] ?? $dados['empresa_id'], 
            ':titulo'     => $dados['titulo_vaga'],
            ':desc'       => $dados['descricao_vaga'] ?? '',
            ':cid'        => $dados['cidade_vaga'] ?? '', // Mapeia corretamente cidade_vaga -> cidade_vaga
            ':est'        => $dados['estado'] ?? '',
            ':req'        => $dados['requisitos_contratacao'] ?? '',
            ':data'       => $dados['data_criacao']
        ]);

        $pdo->prepare("DELETE FROM anuncio_gratuito WHERE id = ?")->execute([$id_anuncio]);
        $msg = "Sucesso! O anúncio foi promovido para PAGO.";

    } else {
        // --- DE PAGO PARA GRATUITO ---
        $stmt = $pdo->prepare("SELECT * FROM anuncio_pago WHERE id = ?");
        $stmt->execute([$id_anuncio]);
        $dados = $stmt->fetch(PDO::FETCH_ASSOC);

        if (!$dados) throw new Exception("Anúncio original não encontrado na tabela de pagos.");

        // Gera um slug básico para evitar links nulos na listagem pública
        $slug_base = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $dados['titulo_vaga'])));
        $novo_slug = $slug_base . '-' . $id_anuncio;

        // CORREÇÃO: Garante que os campos de cidade e descrição batam perfeitamente na volta
        $sqlInsert = "INSERT INTO anuncio_gratuito (
                        empresa_id, id_empresa, slug, titulo_vaga, descricao_vaga, cidade_vaga, estado, requisitos_contratacao, data_criacao, status
                      ) VALUES (
                        :empresa_id, :id_empresa, :slug, :titulo, :desc, :cid, :est, :req, :data, 'ativo'
                      )";
        
        $stmtInsert = $pdo->prepare($sqlInsert);
        $stmtInsert->execute([
            ':empresa_id' => $dados['empresa_id'],
            ':id_empresa' => $dados['empresa_id'],
            ':slug'       => $novo_slug,
            ':titulo'     => $dados['titulo_vaga'],
            ':desc'       => $dados['descricao_vaga'] ?? '',
            ':cid'        => $dados['cidade_vaga'] ?? '', // na tabela pago também puxa de 'cidade_vaga'
            ':est'        => $dados['estado'] ?? '',
            ':req'        => $dados['requisitos_contratacao'] ?? '',
            ':data'       => $dados['data_criacao']
        ]);

        $pdo->prepare("DELETE FROM anuncio_pago WHERE id = ?")->execute([$id_anuncio]);
        $msg = "Sucesso! O anúncio foi convertido para GRATUITO.";
    }

    $pdo->commit();
    $_SESSION['status_mensagem'] = ['texto' => $msg, 'tipo' => 'success'];

} catch (Exception $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    die("Erro ao processar migração: " . $e->getMessage());
}
    // Redireciona de volta para a lista (assumindo que listar-anuncios-empresa.php está na RAIZ)
    header("Location: ../listar-anuncios-empresa.php?id=" . $empresa_id_retorno);
    exit;

} else {
    echo "Acesso direto não permitido.";
}
?>