<?php
// editar_lista_candidato.php

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

// Verifica se o usuário é administrador
if (($_SESSION['role'] ?? '') !== 'Administradores' && ($_SESSION['role'] ?? '') !== 'Administrador') { // Aceitar ambos
    // Usar die() aqui pode ser abrupto. Idealmente, redirecionar para uma página de acesso negado ou login.
    $_SESSION['mensagem_login'] = "Acesso negado! Você não tem permissão para acessar esta página.";
    header("Location: login.php");
    exit();
}

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

// Verifica se um ID foi passado via GET e é válido
$id_candidato_editar = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);

if (!$id_candidato_editar) {
    $_SESSION['mensagem_listar_candidatos'] = "Erro: ID do candidato não fornecido ou inválido.";
    $_SESSION['tipo_mensagem_listar_candidatos'] = "danger";
    header("Location: listar-candidato.php");
    exit();
}

$candidato = null;
$mensagem_pagina = $_SESSION['mensagem_edit_lista_cand'] ?? null;
$tipo_mensagem_pagina = $_SESSION['tipo_mensagem_edit_lista_cand'] ?? null;
unset($_SESSION['mensagem_edit_lista_cand'], $_SESSION['tipo_mensagem_edit_lista_cand']);

// Diretório para upload de currículos (pode vir do .env se preferir)
$upload_dir_curriculos = $_ENV['UPLOAD_DIR_CURRICULOS'] ?? 'uploads/curriculos/';
if (!is_dir($upload_dir_curriculos)) {
    if (!mkdir($upload_dir_curriculos, 0775, true) && !is_dir($upload_dir_curriculos)) { // Tenta criar se não existir
        error_log('Falha ao criar o diretório de uploads de currículos: ' . $upload_dir_curriculos);
        // Não necessariamente um erro fatal para o carregamento do formulário, mas o upload falhará.
    }
}


if (!$pdo) {
    error_log("Falha ao editar lista candidato: conexão PDO não disponível.");
    die("Erro crítico de sistema (DB).");
}

try {
    $sql = "SELECT * FROM Candidatos WHERE id = ?";
    $stmt_fetch = $pdo->prepare($sql);
    $stmt_fetch->execute([$id_candidato_editar]);
    $candidato = $stmt_fetch->fetch(PDO::FETCH_ASSOC);

    if (!$candidato) {
        $_SESSION['mensagem_listar_candidatos'] = "Erro: Candidato com ID {$id_candidato_editar} não encontrado.";
        $_SESSION['tipo_mensagem_listar_candidatos'] = "warning";
        header("Location: listar-candidato.php");
        exit();
    }
} catch (PDOException $e) {
    error_log("Erro PDO ao buscar dados do candidato (Admin Edit ID: {$id_candidato_editar}): " . $e->getMessage());
    $mensagem_pagina = "Erro ao carregar dados do candidato.";
    $tipo_mensagem_pagina = "danger";
    $candidato = 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_lista_candidato.php: " . $e_log->getMessage());
    }
}

// Repopular dados do formulário em caso de erro no processamento
$form_data_repop = $_SESSION['form_data_edit_lista_candidato'] ?? [];
$form_errors_repop = $_SESSION['form_errors_edit_lista_candidato'] ?? [];
unset($_SESSION['form_data_edit_lista_candidato'], $_SESSION['form_errors_edit_lista_candidato']);

function get_edit_lista_candidato_value($field_name, $db_value = '') {
    global $form_data_repop;
    return htmlspecialchars($form_data_repop[$field_name] ?? $db_value);
}

function display_edit_lista_candidato_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>';
    }
}
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Editar Candidato (Admin) - Selflix Vagas</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css">
    <style>
        /* Seus estilos CSS (mantidos do original) */
        .form-container { max-width: 900px; margin: 20px auto; padding: 20px; background-color: #fff; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
        .curriculum-link { display: inline-block; margin-top: 10px; }
        .invalid-feedback.d-block { display: block !important; }
    </style>
</head>
<body>
    <div class="container form-container">
        <div class="d-flex justify-content-between align-items-center mb-4">
            <h2>Editar Candidato (Admin)</h2>
            <a href="listar-candidato.php" class="btn btn-outline-secondary">
                <i class="bi bi-arrow-left"></i> Voltar para Lista
            </a>
        </div>

        <?php if ($mensagem_pagina): ?>
            <div class="alert alert-<?php echo htmlspecialchars($tipo_mensagem_pagina); ?> 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 ($candidato): ?>
        <div class="card">
            <div class="card-body">
                <form action="processa_edicao_lista_candidato.php" method="POST" enctype="multipart/form-data" class="needs-validation" novalidate>
                    <input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($_SESSION['csrf_token']); ?>">
                    <input type="hidden" name="id" value="<?php echo htmlspecialchars($candidato['id']); ?>">

                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label for="nome" class="form-label">Nome:</label>
                            <input type="text" class="form-control" id="nome" name="nome" 
                                value="<?= get_edit_lista_candidato_value('nome', $candidato['nome'] ?? '') ?>" required>
                            <?php display_edit_lista_candidato_error('nome'); ?>
                            <div class="invalid-feedback">Por favor, informe o nome.</div>
                        </div>
                        
                        <div class="col-md-6">
                            <label for="email" class="form-label">E-mail:</label>
                            <input type="email" class="form-control" id="email" name="email" 
                                value="<?= get_edit_lista_candidato_value('email', $candidato['email'] ?? '') ?>" required>
                            <?php display_edit_lista_candidato_error('email'); ?>
                            <div class="invalid-feedback">Por favor, informe um e-mail válido.</div>
                        </div>
                    </div>

                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label for="login" class="form-label">Login:</label>
                            <input type="text" class="form-control" id="login" name="login" 
                                value="<?= get_edit_lista_candidato_value('login', $candidato['login'] ?? '') ?>" required>
                            <?php display_edit_lista_candidato_error('login'); ?>
                            <div class="invalid-feedback">Por favor, informe o login.</div>
                        </div>
                        
                        <div class="col-md-6">
                            <label for="senha" class="form-label">Nova Senha (opcional):</label>
                            <input type="password" class="form-control" id="senha" name="senha" minlength="6">
                            <div class="form-text">Deixe em branco para manter a senha atual.</div>
                             <?php display_edit_lista_candidato_error('senha'); ?>
                        </div>
                    </div>

                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label for="cidade" class="form-label">Cidade:</label>
                            <input type="text" class="form-control" id="cidade" name="cidade" 
                                value="<?= get_edit_lista_candidato_value('cidade', $candidato['cidade'] ?? '') ?>" required>
                            <?php display_edit_lista_candidato_error('cidade'); ?>
                            <div class="invalid-feedback">Por favor, informe a cidade.</div>
                        </div>
                        
                        <div class="col-md-6">
                            <label for="estado" class="form-label">Estado:</label>
                            <select class="form-select" id="estado" name="estado" required>
                                <option value="">Selecione o Estado</option>
                                <?php
                                $estados_br_admin = ["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_admin = get_edit_lista_candidato_value('estado', $candidato['estado'] ?? '');
                                foreach ($estados_br_admin as $sigla) {
                                    echo "<option value=\"$sigla\" " . ($estado_sel_admin == $sigla ? "selected" : "") . ">$sigla</option>";
                                }
                                ?>
                            </select>
                             <?php display_edit_lista_candidato_error('estado'); ?>
                            <div class="invalid-feedback">Por favor, selecione um estado.</div>
                        </div>
                    </div>

                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label for="celular" class="form-label">Celular:</label>
                            <input type="text" class="form-control telefone-mask" id="celular" name="celular" 
                                value="<?= get_edit_lista_candidato_value('celular', $candidato['celular'] ?? '') ?>" required placeholder="(00) 00000-0000">
                            <?php display_edit_lista_candidato_error('celular'); ?>
                            <div class="invalid-feedback">Por favor, informe o celular.</div>
                        </div>
                        
                        <div class="col-md-6">
                            <label for="tipo_vaga" class="form-label">Segmento de Interesse:</label>
                            <input type="text" class="form-control" id="tipo_vaga" name="tipo_vaga" 
                                value="<?= get_edit_lista_candidato_value('tipo_vaga', $candidato['tipo_vaga'] ?? '') ?>" required>
                            <?php display_edit_lista_candidato_error('tipo_vaga'); ?>
                            <div class="invalid-feedback">Por favor, selecione o segmento de interesse.</div>
                        </div>
                    </div>

                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label for="cargo_pretendido" class="form-label">Cargo Pretendido:</label>
                             <input type="text" class="form-control" id="cargo_pretendido" name="cargo_pretendido" 
                                value="<?= get_edit_lista_candidato_value('cargo_pretendido', $candidato['cargo_pretendido'] ?? '') ?>" required>
                            <?php display_edit_lista_candidato_error('cargo_pretendido'); ?>
                            <div class="invalid-feedback">Por favor, selecione o cargo pretendido.</div>
                        </div>
                        
                        <div class="col-md-6">
                            <label for="salario_pretendido" class="form-label">Pretensão Salarial:</label>
                             <input type="text" class="form-control" id="salario_pretendido" name="salario_pretendido" 
                                value="<?= get_edit_lista_candidato_value('salario_pretendido', $candidato['salario_pretendido'] ?? '') ?>" required>
                            <?php display_edit_lista_candidato_error('salario_pretendido'); ?>
                            <div class="invalid-feedback">Por favor, selecione a pretensão salarial.</div>
                        </div>
                    </div>

                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label for="link_selflix" class="form-label">Link do Selflix:</label>
                            <input type="url" class="form-control" id="link_selflix" name="link_selflix" 
                                value="<?= get_edit_lista_candidato_value('link_selflix', $candidato['link_selflix'] ?? '') ?>" placeholder="https://...">
                            <?php display_edit_lista_candidato_error('link_selflix'); ?>
                        </div>
                        
                        <div class="col-md-6">
                            <label for="receber_emails" class="form-label">Aceita receber e-mails?</label>
                            <select class="form-select" id="receber_emails" name="receber_emails" required>
                                <?php $receber_emails_sel_admin = get_edit_lista_candidato_value('receber_emails', $candidato['receber_emails'] ?? 'Sim'); ?>
                                <option value="Sim" <?= $receber_emails_sel_admin == 'Sim' ? 'selected' : ''; ?>>Sim</option>
                                <option value="Nao" <?= $receber_emails_sel_admin == 'Nao' || $receber_emails_sel_admin == 'Não' ? 'selected' : ''; ?>>Não</option>
                            </select>
                            <?php display_edit_lista_candidato_error('receber_emails'); ?>
                            <div class="invalid-feedback">Por favor, selecione uma opção.</div>
                        </div>
                    </div>

                    <div class="mb-3">
                        <label for="curriculo" class="form-label">Substituir Currículo (PDF, DOC, DOCX - máx. 2MB):</label>
                        <input type="file" class="form-control" id="curriculo" name="curriculo" accept=".pdf,.doc,.docx">
                        <div class="form-text">Deixe em branco para manter o currículo atual.</div>
                        <?php display_edit_lista_candidato_error('curriculo'); ?>
                        
                        <?php if (!empty($candidato['curriculo'])): 
                            $caminhoCurriculoVis = $candidato['curriculo'];
                            if (strpos($caminhoCurriculoVis, $upload_dir_curriculos) === false && !empty($upload_dir_curriculos)) {
                                // Se o caminho no BD não inclui o diretório padrão, tenta prefixar
                                $caminhoCompleto = rtrim($upload_dir_curriculos, '/') . '/' . basename($caminhoCurriculoVis);
                                if(file_exists($caminhoCompleto)) {
                                    $caminhoCurriculoVis = $caminhoCompleto;
                                }
                            } elseif (!file_exists($caminhoCurriculoVis) && !empty($upload_dir_curriculos)) {
                                // Se o caminho do BD já tem o upload_dir (ou parte dele) mas não existe, tenta só com o basename
                                $caminhoAlternativo = rtrim($upload_dir_curriculos, '/') . '/' . basename($caminhoCurriculoVis);
                                 if(file_exists($caminhoAlternativo)) {
                                    $caminhoCurriculoVis = $caminhoAlternativo;
                                }
                            }
                        ?>
                            <?php if (file_exists($caminhoCurriculoVis)): ?>
                                <div class="mt-2">
                                    <a href="<?php echo htmlspecialchars($caminhoCurriculoVis); ?>" target="_blank" class="curriculum-link">
                                        <i class="bi bi-file-earmark-text"></i> Visualizar currículo atual (<?= htmlspecialchars(basename($candidato['curriculo'])) ?>)
                                    </a>
                                </div>
                            <?php else: ?>
                                <div class="mt-2 text-muted"><i class="bi bi-exclamation-triangle"></i> Currículo atual (<?= htmlspecialchars(basename($candidato['curriculo'])) ?>) não encontrado no servidor.</div>
                                <?php error_log("Admin edit: Arquivo de currículo não encontrado para visualização: " . $caminhoCurriculoVis . " (Valor DB: " . $candidato['curriculo'] . ")"); ?>
                            <?php endif; ?>
                        <?php endif; ?>
                    </div>

                    <div class="d-grid gap-2 d-md-flex justify-content-md-end mt-4">
                        <button type="submit" class="btn btn-primary">
                            <i class="bi bi-save"></i> Salvar Alterações
                        </button>
                    </div>
                </form>
            </div>
        </div>
        <?php else: ?>
             <div class="alert alert-danger">Não foi possível carregar os dados do candidato para edição.</div>
             <a href="listar-candidato.php" class="btn btn-secondary mt-2">Voltar para Lista</a>
        <?php endif; ?>
    </div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.16/jquery.mask.min.js"></script>
    <script>
        $(document).ready(function() {
            $('.telefone-mask').mask('(00) 00000-0000');
            
            (function() {
                'use strict';
                var forms = document.querySelectorAll('.needs-validation');
                Array.prototype.slice.call(forms).forEach(function(form) {
                    form.addEventListener('submit', function(event) {
                        if (!form.checkValidity()) {
                            event.preventDefault();
                            event.stopPropagation();
                        }
                        form.classList.add('was-validated');
                    }, false);
                });
            })();
        });
    </script>
</body>
</html>