Bem-vindo ao Sistema de Gestão de Frotas! Este sistema foi desenvolvido para simplificar a administração de veículos, motoristas e processos de aluguel. Com uma interface funcional e recursos bem definidos, ele oferece ferramentas para cadastro, gerenciamento e envio de informações automatizadas.
- Cadastro de Veículos: Administradores podem cadastrar veículos e gerenciar sua disponibilidade.
- Cadastro de Usuários e Motoristas: Criação de usuários, com opção de associar motoristas aos perfis cadastrados.
- Aluguel de Veículos: Reserva de veículos com validações automáticas e cálculo de custos.
- Envio de E-mails Automáticos: Detalhes do aluguel são enviados por e-mail ao usuário responsável.
Antes de começar, você precisará do seguinte instalado em sua máquina:
- Java 17 ou superior
- Maven
- IDE de sua escolha (recomenda-se IntelliJ ou Eclipse)
- Conta Gmail com autenticação em duas etapas ativada
-
Clone o repositório:
git clone https://github.com/devopMarkz/Gestao-de-frotas_WEB.git
-
Importe o projeto na sua IDE:
- Abra sua IDE.
- Importe o projeto como um projeto Maven existente.
-
Configure as variáveis de ambiente:
-
No sistema operacional, crie as variáveis de ambiente:
- EMAIL_USERNAME: Seu endereço de e-mail (ex.: [email protected]).
- EMAIL_PASSWORD: A senha de app gerada no Gmail (não é a senha da conta).
-
Para gerar a senha de app:
- Acesse sua conta Google e ative a verificação em duas etapas.
- Vá até Segurança > Senhas de app > Escolha qualquer nome para o app e clique em Criar, para que seja gerada uma senha específica para este projeto.
- Copie e use essa senha como valor de EMAIL_PASSWORD.
-
-
Inicie o Servidor Local
- Execute o método main da classe principal
-
Acesse a aplicação no navegador para verificar se está ok (http://localhost:8080)
URL: POST - http://localhost:8080/usuarios/cadastro
Descrição: Cadastra usuários no sistema.
JSON de Entrada:
{
"email": "[email protected]",
"password": "minhaSenha123",
"tipoDeUsuario": "MOTORISTA"
}
URL: POST - http://localhost:8080/usuarios/usuario/motorista
Descrição: Cria um cadastro de motorista para o usuário.
JSON de Entrada:
{
"email": "[email protected]",
"cadastroDeMotorista": {
"nome": "João Silva",
"cnh": "123456781",
"categoriaCNH": "C",
"dataNascimento": "1985-05-15"
}
}
URL: POST - http://localhost:8080/usuarios/login
Descrição: Efetua o login do usuário no sistema.
JSON de Entrada:
{
"email": "[email protected]",
"password": "minhaSenha123"
}
URL: POST - http://localhost:8080/veiculos
Descrição: Cria um novo veículo no sistema que pode ser alugado.
JSON de Entrada para criação de Ônibus:
{
"categoriaVeiculo": "ONIBUS",
"placa": "PTW5D24",
"marca": "Mercedes-Benz",
"modelo": "Tourismo",
"anoFabricacao": 2020,
"capacidade": 50,
"custoPorDia": 600.00,
"atributosEspecificos": {
"numeroDeAssentos": 52
}
}
JSON de Entrada para criação de Caminhão:
{
"categoriaVeiculo": "CAMINHAO",
"placa": "PTW5D24",
"marca": "Scania",
"modelo": "R450",
"anoFabricacao": 2022,
"capacidade": 18000.00,
"custoPorDia": 750.00,
"atributosEspecificos": {
"numeroDeEixos": 6
}
}
URL: GET - http://localhost:8080/veiculos?disponivel=true&categoriaVeiculo=ONIBUS
Descrição: Efetua uma busca de veículos disponíveis por filtros.
Parâmetros de Query:
disponivel
: Filtra os veículos disponíveis (true
oufalse
).categoriaVeiculo
: Filtra os veículos pela categoria (ex.:ONIBUS
,CAMINHAO
).
URL: GET - http://localhost:8080/veiculos/PTW5D24
Descrição: Efetua a busca de um veículo por sua placa.
Parâmetros de Rota:
{placa}
: Placa do veículo a ser buscado (ex.:PTW5D24
).
URL: POST - http://localhost:8080/alugueis
Descrição: Efetua um aluguel de veículo, vinculando-o a um motorista por meio da CNH e da placa do veículo.
JSON de Entrada:
{
"cnh": "123456781",
"placa": "PTW5D24",
"dataHoraInicio": "2024-12-23T10:00:00",
"dataHoraFim": "2025-02-21T15:00:00"
}
URL: GET - http://localhost:8080/alugueis?startDate=2024-12-21T10:00:00&endDate=2025-02-21T15:00:00&statusAluguel=FINALIZADO
Descrição: Busca aluguéis efetuados em um determinado período e filtra pelo status do aluguel.
Parâmetros de Rota:
{startDate}
: Data e hora de início do período desejado (formato:yyyy-MM-ddTHH:mm:ss
).{endDate}
: Data e hora de término do período desejado (formato:yyyy-MM-ddTHH:mm:ss
).{statusAluguel}
: Status do aluguel (PENDENTE
,EM_ANDAMENTO
,FINALIZADO
,CANCELADO
).
Contribuições são bem-vindas! Para propor melhorias ou corrigir problemas, abra uma issue ou envie um pull request.