diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62c8935 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..8dbadc6 --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +# Easy Vagas 🚘 + + + + +![GitHub last commit](https://img.shields.io/github/last-commit/alexavierdev/CRUD-PHP) + +O Easy Vagas é uma aplicação desenvolvida para gerenciar estacionamentos de veículos, permitindo o registro de entrada e saída, além de fornecer informações relevantes para o controle eficiente como horarios de entrada e saida, placas e etc. + +# Funcionalidades + +### Registro de Veículos: + - Adição de novos veículos com detalhes como nome do proprietário, categoria, modelo, placa e cor. + - Validação da placa do veículo. + - Registro de Saída + +### Listagem de Veículos: + - Visualização de todos os veículos registrados. + - Filtragem por veículos que já saíram e os que ainda estão no estacionamento. +### Gestão de Funcionários: + Cadastro de novos funcionários com diferentes níveis de permissão (ADMIN, FUNCIONARIO). + +# Tecnologias Utilizadas + +[![PHP](https://img.shields.io/badge/PHP-8.0.-blue.svg)](https://www.php.net/releases/7_4_12.php) + +[![MySQL](https://img.shields.io/badge/MySQL-8.0-blue.svg)](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/) + +[![Bootstrap](https://img.shields.io/badge/Bootstrap-5.0-blueviolet.svg)](https://getbootstrap.com/docs/4.5/getting-started/introduction/) + + +# Como Usar + + 1. Clone este repositório para o seu ambiente local. + 2. Importe o arquivo `database.sql` para criar a tabela de tarefas no banco de dados. + 3. Configure o acesso ao banco de dados no arquivo `actions/connectDB.php`. + 4. Inicie um servidor PHP local ou utilize algum serviço de hospedagem que suporte PHP e MySQL. + 5. Acesse o projeto através do navegador e comece a utilizar o Easy Vagas. + 6. Login: admin@easyvagas.com || Senha: 123 + + +# Licença + +Este projeto é de código aberto e está sob a licença [MIT](https://opensource.org/licenses/MIT). + +# Redes Sociais +[![Instagram](https://img.shields.io/badge/Instagram-%23E4405F.svg?&style=for-the-badge&logo=Instagram&logoColor=white)](https://www.instagram.com/alexavierdev) +[![LinkedIn](https://img.shields.io/badge/LinkedIn-%230077B5.svg?&style=for-the-badge&logo=LinkedIn&logoColor=white)](https://www.linkedin.com/in/alexsandroxavier) + + diff --git a/actions/cadastrarFuncionario.php b/actions/cadastrarFuncionario.php new file mode 100644 index 0000000..a04451f --- /dev/null +++ b/actions/cadastrarFuncionario.php @@ -0,0 +1,33 @@ + 0){ + //usuario ENCONTRADO + $usuario = mysqli_fetch_assoc($resultado); + $hash = $usuario['senha']; + + if (password_verify($senha,$hash)){ + //usuario verificado, senha CORRETA + + $_SESSION['permissao'] = $usuario['nivel_permissao']; + $_SESSION['usuario'] = $usuario['nome']; + $_SESSION['logado'] = true; + header('location:../pages/listarVeiculos.php'); + exit(); + }else{ + //usuario nao verificado, senha INCORRETA + header('location:../index.php?erro=4'); + } + + }else{ + //usuario nao encontrado + header('location:../index.php?erro=5'); + } + +} + + + + + + diff --git a/actions/logout.php b/actions/logout.php new file mode 100644 index 0000000..d0c21b5 --- /dev/null +++ b/actions/logout.php @@ -0,0 +1,5 @@ + + diff --git a/actions/registrarSaida.php b/actions/registrarSaida.php new file mode 100644 index 0000000..37e0708 --- /dev/null +++ b/actions/registrarSaida.php @@ -0,0 +1,15 @@ + + +
+ +
+ + + + + + + + +
+ +
+ + + +
+ Copyrigth @ + Alex Xavier +
+ + + + + + + + + diff --git a/includes/header.php b/includes/header.php new file mode 100644 index 0000000..7cfc83c --- /dev/null +++ b/includes/header.php @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + Gerenciamento de Estacionamento + + + + + \ No newline at end of file diff --git a/includes/headerAdmin.php b/includes/headerAdmin.php new file mode 100644 index 0000000..be71a29 --- /dev/null +++ b/includes/headerAdmin.php @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + Gerenciamento de Estacionamento + + + + + \ No newline at end of file diff --git a/includes/mensagem.php b/includes/mensagem.php new file mode 100644 index 0000000..809b401 --- /dev/null +++ b/includes/mensagem.php @@ -0,0 +1,28 @@ +Veículo registrado com sucesso!'; +} else if (isset($_GET['erro']) && $_GET['erro'] == '1') { + echo ''; +} + +//ADICIONA UMA MENSAGEM DE STATUS DE REGISTRO DO HORARIO DE SAIDA +if (isset($_GET['sucesso']) && $_GET['sucesso'] === '2') { + echo ''; +} else if (isset($_GET['erro']) && $_GET['erro'] == '2') { + echo ''; +} + +//ADICIONA UMA MENSAGEM DE STATUS DE REGISTRO DO HORARIO DE SAIDA +if (isset($_GET['sucesso']) && $_GET['sucesso'] === '3') { + echo ''; +} else if (isset($_GET['erro']) && $_GET['erro'] == '3') { + echo ''; +} + +//ADICIONA UMA MENSAGEM DE STATUS DO LOGIN +if (isset($_GET['erro']) && $_GET['erro'] === '4') { + echo ''; +} else if (isset($_GET['erro']) && $_GET['erro'] == '5') { + echo ''; +} \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..4031280 --- /dev/null +++ b/index.php @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + Easy Vagas + + + + +
+ +

Easy Vagas | Faça Login

+
+ + +
+
+ + +
+ + +

Todos os direitos reservados © 2023 | Easy Vagas

+
+ + diff --git a/js/validacoes.js b/js/validacoes.js new file mode 100644 index 0000000..b2bea40 --- /dev/null +++ b/js/validacoes.js @@ -0,0 +1,51 @@ +function validarPlaca(placa) { + // Definir o padrão da placa usando regex + const pattern = /^[A-Z]{3}[0-9][0-9A-Z][0-9]{2}$/; + + // Verificar se a placa corresponde ao padrão + if (pattern.test(placa)) { + return true; // Formato válido + } else { + return false; // Formato inválido + } +} + +function validarCampoPlaca() { + const placaInput = document.getElementById('placa'); + const placa = placaInput.value.trim().toUpperCase(); // Converte para maiúsculas e remove espaços extras + const btnRegistrar = document.getElementById('btn-registrar'); + + // Verificar se a placa é válida + if (validarPlaca(placa)) { + // Formato válido + btnRegistrar.disabled = false + placaInput.classList.remove('is-invalid'); + placaInput.classList.add('is-valid'); + + } else { + // Formato inválido + btnRegistrar.disabled = true + placaInput.classList.add('is-invalid'); + } +} + + +function validaEmail() { + const inputEmail = document.getElementById('email'); + const btnCadastrar = document.getElementById('btn-cadastrar'); + const email = inputEmail.value.trim(); // limpaa os espaços vazios + +// Expressão Regular para validar o formato do e-mail + const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; + + if (emailRegex.test(email)) { + btnCadastrar.disabled = false + inputEmail.classList.remove('is-invalid'); + inputEmail.classList.add('is-valid'); + } else { + // E-mail inválido, exibe mensagem de erro + btnCadastrar.disabled = true + inputEmail.classList.add('is-invalid'); + } +} + diff --git a/pages/cadastrarFuncionario.php b/pages/cadastrarFuncionario.php new file mode 100644 index 0000000..0562893 --- /dev/null +++ b/pages/cadastrarFuncionario.php @@ -0,0 +1,59 @@ + + +
+ +
+

Cadastrar Funcionario

+
+ + +
+
+ + +
+ Por favor, insira um email válido. +
+
+
+ + +
+
+ + +
+ +
+ +
+ + \ No newline at end of file diff --git a/pages/listarVeiculos.php b/pages/listarVeiculos.php new file mode 100644 index 0000000..e23b28d --- /dev/null +++ b/pages/listarVeiculos.php @@ -0,0 +1,167 @@ + + + + + + + + + + +
+ Veículos que Já Saíram + Veículos com Saída Pendente +
+
+ + +
+
+
+ + +
+ + + + + + + + + + + + + + + 0) { + while ($veiculo = mysqli_fetch_assoc($resultado)) { + + ?> + + + + + + + + + + + + + '; + } + + ?> + + + +
Nome PropietarioCategoriaModeloPlacaCorHorario de EntradaHorario de Saida
+ + Registrar + Saída +
Não há veiculos registrados
+ +
+ diff --git a/pages/registrarVeiculo.php b/pages/registrarVeiculo.php new file mode 100644 index 0000000..ec57cb7 --- /dev/null +++ b/pages/registrarVeiculo.php @@ -0,0 +1,71 @@ + + + +
+ +
+

Registrar Veiculo

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ Por favor, insira uma placa válida no formato "LLL-NNNN". +
+
+
+ + +
+ +
+ +
+ + \ No newline at end of file