Descrição
Este projeto é um sistema de gerenciamento de biblioteca, desenvolvido para fins de estudo e aplicação de boas práticas de engenharia de software, como APIs RESTful, Spring Boot e Docker (para o banco de dados PostgreSQL).
Regras de Negócio (core)
- Um usuário pode ter, no máximo, 3 livros emprestados simutaniamente.
- Prazo de devolução: 7 dias, renovável uma vez por mais 7 dias.
- Multa por atraso: R$ 50,00 + R$ 2.00 por dia de atraso.
- Punição: Usuário com atraso ficam na lista negra por 1 mês, impedidos de realizar novos empréstimos.
- Configuração do projeto Spring Boot.
- Inicialização do repositório Git e criação do 'README.md'.
- Setup do Docker para PostgreSQL.
- Configuração do 'application.properties' para conexão com o banco de dados.
- Criação da entidade Livro.
- Criação da entidade abstrata Pessoa.
- Criação do Enum gênero dos livros.
- Criação do Enum gênero das pessoas.
- Criação da entidade Funcionário.
- Criação da entidade Cliente.
- Criação da endidade empréstimo
- Criação dos repositórios JPA para todas as entidades.
- criar Exceptions personalizadas para Livro não encontrado e Pessoa Não encontrada.
- Implementação do pacote service do book (criando o CRUD completo).
- Implementação do pacote service do employee (criando o CRUD completo).
- Implementação do pacote service do user (criando o CRUD completo).
- Implementação do pacote controller do book (criando o CRUD completo).
- Implementação do pacote controller do employee (criando o CRUD completo).
- Implementação do pacote controller do user (criando o CRUD completo).
- Criação do Enum para status do empréstimo (EMPRESTADO, DEVOLVIDO, ATRASADO).
- Criação da Exception para lista negra e para limite de empréstimos.
- Criação do BorrowingService para gerenciar empréstimos.
- Implementação do método para realizar empréstimos no BorrowingService.
- Implementação do método para renovar empréstimos no BorrowingService.
- Implementação do método para devolver livros no BorrowingService.
- Criação da constante para o valor da multa por atraso.
- Implementação do cálculo de multas por atraso no BorrowingService.
- Criação da entidade Fine.
- Criação do FineService e do FineRepository.
- Adequação do BorrowingService pára retirar responsabilidades e mandar para o FineService