<?php
// processar_cadastro.php - VERSÃO FINAL REVISADA COM UPLOAD

if (session_status() === PHP_SESSION_NONE) session_start();
require_once 'conexao.php';
require_once 'include/emails-cadastros/candidato.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== ($_SESSION['csrf_token'] ?? '')) {
        die("Erro de segurança (CSRF).");
    }

    try {
        $pdo->beginTransaction();

        $nome               = trim($_POST['nome']);
        $email              = trim($_POST['email']);
        $login              = trim($_POST['login']);
        $senha              = password_hash($_POST['senha'], PASSWORD_DEFAULT);
        $cep                = $_POST['cep'] ?? '';
        $rua                = $_POST['rua'] ?? '';
        $numero             = $_POST['numero'] ?? '';
        $bairro             = $_POST['bairro'] ?? '';
        $cidade             = $_POST['cidade'] ?? '';
        $estado             = $_POST['estado'] ?? '';
        $celular            = $_POST['celular'] ?? '';
        $segmento           = $_POST['segmento'] ?? ''; 
        $cargo              = $_POST['cargo_pretendido'] ?? '';
        $modelo             = $_POST['modelo_contratacao'] ?? '';
        $pcd                = $_POST['pcd'] ?? 'Não';
        $pretensao          = $_POST['salario_pretendido'] ?? '';

        $sql = "INSERT INTO Candidatos (nome, email, login, senha, cep, rua, numero, bairro, cidade, estado, celular, segmento, cargo_pretendido, modelo_contratacao, pcd, salario_pretendido, data_cadastro) 
                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())";
        
        $stmt = $pdo->prepare($sql);
        $stmt->execute([$nome, $email, $login, $senha, $cep, $rua, $numero, $bairro, $cidade, $estado, $celular, $segmento, $cargo, $modelo, $pcd, $pretensao]);
        
        $novo_id = $pdo->lastInsertId();

        // Processamento de Upload de Currículo
        if (isset($_FILES['curriculo']) && $_FILES['curriculo']['error'] === UPLOAD_ERR_OK) {
            $extensao = strtolower(pathinfo($_FILES['curriculo']['name'], PATHINFO_EXTENSION));
            
            if ($extensao === 'pdf' || $extensao === 'doc' || $extensao === 'docx') {
                $upload_dir = $_SERVER['DOCUMENT_ROOT'] . '/uploads/curriculos/atualizado/';
                
                if (!is_dir($upload_dir)) {
                    mkdir($upload_dir, 0777, true);
                }
                
                $file_name = "curriculo_" . $novo_id . "_" . time() . "." . $extensao;
                $caminho_final = $upload_dir . $file_name;
                
                if (move_uploaded_file($_FILES['curriculo']['tmp_name'], $caminho_final)) {
                    $caminho_banco = 'uploads/curriculos/atualizado/' . $file_name;
                    $pdo->prepare("INSERT INTO CandidatoCurriculos (candidato_id, caminho_arquivo) VALUES (?, ?)")
                        ->execute([$novo_id, $caminho_banco]);
                } else {
                    throw new Exception("Falha ao mover arquivo. Verifique permissões da pasta 'atualizado/'.");
                }
            } else {
                throw new Exception("Formato de arquivo inválido. Apenas PDF, DOC ou DOCX.");
            }
        }

        $pdo->commit();

        // Envio de e-mails
        $dadosEmail = [
            'nome' => $nome, 'login' => $login, 'email' => $email, 
            'celular' => $celular, 'cidade' => $cidade, 'estado' => $estado, 
            'cargo_pretendido' => $cargo, 'tipo_vaga_interesse' => $segmento,
            'site_url' => 'https://appselflix.gexcore.com.br'
        ];

        enviarEmailBoasVindasCandidato($email, $dadosEmail);
        enviarEmailNotificacaoAdminNovoCandidato($dadosEmail);

        $_SESSION['status_cadastro'] = 'success';
        $_SESSION['mensagem_cadastro'] = "Cadastro realizado com sucesso!";
        header("Location: cadastro_candidato.php");
        exit();

    } catch (Exception $e) {
        if ($pdo->inTransaction()) $pdo->rollBack();
        error_log("Erro Cadastro: " . $e->getMessage());
        $_SESSION['status_cadastro'] = 'danger';
        $_SESSION['mensagem_cadastro'] = "Erro ao processar cadastro: " . $e->getMessage();
        header("Location: cadastro_candidato.php");
        exit();
    }
}