Gerenciador De Estacionamentos

Projeto de uma API para gerenciar um estacionamento de carros e motos.

🚀 Funcionalidades

  • Cadastro de Estabelecimento (CRUD)
  • Cadastro de Veículos (CRUD)
  • Entrada e saída de veículos
  • Geração de relatório para controle de entradas e saídas

⚙️ Pré-requisitos

Antes de começar, é necessário que você tenha instalado na sua máquina as seguintes ferramentas:

  • JDK (nesse projeto foi utilizada a 16, você pode baixar aqui)
  • Uma IDE ou editor de código (para o desenvolvimento do projeto foi utilizado o IntelliJ, você pode baixar aqui)
  • PostgreSQL (aqui)

Instalação

  1. Clone o repositório na sua máquina com git clone https://github.com/gabrieladipoggio/gerenciador-estacionamentos.git
  2. No PostgreSQL, crie o banco de dados 'desafio', usuário e senha
  3. Abra o projeto no editor de código de sua preferência
  4. Entre no arquivo application.properties
  5. Altere as propriedades spring.datasource.username e spring.datasource.password para o nome de usuário e senha criados no passo anterior
  6. O projeto está pronto para rodar!

📄 Documentação

Para a documentação do projeto foi utilizado o Swagger. Com o projeto rodando na sua máquina, você pode acessá-lo aqui. O projeto também conta com alguns casos de testes e tratamento de exceções.

🔍 Endpoints

O projeto conta com duas classes de Controllers, representando o Veículo (Vehicle) e a Empresa (Company). Dessa forma, foi desenvolvido o CRUD completo de cada uma dessas classes, bem como alguns métodos auxiliares, sendo eles:

  1. /company/report: gera um arquivo .csv contendo uma listagem de todos os carros que passaram pelo estacionamento nas últimas 24 horas, além da contagem de quantos veículos estão estacionados no momento (especificando o número de carros e motos) e o número total de entradas e saídas do dia.
  2. /vehicle/addToGarage: método responsável por adicionar um carro no estacionamento, com base no id do estabelecimento e placa do carro previamente cadastrado.
  3. /vehicle/removeFromGarage: metódo responsável por remover um carro do estacionamento, com base no id do estabelecimento e placa do carro previamente cadastrado.
  4. /vehicle/search/{registration}: método responsável por buscar um carro no banco de dados, com base na sua placa.