<?php
// editar-anuncio-pago.php

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
require_once 'conexao.php'; // Fornece $pdo
require_once 'env.php';

error_reporting(E_ALL); // Manter para desenvolvimento
ini_set('display_errors', 1); // Manter para desenvolvimento

if (!isset($_SESSION['id'], $_SESSION['role'])) {
    $_SESSION['mensagem_login'] = "Acesso restrito. Faça login para continuar.";
    header("Location: login.php");
    exit();
}

// Gerar token CSRF
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

$id_anuncio_editar = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);

if (!$id_anuncio_editar) {
    $_SESSION['mensagem_listar_anuncios'] = "ID do anúncio não fornecido ou inválido.";
    $_SESSION['tipo_mensagem_listar_anuncios'] = "danger";
    header("Location: listar-anuncios-pago.php");
    exit();
}

$id_usuario_sessao = $_SESSION['id'];
$role_sessao = $_SESSION['role'] ?? '';
$is_admin_sessao = ($role_sessao === 'Administrador' || $role_sessao === 'Administradores');

$anuncio_data = null;
$mensagem_pagina = $_SESSION['mensagem_edit_anuncio_pago'] ?? null;
$tipo_mensagem_pagina = $_SESSION['tipo_mensagem_edit_anuncio_pago'] ?? null;
unset($_SESSION['mensagem_edit_anuncio_pago'], $_SESSION['tipo_mensagem_edit_anuncio_pago']);

if (!$pdo) {
    error_log("Falha ao editar anúncio pago: conexão PDO não disponível.");
    die("Erro crítico de sistema (DB). Não é possível editar o anúncio.");
}

try {
    $sql_select = "SELECT ap.*, e.logotipo as logotipo_empresa 
                   FROM anuncio_pago ap 
                   LEFT JOIN Empresas e ON ap.empresa_id = e.id 
                   WHERE ap.id = ?";
    $params_select = [$id_anuncio_editar];

    if (!$is_admin_sessao) {
        $sql_select .= " AND ap.empresa_id = ?";
        $params_select[] = $id_usuario_sessao;
    }

    $stmt_select = $pdo->prepare($sql_select);
    $stmt_select->execute($params_select);
    $anuncio_data = $stmt_select->fetch(PDO::FETCH_ASSOC);

    if (!$anuncio_data) {
        $msg_erro_anuncio = "Anúncio não encontrado ou você não tem permissão para editá-lo (ID: {$id_anuncio_editar}).";
        error_log($msg_erro_anuncio . " User ID: {$id_usuario_sessao}, Role: {$role_sessao}");
        $_SESSION['mensagem_listar_anuncios'] = $msg_erro_anuncio;
        $_SESSION['tipo_mensagem_listar_anuncios'] = "warning";
        header("Location: listar-anuncios-pago.php");
        exit();
    }
    
    // Logotipo para exibição
    $logotipo_para_exibir = $anuncio_data['logotipo'];
    if (empty($logotipo_para_exibir) && !empty($anuncio_data['logotipo_empresa'])) {
        $logotipo_para_exibir = $anuncio_data['logotipo_empresa'];
    }

    if (!empty($logotipo_para_exibir) && strpos($logotipo_para_exibir, 'http') !== 0 && strpos($logotipo_para_exibir, '/') !== 0) {
        $logotipo_para_exibir = '/' . $logotipo_para_exibir;
    }

} catch (PDOException $e) {
    error_log("Erro PDO ao buscar anúncio pago para edição (ID: {$id_anuncio_editar}): " . $e->getMessage());
    $mensagem_pagina = "Erro ao carregar dados do anúncio.";
    $tipo_mensagem_pagina = "danger";
    $anuncio_data = null;
}

// Rastrear o acesso
if (isset($_SESSION['id'], $_SESSION['role'])) {
    $usuario_id_log = $_SESSION['id'];
    $role_log = $_SESSION['role'];
    $role_map_hist = ['Empresas' => 'empresa', 'Candidatos' => 'candidato', 'Administradores' => 'admin', 'Administrador' => 'admin'];
    $tipo_usuario_log = $role_map_hist[$role_log] ?? 'desconhecido';
    $pagina_acessada_log = $_SERVER['REQUEST_URI'];
    
    try {
        $stmt_hist = $pdo->prepare("INSERT INTO historico_acessos (usuario_id, tipo_usuario, pagina_acessada, data_acesso) VALUES (?, ?, ?, NOW())");
        $stmt_hist->execute([$usuario_id_log, $tipo_usuario_log, $pagina_acessada_log]);
    } catch (PDOException $e_log) {
        error_log("Erro ao registrar histórico de acesso em editar-anuncio-pago.php: " . $e_log->getMessage());
    }
}

// Repopulação de formulário
$form_data_repop = $_SESSION['form_data_edit_anuncio_pago'] ?? [];
$form_errors_repop = $_SESSION['form_errors_edit_anuncio_pago'] ?? [];
unset($_SESSION['form_data_edit_anuncio_pago'], $_SESSION['form_errors_edit_anuncio_pago']);

function get_edit_anuncio_pago_value($field_name, $db_value = '') {
    global $form_data_repop;
    // Retorna o valor do POST se existir, caso contrário, o valor do banco de dados
    return htmlspecialchars($form_data_repop[$field_name] ?? $db_value);
}

function display_edit_anuncio_pago_error($field_name) {
    global $form_errors_repop;
    if (!empty($form_errors_repop[$field_name])) {
        echo '<div class="invalid-feedback d-block" style="color: red; font-size: 0.875em;">' . htmlspecialchars($form_errors_repop[$field_name]) . '</div>';
    }
}

// Verifica se a opção "A Combinar" estava marcada
$is_a_combinar_checked = (isset($anuncio_data['salario_a_combinar']) && $anuncio_data['salario_a_combinar'] == 1) || (isset($form_data_repop['salario_a_combinar_check']));
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Editar Anúncio Pago - Selflix Vagas</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <style>
        /* Seus estilos CSS (mantidos do original) */
        body { background-color: #f2f2f2; padding: 30px; font-family: Arial, sans-serif; }
        .form-container { background: white; padding: 30px; border-radius: 10px; max-width: 700px; margin: auto; box-shadow: 0 0 12px rgba(0, 0, 0, 0.1); }
        h2 { color: #1a73e8; text-align: center; margin-bottom: 30px; }
        .form-label { font-weight: bold; color: #333; }
        .btn-custom { background-color: #1a73e8; color: white; font-weight: bold; }
        .btn-custom:hover { background-color: #0f5dc5; }
        .back-link { display: block; margin-top: 20px; text-align: center; font-weight: bold; color: #1a73e8; text-decoration: none; }
        .back-link:hover { text-decoration: underline; }
        .form-textarea { resize: vertical; }
        .current-logo { margin-bottom: 10px; text-align: center; }
        .current-logo img { max-height: 100px; max-width: 200px; border: 1px solid #ddd; padding: 5px; border-radius: 5px; }
        .invalid-feedback.d-block { display: block !important; }
    </style>
</head>
<body>

    <div class="form-container">
        <h2>Editar Anúncio Pago</h2>

        <?php if ($mensagem_pagina): ?>
            <div class="alert alert-<?php echo htmlspecialchars($tipo_mensagem_pagina === 'success' ? 'success' : 'danger'); ?> alert-dismissible fade show" role="alert">
                <?php echo htmlspecialchars($mensagem_pagina); ?>
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Fechar"></button>
            </div>
        <?php endif; ?>
         <?php if (isset($form_errors_repop['geral'])): ?>
            <div class="alert alert-danger"><?php echo htmlspecialchars($form_errors_repop['geral']); ?></div>
        <?php endif; ?>

        <?php if ($anuncio_data): ?>
        
        <?php if ($is_admin_sessao): ?>
            <div class="alert alert-warning d-flex justify-content-between align-items-center mb-4 border border-warning">
                <div>
                    <i class="fas fa-exclamation-circle"></i> <strong>Admin:</strong> Deseja rebaixar este anúncio para <b>GRATUITO</b>?
                </div>
                <form action="/adm/admin_alternar_tipo.php" method="POST" class="m-0">
                    <input type="hidden" name="id_anuncio" value="<?= htmlspecialchars($anuncio_data['id']); ?>">
                    <input type="hidden" name="tipo_atual" value="pago">
                    <input type="hidden" name="empresa_id_retorno" value="<?= htmlspecialchars($anuncio_data['empresa_id']); ?>">
                    
                    <button type="submit" class="btn btn-sm btn-warning fw-bold text-dark" onclick="return confirm('Atenção: O anúncio será movido para a tabela de GRATUITOS. Confirmar?');">
                        <i class="fas fa-arrow-down"></i> Tornar Gratuito
                    </button>
                </form>
            </div>
        <?php endif; ?>
        <form method="POST" action="processar_editar_anuncio_pago.php" enctype="multipart/form-data">
            <input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token']); ?>">
            <input type="hidden" name="id" value="<?= htmlspecialchars($anuncio_data['id']); ?>">
            <input type="hidden" name="logotipo_existente" value="<?= htmlspecialchars($anuncio_data['logotipo'] ?? ''); ?>">


            <div class="mb-3">
                <label for="titulo_vaga" class="form-label">Título da Vaga: *</label>
                <input type="text" class="form-control" id="titulo_vaga" name="titulo_vaga" value="<?= get_edit_anuncio_pago_value('titulo_vaga', $anuncio_data['titulo_vaga'] ?? ''); ?>" required>
                <?php display_edit_anuncio_pago_error('titulo_vaga'); ?>
            </div>

            <div class="mb-3">
                <label for="email_para_curriculo" class="form-label">E-mail para currículo: *</label>
                <input type="email" class="form-control" id="email_para_curriculo" name="email_para_curriculo" value="<?= get_edit_anuncio_pago_value('email_para_curriculo', $anuncio_data['email_para_curriculo'] ?? ''); ?>" required>
                 <?php display_edit_anuncio_pago_error('email_para_curriculo'); ?>
            </div>

            <div class="mb-3">
                <label for="link_pagina_curriculo" class="form-label">Link para página de currículo (opcional):</label>
                <input type="url" class="form-control" id="link_pagina_curriculo" name="link_pagina_curriculo" value="<?= get_edit_anuncio_pago_value('link_pagina_curriculo', $anuncio_data['link_pagina_curriculo'] ?? ''); ?>" placeholder="https://...">
                 <?php display_edit_anuncio_pago_error('link_pagina_curriculo'); ?>
            </div>

            <div class="mb-3">
                <label for="descricao_vaga" class="form-label">Descrição da Vaga: *</label>
                <textarea class="form-control form-textarea" id="descricao_vaga" name="descricao_vaga" rows="5" required><?= get_edit_anuncio_pago_value('descricao_vaga', $anuncio_data['descricao_vaga'] ?? ''); ?></textarea>
                 <?php display_edit_anuncio_pago_error('descricao_vaga'); ?>
            </div>

            <div class="mb-3">
                <label for="cidade_vaga" class="form-label">Cidade da Vaga: *</label>
                <input type="text" class="form-control" id="cidade_vaga" name="cidade_vaga" value="<?= get_edit_anuncio_pago_value('cidade_vaga', $anuncio_data['cidade_vaga'] ?? ''); ?>" required>
                 <?php display_edit_anuncio_pago_error('cidade_vaga'); ?>
            </div>
             <div class="mb-3">
                <label for="telefone_vaga" class="form-label">Telefone para contato (opcional):</label>
                <input type="text" class="form-control" id="telefone_vaga" name="telefone_vaga" value="<?= get_edit_anuncio_pago_value('telefone_vaga', $anuncio_data['telefone_vaga'] ?? ''); ?>" placeholder="(00) 0000-0000">
                 <?php display_edit_anuncio_pago_error('telefone_vaga'); ?>
            </div>
             <div class="mb-3">
                <label for="celular_vaga" class="form-label">Celular para contato (opcional):</label>
                <input type="text" class="form-control" id="celular_vaga" name="celular_vaga" value="<?= get_edit_anuncio_pago_value('celular_vaga', $anuncio_data['celular_vaga'] ?? ''); ?>" placeholder="(00) 00000-0000">
                 <?php display_edit_anuncio_pago_error('celular_vaga'); ?>
            </div>


            <div class="mb-3">
                <label for="segmento_vaga" class="form-label">Segmento: *</label>
                <select class="form-select" id="segmento_vaga" name="segmento_vaga" required>
                    <?php
                    $segmentos_edit = ["TI", "Marketing", "Financeiro", "Administração", "Engenharia", "Saúde", "Vendas", "Jurídico", "Outro"];
                    $segmento_sel_edit = get_edit_anuncio_pago_value('segmento_vaga', $anuncio_data['segmento_vaga'] ?? '');
                    foreach ($segmentos_edit as $seg) {
                        echo "<option value=\"" . htmlspecialchars($seg) . "\" " . ($segmento_sel_edit == $seg ? 'selected' : '') . ">" . htmlspecialchars($seg) . "</option>";
                    }
                    ?>
                </select>
                 <?php display_edit_anuncio_pago_error('segmento_vaga'); ?>
            </div>

            <div class="mb-3">
                <label for="estado" class="form-label">Estado: *</label>
                <select class="form-select" id="estado" name="estado" required>
                     <?php
                    $estados_br_edit_anuncio = ["AC","AL","AP","AM","BA","CE","DF","ES","GO","MA","MT","MS","MG","PA","PB","PR","PE","PI","RJ","RN","RS","RO","RR","SC","SP","SE","TO"];
                    $estado_sel_edit_anuncio = get_edit_anuncio_pago_value('estado', $anuncio_data['estado'] ?? '');
                    foreach ($estados_br_edit_anuncio as $sigla) {
                        echo "<option value=\"$sigla\" " . ($estado_sel_edit_anuncio == $sigla ? "selected" : "") . ">$sigla</option>";
                    }
                    ?>
                </select>
                <?php display_edit_anuncio_pago_error('estado'); ?>
            </div>

            <div class="mb-3">
                <label for="tipo_vaga" class="form-label">Tipo de Contrato (CLT, PJ, etc.): *</label> 
                <select class="form-select" id="tipo_vaga" name="tipo_vaga" required>
                     <?php
                    $tipos_contrato = ["CLT", "PJ", "Temporário", "Estágio", "Freelancer", "Outro"];
                    $tipo_vaga_sel = get_edit_anuncio_pago_value('tipo_vaga', $anuncio_data['tipo_vaga'] ?? '');
                    foreach ($tipos_contrato as $tc) {
                        echo "<option value=\"" . htmlspecialchars($tc) . "\" " . ($tipo_vaga_sel == $tc ? 'selected' : '') . ">" . htmlspecialchars($tc) . "</option>";
                    }
                    ?>
                </select>
                 <?php display_edit_anuncio_pago_error('tipo_vaga'); ?>
            </div>
             <div class="mb-3">
                <label for="modelo_contratacao" class="form-label">Modelo de Trabalho (Presencial, Remoto, etc.): *</label>
                <select class="form-select" id="modelo_contratacao" name="modelo_contratacao" required>
                     <?php
                    $modelos_trabalho = ["Presencial", "Remoto", "Híbrido"];
                    $modelo_sel = get_edit_anuncio_pago_value('modelo_contratacao', $anuncio_data['modelo_contratacao'] ?? '');
                    foreach ($modelos_trabalho as $mt) {
                        echo "<option value=\"" . htmlspecialchars($mt) . "\" " . ($modelo_sel == $mt ? 'selected' : '') . ">" . htmlspecialchars($mt) . "</option>";
                    }
                    ?>
                </select>
                 <?php display_edit_anuncio_pago_error('modelo_contratacao'); ?>
            </div>


            <div class="mb-3">
                <label for="link_video_vaga" class="form-label">Link do Vídeo da Vaga (opcional):</label>
                <input type="url" class="form-control" id="link_video_vaga" name="link_video_vaga" value="<?= get_edit_anuncio_pago_value('link_video_vaga', $anuncio_data['link_video_vaga'] ?? ''); ?>" placeholder="https://youtube.com/...">
                <?php display_edit_anuncio_pago_error('link_video_vaga'); ?>
            </div>

            <div class="mb-3">
                <label for="requisitos_contratacao" class="form-label">Requisitos de Contratação: *</label>
                <textarea class="form-control form-textarea" id="requisitos_contratacao" name="requisitos_contratacao" rows="4" required><?= get_edit_anuncio_pago_value('requisitos_contratacao', $anuncio_data['requisitos_contratacao'] ?? ''); ?></textarea>
                <?php display_edit_anuncio_pago_error('requisitos_contratacao'); ?>
            </div>

            <div class="mb-3 form-check">
                <input type="checkbox" class="form-check-input" id="salario_a_combinar_check" name="salario_a_combinar_check" value="1" <?= $is_a_combinar_checked ? 'checked' : ''; ?>>
                <label class="form-check-label" for="salario_a_combinar_check">Salário a Combinar</label>
            </div>
            <div class="mb-3">
                <label for="salario" class="form-label">Salário (Ex: R$ 3.000,00):</label>
                <input type="text" class="form-control" id="salario" name="salario" value="<?= !$is_a_combinar_checked ? get_edit_anuncio_pago_value('salario', $anuncio_data['salario'] ?? '') : ''; ?>" required>
                <?php display_edit_anuncio_pago_error('salario'); ?>
            </div>
            <div class="mb-3">
                <label for="logotipo_novo" class="form-label">Alterar Logotipo do Anúncio (opcional):</label>
                <?php if (!empty($logotipo_para_exibir)): ?>
                <div class="current-logo">
                    <p>Logotipo atual:</p>
                    <img src="<?= htmlspecialchars($logotipo_para_exibir); ?>" alt="Logotipo atual" onerror="this.style.display='none'; this.parentElement.querySelector('p').innerText = 'Logotipo atual não pôde ser carregado.'">
                </div>
                <?php else: ?>
                <p class="text-muted">Nenhum logotipo associado a este anúncio ou à empresa.</p>
                <?php endif; ?>
                <input type="file" class="form-control" id="logotipo_novo" name="logotipo_novo" accept="image/png, image/jpeg, image/gif, image/bmp">
                <small class="form-text text-muted">Envie um novo arquivo para alterar o logotipo específico deste anúncio. Se deixado em branco, o logotipo atual (se houver) ou o da empresa será mantido/usado.</small>
                <?php display_edit_anuncio_pago_error('logotipo_novo'); ?>
            </div>

            <div class="d-grid gap-2">
                <button type="submit" class="btn btn-custom">Salvar Alterações</button>
            </div>
        </form>

        <a class="back-link" href="listar-anuncios-pago.php">← Voltar para a Lista de Anúncios</a>
        <?php else: ?>
            <div class="alert alert-danger">Não foi possível carregar os dados do anúncio para edição.</div>
            <a href="listar-anuncios-pago.php" class="back-link">← Voltar para a Lista de Anúncios</a>
        <?php endif; ?>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const salarioInput = document.getElementById('salario');
            const aCombinarCheck = document.getElementById('salario_a_combinar_check');

            function formatarSalario(valor) {
                // Remove tudo que não é número e a vírgula
                let v = valor.replace(/\D/g, '');
                v = v.replace(/(\d{1,2})$/, ',$1'); // Adiciona a vírgula para os centavos
                v = v.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.'); // Adiciona o ponto para os milhares
                v = 'R$ ' + v;
                return v;
            }

            function toggleSalarioInput() {
                if (aCombinarCheck.checked) {
                    salarioInput.disabled = true;
                    salarioInput.value = '';
                    salarioInput.removeAttribute('required');
                } else {
                    salarioInput.disabled = false;
                    salarioInput.setAttribute('required', 'required');
                }
            }

            // Formata o valor do salário ao carregar a página
            if (salarioInput.value.length > 0) {
                const valorFormatadoInicial = formatarSalario(salarioInput.value);
                salarioInput.value = valorFormatadoInicial;
            }

            salarioInput.addEventListener('input', function(e) {
                let valor = e.target.value;
                e.target.value = formatarSalario(valor);
            });

            aCombinarCheck.addEventListener('change', toggleSalarioInput);
            
            // Chama a função para definir o estado inicial do campo
            toggleSalarioInput();
        });
    </script>
</body>
</html>