<?php
// Exibe erros (apenas em desenvolvimento)
ini_set('display_errors', 1);
error_reporting(E_ALL);

// Configurações de conexão
$host = 'localhost';
$db = 'unicoffe_db';  // Nome do banco de dados
$user = 'root';
$pass = '';

$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
    die("Falha na conexão: " . $conn->connect_error);
}

// Função para limpar dados
function limpar($str) {
    return htmlspecialchars(trim($str));
}

// Função para validar CPF
function validarCPF($cpf) {
    $cpf = preg_replace('/[^0-9]/', '', $cpf);
    
    if (strlen($cpf) != 11) {
        return false;
    }

    // Validação dos 2 últimos dígitos
    for ($t = 9; $t < 11; $t++) {
        for ($d = 0, $c = 0; $c < $t; $c++) {
            $d += $cpf[$c] * (($t + 1) - $c);
        }
        $d = ((10 * $d) % 11) % 10;
        if ($cpf[$t] != $d) {
            return false;
        }
    }
    return true;
}

// Verifica se a requisição é POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    die("Método inválido.");
}

// Coleta e limpa os dados do formulário
$nome = limpar($_POST['nome']);
$dataNascimento = limpar($_POST['dataNascimento']);
$mae = limpar($_POST['mae']);
$cpf = limpar($_POST['cpf']);
$cep = limpar($_POST['cep']);
$endereco = limpar($_POST['endereco']);
$complemento = limpar($_POST['complemento']);
$email = limpar($_POST['email']);
$telefone = limpar($_POST['telefone']);
$login = limpar($_POST['login']);
$senha = $_POST['senha'];  // Ainda não criptografada

// Validações básicas
if (strlen($nome) < 15 || strlen($nome) > 80) {
    die("Nome deve conter entre 15 e 80 caracteres.");
}

if (!preg_match('/^\(\+55\)\d{2}-\d{4}-\d{4}$/', $telefone)) {
    die("Formato de telefone inválido. Ex: (+55)11-91234-5678");
}

if (!preg_match('/^[A-Za-z]{6}$/', $login)) {
    die("Login deve conter exatamente 6 letras.");
}

if (!preg_match('/^[A-Za-z]{8}$/', $senha)) {
    die("Senha deve conter exatamente 8 letras.");
}

// Validação do CPF
if (!validarCPF($cpf)) {
    die("CPF inválido.");
}

// Verifica se o email ou login já existem no banco de dados
$stmt = $conn->prepare("SELECT id FROM usuarios WHERE email = ? OR login = ?");
$stmt->bind_param("ss", $email, $login);
$stmt->execute();
$stmt->store_result();

if ($stmt->num_rows > 0) {
    die("E-mail ou login já cadastrados.");
}
$stmt->close();

// Criptografia da senha
$senhaHash = password_hash($senha, PASSWORD_DEFAULT);

// Query para inserir os dados
$sql = "INSERT INTO usuarios 
(nome, data_nascimento, nome_mae, cpf, cep, endereco, complemento, email, telefone, login, senha_hash) 
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

$stmt = $conn->prepare($sql);
if (!$stmt) {
    die("Erro na preparação da query: " . $conn->error);
}

$stmt->bind_param(
    "sssssssssss",
    $nome,
    $dataNascimento,
    $mae,
    $cpf,
    $cep,
    $endereco,
    $complemento,
    $email,
    $telefone,
    $login,
    $senhaHash
);

// Executa o cadastro
if ($stmt->execute()) {
    header("Location: login.html");
    exit();
} else {
    echo "Erro ao cadastrar: " . $conn->error;
}

$stmt->close();
$conn->close();
?>
