<?php
// Carregar autoload do Composer
require __DIR__ . '/../vendor/autoload.php';

// Criar aplicação Slim
$app = \Slim\Factory\AppFactory::create();

// Rota 1: Ola mundo
$app->get('/rota1', function ($request, $response) {
    $response->getBody()->write('Olá Mundo!');
    return $response;
});

// Rota 1: Ola web
$app->get('/rota2', function ($request, $response) {
    $response->getBody()->write('Olá web!');
    return $response;
});

// Rota 3: variáveis
$app->get('/rota3', function ($request, $response) {
    $x = 1;
    // Exibe o texto "valor da variável = 1."
    // O PHP interpreta $x dentro da string porque usamos aspas duplas
    $y = "<p> o valor de x é igual a <b>$x</b></p>";

    $response->getBody()->write($y);
    return $response;
});



// Rota 4: variáveis
$app->get('/rota4', function ($request, $response) {
    $x = "helio";
    $y = "esperidião";

    $v1 = "$x $y";
    $v2 = '$x $y';


    $response->getBody()->write($v1);
    $response->getBody()->write("<br>");
    $response->getBody()->write($v2);
    return $response;
});

$app->get('/rota5', function ($request, $response) {
    $x = "helio";
    $y = "esperidião";

    $v1 = "$x $y";
    $v2 = '$x $y';

    $html = "<!DOCTYPE html>
            <html>
            <head><title>Diferença de Strings</title></head>
            <body>
                <h3>Diferença entre aspas duplas e simples:</h3>
                <p>Com aspas duplas (\$v1): <strong>$v1</strong></p>
                <p>Com aspas simples (\$v2): <strong>$v2</strong></p>
                <br>
                <p><em>Obs: Aspas duplas interpolam variáveis, aspas simples não.</em></p>
            </body>
            </html>";

    $response->getBody()->write($html);

    return $response;
});


$app->get('/rota6', function ($request, $response) {
    $v1 = 1; // A variável $v1 recebe um valor inteiro
    $v2 = 1.0; // A variável $v2 recebe um valor float (número decimal)
    $v3 = TRUE; // A variável $v3 recebe um valor booleano TRUE
    $v4 = "oi"; // A variável $v4 recebe uma string "oi"

    $v5 = [10, 20, 30]; // A variável $v5 recebe um array
    $v6 = 10e4; // Recebe em notação científica (10 × 10^4 = 100000)
// Exibe o valor de $v1 e o seu tipo
    $response->getBody()->write("valor de v1: $v1 - " . gettype($v1) . "<br>");
    // Exibe o valor de $v2 e o seu tipo
    $response->getBody()->write("valor de v2: $v2 - " . gettype($v2) . "<br>");
    // Exibe o valor de $v3 e o seu tipo
    $response->getBody()->write("valor de v3: $v3 - " . gettype($v3) . "<br>");
    // Exibe o valor de $v4 e o seu tipo
    $response->getBody()->write("valor de v4: $v4 - " . gettype($v4) . "<br>");
    // Exibe o terceiro elemento do array $v5 e o tipo da variável $v5
    $response->getBody()->write("valor de v5: $v5[2] - " . gettype($v5) . "<br>");
    // Exibe o valor de $v6 e o seu tipo
    $response->getBody()->write("valor de v6: $v6 - " . gettype($v6) . "<br>");

    return $response;
});




$app->get('/rota7', function ($request, $response) {
    // Obter todos os parâmetros GET
    $queryParams = $request->getQueryParams();

    // Acessar parâmetros individuais
    $nome = $queryParams['txtNome'] ?? 'Não informado';
    $txtRg = $queryParams['txtRg'] ?? 'Não informado';

    $resultado = "Olá, $nome! seu rg é $txtRg.";

    $response->getBody()->write($resultado);
    return $response;

});



// Rota 8: Cálculo de média escolar (versão simples)
$app->get('/rota8', function ($request, $response) {

    $queryParams = $request->getQueryParams();

    $n1 = $queryParams['txtNota1'] ?? 0;
    $n2 = $queryParams['txtNota2'] ?? 0;

    // Calcula a média
    $media = ($n1 + $n2) / 2;

    // Monta o resultado
    $resultado = sprintf("nota final: %.2f ", $media);

    // Verifica aprovação
    if ($media >= 6) {
        $resultado .= "aprovado";
    } else {
        $resultado .= "reprovado";
    }

    // Escreve o resultado
    $response->getBody()->write($resultado);

    return $response;
});

// Rota 9: recebe email e senha
$app->post('/rota9', function ($request, $response) {
    // Captura os dados enviados pelo formulário via POST
    $dados = $request->getParsedBody();

    $email = $dados['txtEmail'] ?? '';
    $senha = $dados['txtSenha'] ?? '';

    // Monta a resposta
    $resultado = "[$email] [$senha]";

    // Escreve a resposta
    $response->getBody()->write($resultado);
    return $response;
});


// Rota 10: Recebe os dados enviados de um <textArea>
$app->get('/rota10', function ($request, $response) {
    $queryParams = $request->getQueryParams();
    $dadoRecebido = $queryParams['txtPost'] ?? "";
    // Monta o resultado
    $resultado = "Foi enviado:  $dadoRecebido";
    // Escreve o resultado
    $response->getBody()->write($resultado);
    return $response;
});

// Rota 11: Recebe os dados enviados de 2 componentes do tipo checkbox
$app->post('/rota11', function ($request, $response) {
    $dados = $request->getParsedBody();
    // Verifica se os checkboxes foram marcados
    $chkTermos = $dados['chkTermos'] ?? false;
    $chkNoticias = $dados['chkNoticias'] ?? false;
    // Monta o resultado
    $resultado = "Resultado:<br>";
    $resultado .= "Aceitou os termos? ";
    $resultado .= $chkTermos ? "<b>Sim</b><br>" : "<b>Não</b><br>";
    $resultado .= "Receber notícias? ";
    $resultado .= $chkNoticias ? "<b>Sim</b><br>" : "<b>Não</b><br>";
    // Escreve no response
    $response->getBody()->write($resultado);
    return $response;

});

// Rota 12: Recebe os dados enviados de 2 componentes do tipo radio
$app->post('/rota12', function ($request, $response) {
    $dados = $request->getParsedBody();
    // Verifica se os checkboxes foram marcados
    $favorito = $dados['rdoFavorito'] ?? "Não selecionado";
    // Monta o resultado
    $resultado = "Favorito:<br> $favorito";

    // Escreve no response
    $response->getBody()->write($resultado);
    return $response;

});

// Rota 13: Recebe os dados enviados de uma caixa de seleção
$app->post('/rota13', function ($request, $response) {
    $dados = $request->getParsedBody();
    // Verifica se os checkboxes foram marcados
    $linguagem = $dados['cboLinguagem'] ?? "Não selecionado";
    // Monta o resultado
    $resultado = "Favorito:<br> $linguagem";

    // Escreve no response
    $response->getBody()->write($resultado);
    return $response;

});

// Rota 14: Recebe os dados enviados de uma caixa de seleção
$app->post('/rota14', function ($request, $response) {
    $dados = $request->getParsedBody();
    // Verifica se os checkboxes foram marcados
    $linguagem = $dados['lstLinguagem'] ?? "Não selecionado";
    // Monta o resultado
    $resultado = "Favorito:<br> $linguagem";

    // Escreve no response
    $response->getBody()->write($resultado);
    return $response;

});

$app->get('/rota15', function ($request, $response) {

    // Pega os parâmetros da URL (?cboNumero=5)
    $queryParams = $request->getQueryParams();

    // Verifica se foi enviado, senão usa 1 como padrão
    $numero = $queryParams['cboNumero'] ?? 1;

    // Monta a saída
    $resultado = "<h2>Tabuada do $numero</h2>";

    for ($i = 1; $i <= 10; $i++) {
        $calc = $numero * $i;
        $resultado .= "$numero x $i = $calc<br>";
    }

    // Escreve no response
    $response->getBody()->write($resultado);

    return $response;
});

$app->get('/rota16', function ($request, $response) {
    // Pega os parâmetros da URi (?cboNumero=5)
    $queryParams = $request->getQueryParams();
    // Verifica se foi enviado, senão usa 1 como padrão
    $numero = $queryParams['cboNumero'] ?? 1;
    // Monta a saída
    $resultado = "<h2>Tabuada do $numero</h2>";
    $i = 0;
    while ($i <= 10) {
        $calc = $numero * $i;
        $resultado .= "$numero x $i = $calc<br>";
        $i++;
    }
    // Escreve no response
    $response->getBody()->write($resultado);
    return $response;
});


$app->get('/rota17', function ($request, $response) {
    $vetor = array("html", "css", "php", "javaScript");
    $resposta = "";
    foreach ($vetor as $posicao) {
        $resposta .= "$posicao <br>";
    }


    // Escreve no response
    $response->getBody()->write($resposta);
    return $response;
});


$app->get('/rota18', function ($request, $response) {

    $cliente['nome'] = "helio";
    $cliente['cargo'] = "prof";
    $cliente['telefone'] = "12991777777";
    $cliente['cpf'] = "000.000.000-00";
    $resposta = "";
    foreach ($cliente as $posicao) {
        $resposta .= "$posicao <br>";
    }

    // Escreve no response
    $response->getBody()->write($resposta);
    return $response;
});


$app->get('/rota19', function ($request, $response) {

    $cliente['nome'] = "helio";
    $cliente['cargo'] = "prof";
    $cliente['telefone'] = "12991777777";
    $cliente['cpf'] = "000.000.000-00";
    $resposta = "";

    // Escreve no response
    $response->getBody()->write($cliente['nome']);
    return $response;
});

$app->get('/rota20', function ($request, $response) {

    $x = "valor de pi = " . M_PI;

    // Escreve no response
    $response->getBody()->write($x);
    return $response;
});

$app->get('/rota21', function ($request, $response) {
    $n = 16;
    $x = "Raiz de  = " . sqrt($n);

    // Escreve no response
    $response->getBody()->write($x);
    return $response;
});

$app->get('/rota22', function ($request, $response) {
    $string = "p1;p2;p3;p4;p5;p6";
    $vetor = explode(";", $string);
    $resposta = $vetor[0];

    // Escreve no response
    $response->getBody()->write($resposta);
    return $response;
});

$app->get('/rota23', function ($request, $response) {
    $string = "1;2;3;4;5;6";
    $vetor = explode(";", $string);
    $resposta = "";
    foreach ($vetor as $posicao) {
        $resposta .= "$posicao<br>";
    }

    // Escreve no response
    $response->getBody()->write($resposta);
    return $response;
});


$app->get('/rota24', function ($request, $response) {
    $string = "v1;v2;v3;v4;v5;v6";
    $vetor = explode(";", $string);
    $resposta = "";
    foreach ($vetor as $posicao) {
        $resposta .= "$posicao<br>";
    }

    // Escreve no response
    $response->getBody()->write($resposta);
    return $response;
});


$app->get('/rota25', function ($request, $response) {
    // Criar hash seguro
    $senha = "batataFrita123";
    $hash = password_hash($senha, PASSWORD_DEFAULT);

    // Verificar senha na autenticação
    if (password_verify($senha, $hash)) {
        //Senha correta";
    } else {
        //"Senha incorreta";
    }
    $resposta = "senha = $senha <br> hash = $hash";

    $response->getBody()->write($resposta);
    return $response;
});

$app->get('/rota26', function ($request, $response) {
    // Criar hash seguro
    $string = "1;2;3;4;5;6";

    $resposta = str_replace(";", "<br>", $string);

    $response->getBody()->write($resposta);
    return $response;
});


// Rota 27: recebe email e senha
$app->post('/rota27', function ($request, $response) {
    // Captura os dados enviados pelo formulário via POST
    $dados = $request->getParsedBody();

    $email = $dados['txtEmail'] ?? '';
    $senha = $dados['txtSenha'] ?? '';

    $email = strip_tags($email);


    // Escreve a resposta
    $response->getBody()->write("remover tags de: [$email]");
    return $response;
});

// Executar a aplicação
$app->run();

