<?php
require_once '../BIN/AD.php';

session_start();

$acao = antiInject($_POST['acao']);


if($acao == 'login'){
    $email = antiInject($_POST['username']);
    $senha = antiInject($_POST['password']);

    $r = '';
    if(strlen($email) > 5 && $senha != ""){

        $user = pesquisarUmComBindParam("SELECT * FROM usuario WHERE Email = ? AND Senha = ? ", 'ss', $email, $senha);

        if($user['ID'] > 0){
            $_SESSION["UserID"] 		= $user['ID'];
            $_SESSION["UserEmail"] 		= $user['Email'];
            $_SESSION["UserNome"] 		= $user['Nome'];
            $_SESSION["UserImagemPerfil"] 	= $user['ImagemPerfil'];
            $_SESSION["UserStyle"] = $user['EstiloSys'];

            $token = gerarTokenUsuario($user['ID']);
            $ip = getUserIp();

            $insertToken = "
            INSERT INTO usuario_login 
            (UserID, TokenHash, DeviceIP)
            VALUES (?,?,?)
            ";

            setcookie('remember_token', $token, [
                'expires' => time() + (10 * 365 * 24 * 60 * 60), // 10 anos
                'path' => '/',
                'domain' => 'airpost.com.br',
                'secure' => true,
                'httponly' => true,
                'samesite' => 'Lax'
            ]);

            insertComBindParam($insertToken, 'iss', $user['ID'], $token, $ip);

            pesquisar("UPDATE usuario SET UltimoLoginData = NOW() WHERE ID = ".$user['ID']);
            
            // if($r == 0){
            //     $usuario = pesquisarUm("SELECT * FROM usuario WHERE Email = '".$email."' ");

            //     if($usuario['EmailConfirmado'] == 0 && $usuario['ID'] > 0){
            //         $r = 'Sua conta não foi verificada. Enviamos um e-mail para você, acesse a sua caixa de entrada e confirme a sua conta.';
            //     }
            //     else if($usuario['ID'] > 0){

            //     }
            //     else{
            //         $r = 'Não existe nenhuma conta com o e-mail '.$email. '. Verifique se digitou corretamente.';
            //     }
            // }

            // Redirecionamento após login, se configurado
            if (isset($_SESSION['redirect_after_login'])) {
                $redirectUrl = $_SESSION['redirect_after_login'];
                unset($_SESSION['redirect_after_login']); // Limpa a sessão
                echo $redirectUrl;
            }
            else{
                echo 'https://airpost.com.br/browse';
            }
        }
        else{
            $r = 'Erro ao logar! Verifique os dados inseridos.';
        }
    }
    else{
        $r = 'Erro ao logar! Verifique os dados inseridos.';
    }
    echo $r;
}
else if($acao == 'sair'){
    // Limpa todas as variáveis de sessão
    session_unset();

    // Destroi a sessão completamente
    session_destroy();

    setcookie('remember_token', '', [
        'expires' => time() - 3600, // Qualquer tempo no passado
        'path' => '/',
        'domain' => 'airpost.com.br',
        'secure' => true,
        'httponly' => true,
        'samesite' => 'Lax'
    ]);
}
else if($acao == 'cadastro'){


   // Função para validar e-mail (caso você queira validar antes)
    function validateEmail($email) {
        return filter_var($email, FILTER_VALIDATE_EMAIL);
    }

    // Recebe os dados do formulário via POST
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        // Recebe os dados enviados do formulário
        $nome = isset($_POST['fullName']) ? trim($_POST['fullName']) : '';
        $email = isset($_POST['email']) ? trim($_POST['email']) : '';
        $telefone = isset($_POST['phone']) ? trim($_POST['phone']) : '';
        $senha = isset($_POST['password']) ? trim($_POST['password']) : '';

        // Valida os dados
        if (empty($nome) || empty($email) || empty($telefone) || empty($senha)) {
            echo "Todos os campos são obrigatórios.";
            exit;
        }

        if (!validateEmail($email)) {
            echo "E-mail inválido.";
            exit;
        }

        // Verifica se o usuário já existe
        $sql = "SELECT * FROM usuario WHERE Email = ?";
        $usuario = pesquisarUmComBindParam($sql, 's', $email); // Função existente para buscar o usuário

        if ($usuario) {
            // Usuário já existe
            if ($usuario['Senha'] !== NULL) {
                // Caso o usuário já tenha senha, bloqueia qualquer tentativa de atualização ou cadastro
                echo "Erro: A conta já possui uma senha cadastrada. Não é possível recadastrar ou atualizar.";
                exit;
            }

            // Se a senha for NULL, atualiza a senha
            $hashedPassword = $senha;
            $updateSql = "UPDATE usuario SET Senha = ?, Celular = ?, Nome = ? WHERE Email = ?";
            
            // Chama a função updateComBindParam para atualizar o usuário
            $result = updateComBindParam($updateSql, 'ssss', $hashedPassword, $telefone, $nome, $email);
            if ($result) {

                //FORCA LOGIN
                $user = pesquisarUmComBindParam("SELECT * FROM usuario WHERE Email = ? AND Senha = ? ", 'ss', $email, $senha);

                $_SESSION["UserID"] 		= $user['ID'];
                $_SESSION["UserEmail"] 		= $user['Email'];
                $_SESSION["UserNome"] 		= $user['Nome'];
                $_SESSION["UserImagemPerfil"] 	= $user['ImagemPerfil'];
                pesquisar("UPDATE usuario SET UltimoLoginData = NOW() WHERE ID = ".$user['ID']);

                // Redirecionamento após login, se configurado
                if (isset($_SESSION['redirect_after_login'])) {
                    $redirectUrl = $_SESSION['redirect_after_login'];
                    unset($_SESSION['redirect_after_login']); // Limpa a sessão
                    echo $redirectUrl;
                }
                else{
                    echo 'https://airpost.com.br/browse';
                }
            } else {
                echo "Erro ao atualizar a senha. Tente novamente.";
            }
        } else {
            // Usuário não existe, cria um novo
            $hashedPassword = $senha;
            $insertSql = "INSERT INTO usuario (Nome, Email, Celular, Senha) VALUES (?, ?, ?, ?)";
            
            // Chama a função insertComBindParam para criar o usuário
            $idUsuario = insertComBindParam($insertSql, 'ssss', $nome, $email, $telefone, $hashedPassword);
            if ($idUsuario) {

                //FORCA LOGIN
                $user = pesquisarUmComBindParam("SELECT * FROM usuario WHERE Email = ? AND Senha = ? ", 'ss', $email, $senha);

                $_SESSION["UserID"] 		= $user['ID'];
                $_SESSION["UserEmail"] 		= $user['Email'];
                $_SESSION["UserNome"] 		= $user['Nome'];
                $_SESSION["UserImagemPerfil"] 	= $user['ImagemPerfil'];
                pesquisar("UPDATE usuario SET UltimoLoginData = NOW() WHERE ID = ".$user['ID']);

                // Redirecionamento após login, se configurado
                if (isset($_SESSION['redirect_after_login'])) {
                    $redirectUrl = $_SESSION['redirect_after_login'];
                    unset($_SESSION['redirect_after_login']); // Limpa a sessão
                    echo $redirectUrl;
                }
                else{
                    echo 'https://airpost.com.br/browse';
                }
            } else {
                echo "Erro ao criar o cadastro. Tente novamente.";
            }
        }
    } else {
        echo "Método de requisição inválido.";
    }
}