From e59ca74ea0f708048abebbfd65161456da7cd614 Mon Sep 17 00:00:00 2001 From: GabRodrigues23 <144338173+GabRodrigues23@users.noreply.github.com> Date: Wed, 23 Oct 2024 20:38:54 -0300 Subject: [PATCH 01/25] Update README.md --- README.md | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1d909a7..b06d20a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,32 @@ -# controle-financeiro +# Controle Financeiro -Projeto desenvolvido em aula, utilizando java com Spring Boot. \ No newline at end of file +Projeto desenvolvido durante as aulas do 5º ciclo do curso de Análise e Desenvolvimento de Sistemas na FATEC de Itapetininga, orientado pelo professor de Eletiva de Programação Web, **Danilo Gustavo Albano Valim** - [h2danilofatec](https://github.com/h2danilofatec). + +## Participantes + +- **Amanda França Marino Santos Lopes Paes** - [Mandy-Marino](https://github.com/Mandy-Marino) +- **Gabriel Rodrigues de Oliveira** - Owner +- **Gustavo Cesar Kravszenko** - [Kravszenko](https://github.com/Kravszenko) +- **Gustavo Henrique Meira Souza** - [gusmeira88](https://github.com/gusmeira88) +- **Neemias Borges de Matos** - [NeemiasBorges](https://github.com/NeemiasBorges) + +## Descrição do Projeto + +Este projeto visa fornecer uma plataforma simples e eficaz para o controle de clientes, fornecedores, contas a pagar e contas a receber. + +## Funcionalidades + +- Cadastro de Clientes e Fornecedores +- Controle de Contas a Pagar +- Controle de Contas a Receber + +## Tecnologias Utilizadas + +- Java +- Spring Boot + +## Como Executar o Projeto + +1. Clone o repositório: + ```bash + git clone https://github.com/GabRodrigues23/controle-financeiro.git From 687b8bf1fd3806064031340f210217fca0590aab Mon Sep 17 00:00:00 2001 From: GabRodrigues23 <144338173+GabRodrigues23@users.noreply.github.com> Date: Thu, 24 Oct 2024 19:05:20 -0300 Subject: [PATCH 02/25] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b06d20a..2e25d82 100644 --- a/README.md +++ b/README.md @@ -29,4 +29,4 @@ Este projeto visa fornecer uma plataforma simples e eficaz para o controle de cl 1. Clone o repositório: ```bash - git clone https://github.com/GabRodrigues23/controle-financeiro.git + https://github.com/GabRodrigues23/controle-financeiro/tree/dev From 27857de7d7f4e611ae1d89dc8c4a80216f43dfc6 Mon Sep 17 00:00:00 2001 From: GabRodrigues23 <144338173+GabRodrigues23@users.noreply.github.com> Date: Thu, 24 Oct 2024 19:07:43 -0300 Subject: [PATCH 03/25] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e25d82..f3b8a5a 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Projeto desenvolvido durante as aulas do 5º ciclo do curso de Análise e Desenv ## Participantes - **Amanda França Marino Santos Lopes Paes** - [Mandy-Marino](https://github.com/Mandy-Marino) -- **Gabriel Rodrigues de Oliveira** - Owner +- **Gabriel Rodrigues de Oliveira** - [GabRodrigues23](https://github.com/GabRodrigues23) - **Gustavo Cesar Kravszenko** - [Kravszenko](https://github.com/Kravszenko) - **Gustavo Henrique Meira Souza** - [gusmeira88](https://github.com/gusmeira88) - **Neemias Borges de Matos** - [NeemiasBorges](https://github.com/NeemiasBorges) From e2e57af4e677f1331d712b4ac4c84968e1e6400f Mon Sep 17 00:00:00 2001 From: "gabriel.rodrigues" Date: Mon, 4 Nov 2024 13:44:26 -0300 Subject: [PATCH 04/25] Add initial structure for Repositories, Services, and Controllers for ContasReceber and ContasPagar --- .../controllers/ClienteController.java | 7 +- .../controllers/ContasPagarController.java | 5 ++ .../controllers/ContasReceberController.java | 77 +++++++++++++++++++ .../domain/cliente/ClienteRepository.java | 2 - .../domain/cliente/ClienteService.java | 7 +- .../contaspagar/ContasPagarRepository.java | 14 +++- .../contaspagar/ContasPagarService.java | 6 ++ .../ContasReceberRepository.java | 18 +++++ .../contasreceber/ContasReceberService.java | 8 ++ .../fornecedor/FornecedorRepository.java | 16 +++- .../domain/fornecedor/FornecedorService.java | 8 ++ .../entities/ContasPagar.java | 2 +- .../entities/ContasReceber.java | 68 ++++++++++++++++ .../Exercicio1Controller.java | 2 +- .../ResponseAdviceController.java | 2 +- .../UserController.java | 2 +- .../UsuarioController.java | 2 +- 17 files changed, 227 insertions(+), 19 deletions(-) create mode 100644 src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java create mode 100644 src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java create mode 100644 src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java create mode 100644 src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java create mode 100644 src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java create mode 100644 src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java create mode 100644 src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java rename src/main/java/com/fatec/controle_financeiro/{controllers => exercicios_controllers}/Exercicio1Controller.java (98%) rename src/main/java/com/fatec/controle_financeiro/{controllers => exercicios_controllers}/ResponseAdviceController.java (95%) rename src/main/java/com/fatec/controle_financeiro/{controllers => exercicios_controllers}/UserController.java (98%) rename src/main/java/com/fatec/controle_financeiro/{controllers => exercicios_controllers}/UsuarioController.java (97%) diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java index ad2d0d7..75f6900 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java @@ -1,9 +1,9 @@ package com.fatec.controle_financeiro.controllers; - +import com.fatec.controle_financeiro.entities.User; +import com.fatec.controle_financeiro.entities.Cliente; import com.fatec.controle_financeiro.domain.cliente.ClienteRepository; import com.fatec.controle_financeiro.domain.cliente.ClienteService; -import com.fatec.controle_financeiro.entities.Cliente; -import com.fatec.controle_financeiro.entities.User; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -44,7 +44,6 @@ public ResponseEntity create(@RequestBody Cliente cliente) { return new ResponseEntity<>(clienteCreated, HttpStatus.CREATED); } - //READ @GetMapping() public ResponseEntity> getAllCliente() { diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java new file mode 100644 index 0000000..e753d09 --- /dev/null +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java @@ -0,0 +1,5 @@ +package com.fatec.controle_financeiro.controllers; + +public class ContasPagarController { + +} diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java new file mode 100644 index 0000000..3ca2893 --- /dev/null +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java @@ -0,0 +1,77 @@ +package com.fatec.controle_financeiro.controllers; +import com.fatec.controle_financeiro.entities.ContasReceber; +import com.fatec.controle_financeiro.domain.contasreceber.ContasReceberRepository; +import com.fatec.controle_financeiro.domain.contasreceber.ContasReceberService; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.springframework.http.HttpStatus; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + + + +@RestController +@RequestMapping("/api/contasreceber") +public class ContasReceberController { + + @Autowired + private ContasReceberRepository receberRepository; + + private List receber = new ArrayList<>(); + private int proximoId = 1; + + // CREATE + @PostMapping() + public ResponseEntity create(@RequestBody ContasReceber receber){ + ContasReceber receberCreated = receberRepository.save(receber); + return new ResponseEntity<>(receberCreated, HttpStatus.CREATED); + } + + // READ (SELECT) + @GetMapping() + public ResponseEntity> getAllReceber(){ + List contasReceber = receberRepository.findAll(); + return new ResponseEntity<>(contasReceber, HttpStatus.OK); + } + + @GetMapping("{id}") + public ResponseEntity getById(@PathVariable Long id){ + Optional receber = receberRepository.findById(id); + if(receber.isPresent()){ + return new ResponseEntity<>(receber.get(), HttpStatus.OK); + } else{ + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + } + + // UPDATE + @PutMapping("{id}") + public ResponseEntity updateReceber(@PathVariable Long id, @RequestBody ContasReceber entity){ + Optional receberAtual = receberRepository.findById(id); + if(receberAtual.isPresent()){ + entity.setId(id); + receberRepository.save(entity); + return new ResponseEntity<>(entity, HttpStatus.OK); + } else { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + + } + + // DELETE + @DeleteMapping("/{id}") + public ResponseEntity deleteReceber(@PathVariable Long id){ + Optional receberAtual = receberRepository.findById(id); + if (receberAtual.isPresent()) { + receberRepository.deleteById(id); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } else{ + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + } +} diff --git a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java index 813553c..a77aa63 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java @@ -1,9 +1,7 @@ package com.fatec.controle_financeiro.domain.cliente; - import com.fatec.controle_financeiro.entities.Cliente; import java.util.List; - import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; diff --git a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java index 8bf1909..2dd62fe 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java @@ -1,11 +1,10 @@ package com.fatec.controle_financeiro.domain.cliente; -import com.fatec.controle_financeiro.entities.Cliente; -import org.springframework.beans.factory.annotation.Autowired; +//import com.fatec.controle_financeiro.entities.Cliente; +//import org.springframework.beans.factory.annotation.Autowired; +//import java.util.List; import org.springframework.stereotype.Service; -import java.util.List; - @Service public class ClienteService { /* @Autowired diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java index 86dbec7..1c168fc 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java @@ -1,7 +1,19 @@ package com.fatec.controle_financeiro.domain.contaspagar; - import com.fatec.controle_financeiro.entities.ContasPagar; + import org.springframework.data.jpa.repository.JpaRepository; public interface ContasPagarRepository extends JpaRepository { + // Busca por ID + + // Busca por cliente + + // Busca por data emissao + + // Busca por data de vencimento + + // Create + + // Delete + } \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java new file mode 100644 index 0000000..73176b1 --- /dev/null +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java @@ -0,0 +1,6 @@ +package com.fatec.controle_financeiro.domain.contaspagar; + +import org.springframework.stereotype.Service; + +@Service +public class ContasPagarService {} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java new file mode 100644 index 0000000..bdb728d --- /dev/null +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java @@ -0,0 +1,18 @@ +package com.fatec.controle_financeiro.domain.contasreceber; +import com.fatec.controle_financeiro.entities.ContasReceber; + +import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ContasReceberRepository extends JpaRepository { + // Busca por ID + // Busca por cliente + // Busca por data emissao + // Busca por data de vencimento + List findAllByName(String name); + + // Create + + // Delete + +} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java new file mode 100644 index 0000000..1b13479 --- /dev/null +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java @@ -0,0 +1,8 @@ +package com.fatec.controle_financeiro.domain.contasreceber; + +import org.springframework.stereotype.Service; + +@Service +public class ContasReceberService { + +} diff --git a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java index 539739d..c4040c5 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java @@ -1,9 +1,19 @@ package com.fatec.controle_financeiro.domain.fornecedor; +import com.fatec.controle_financeiro.entities.Fornecedor; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; - -import com.fatec.controle_financeiro.entities.Fornecedor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; public interface FornecedorRepository extends JpaRepository { - + // Busca por nome usando = + List findAllByName(String name); + + // Busca por nome usando LIKE %nameparam% + List findAllByNameContaining(String name); + + //// Busca por nome usando LIKE com query manual + @Query("SELECT c FROM Fornecedor c WHERE c.name LIKE %:name%") + List buscarFornecedoresPorNome(@Param("name") String name); } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java new file mode 100644 index 0000000..ac6a368 --- /dev/null +++ b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java @@ -0,0 +1,8 @@ +package com.fatec.controle_financeiro.domain.fornecedor; + +import org.springframework.stereotype.Service; + +@Service +public class FornecedorService { + +} diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java index a604ada..22cdf95 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java @@ -25,7 +25,7 @@ public class ContasPagar { @Column(name = "valor", precision = 12, scale = 2) private BigDecimal valor; - public void ContasPagar() {} + public void ContasPagar() {} // Constructor public Long getId() { return id; diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java new file mode 100644 index 0000000..3d85e73 --- /dev/null +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java @@ -0,0 +1,68 @@ +package com.fatec.controle_financeiro.entities; + +import jakarta.persistence.*; +import java.math.BigDecimal; +import java.time.LocalDate; + +@Entity +@Table(name = "contas_receber") +public class ContasReceber { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "emissao") + private LocalDate emissao; + + @Column(name = "vencimento") + private LocalDate vencimento; + + @ManyToOne + @JoinColumn(name = "cliente_id") + private Cliente cliente; + + @Column(name = "valor", precision = 12, scale = 2) + private BigDecimal valor; + + public void ContasReceber() {} // Constructor + + public Long getId(){ + return id; + } + + public void setId(Long id){ + this.id = id; + } + + public LocalDate getEmissao(){ + return emissao; + } + + public void setEmissao(LocalDate emissao){ + this.emissao = emissao; + } + + public LocalDate getVencimento(){ + return vencimento; + } + + public void setVencimento(LocalDate vencimento){ + this.vencimento = vencimento; + } + + public Cliente getCliente(){ + return cliente; + } + + public void setCliente(Cliente cliente){ + this.cliente = cliente; + } + + public BigDecimal getValor(){ + return valor; + } + + public void setValor(BigDecimal valor){ + this.valor = valor; + } +} diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/Exercicio1Controller.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java similarity index 98% rename from src/main/java/com/fatec/controle_financeiro/controllers/Exercicio1Controller.java rename to src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java index 1acd0e0..24049ee 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/Exercicio1Controller.java +++ b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java @@ -1,4 +1,4 @@ -package com.fatec.controle_financeiro.controllers; +package com.fatec.controle_financeiro.exercicios_controllers; import org.springframework.web.bind.annotation.GetMapping; diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ResponseAdviceController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java similarity index 95% rename from src/main/java/com/fatec/controle_financeiro/controllers/ResponseAdviceController.java rename to src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java index b0a073d..15bafc2 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ResponseAdviceController.java +++ b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java @@ -1,4 +1,4 @@ -package com.fatec.controle_financeiro.controllers; +package com.fatec.controle_financeiro.exercicios_controllers; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/UserController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java similarity index 98% rename from src/main/java/com/fatec/controle_financeiro/controllers/UserController.java rename to src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java index 8eab8d6..edbc87e 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/UserController.java +++ b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java @@ -1,4 +1,4 @@ -package com.fatec.controle_financeiro.controllers; +package com.fatec.controle_financeiro.exercicios_controllers; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/UsuarioController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java similarity index 97% rename from src/main/java/com/fatec/controle_financeiro/controllers/UsuarioController.java rename to src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java index 5bcb05b..21a993f 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/UsuarioController.java +++ b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java @@ -1,4 +1,4 @@ -package com.fatec.controle_financeiro.controllers; +package com.fatec.controle_financeiro.exercicios_controllers; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; From 2cbe8882e1b5d6345992c042de9bce5892c26264 Mon Sep 17 00:00:00 2001 From: "gabriel.rodrigues" Date: Mon, 4 Nov 2024 16:35:06 -0300 Subject: [PATCH 05/25] Removed irrelevant comments to declutter the code and reorganized code blocks for improved readability and maintainability --- .../controllers/ClienteController.java | 56 ++----------------- .../controllers/ContasReceberController.java | 1 - .../controllers/FornecedorController.java | 6 +- 3 files changed, 7 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java index 75f6900..fac91ac 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java @@ -24,28 +24,15 @@ public class ClienteController { private List clientes = new ArrayList<>(); private int proximoId = 1; - //CRUD = CREATE, READ, UPDATE E DELETE - //CREATE - @PostMapping() + @PostMapping("/registrar") public ResponseEntity create(@RequestBody Cliente cliente) { - - /*for (Cliente cli : clientes) { - if (cli.getName().equals(cliente.getName())) { - throw new IllegalArgumentException("ja existe nome"); - } - } - - cliente.setId(proximoId++); - clientes.add(cliente); - - return new ResponseEntity<>(cliente, HttpStatus.CREATED);*/ Cliente clienteCreated = clienteRepository.save(cliente); return new ResponseEntity<>(clienteCreated, HttpStatus.CREATED); } //READ - @GetMapping() + @GetMapping("/readAll") public ResponseEntity> getAllCliente() { //SELECT * FROM CLIENTES List clientes = clienteRepository.findAll(); @@ -53,17 +40,8 @@ public ResponseEntity> getAllCliente() { return new ResponseEntity<>(clientes, HttpStatus.OK); } - @GetMapping("{id}") + @GetMapping("/read/{id}") public ResponseEntity getById(@PathVariable int id) { - /*for (Cliente cliente : clientes) { - if (cliente.getId() == id) { - return new ResponseEntity<>(cliente, HttpStatus.OK); - } - } - // Se o cliente não for encontrado, retorna status 404 Not Found - return new ResponseEntity<>(HttpStatus.NOT_FOUND);*/ - - //select * from cliente where id = {id} Optional cliente = clienteRepository.findById(id); if (cliente.isPresent()) { return new ResponseEntity<>(cliente.get(), HttpStatus.OK); @@ -73,20 +51,8 @@ public ResponseEntity getById(@PathVariable int id) { } //UPDATE - @PutMapping("{id}") + @PutMapping("/update/{id}") public ResponseEntity updateCliente(@PathVariable int id, @RequestBody Cliente entity) { - // Percorre a lista de clientes para encontrar o cliente com o ID correspondente - /*for (Cliente cliente : clientes) { - if (cliente.getId() == id) { - // Se o cliente for encontrado, atualiza suas informações - cliente.setName(entity.getName()); - // Retorna o cliente atualizado com status 200 OK - return new ResponseEntity<>(cliente, HttpStatus.OK); - } - } - // Se o cliente não for encontrado, retorna status 404 Not Found - return new ResponseEntity<>(HttpStatus.NOT_FOUND);*/ - Optional clienteAtual = clienteRepository.findById(id); if (clienteAtual.isPresent()) { entity.setId(id); @@ -98,20 +64,8 @@ public ResponseEntity updateCliente(@PathVariable int id, @RequestBody } //DELETE - @DeleteMapping("/{id}") + @DeleteMapping("/delete/{id}") public ResponseEntity deleteCliente(@PathVariable int id) { - // Percorre a lista de clientes para encontrar o cliente com o ID correspondente - /*for (Cliente cliente : clientes) { - if (cliente.getId() == id) { - // Se o cliente for encontrado, remove-o da lista - clientes.remove(cliente); - // Retorna status 204 No Content - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - } - // Se o cliente não for encontrado, retorna status 404 Not Found - return new ResponseEntity<>(HttpStatus.NOT_FOUND);*/ - Optional clienteAtual = clienteRepository.findById(id); if (clienteAtual.isPresent()) { clienteRepository.deleteById(id); diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java index 3ca2893..e1d30ac 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java @@ -60,7 +60,6 @@ public ResponseEntity updateReceber(@PathVariable Long id, @Reque } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } - } // DELETE diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java b/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java index 020ae06..65fca9c 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java @@ -1,13 +1,13 @@ package com.fatec.controle_financeiro.controllers; - import com.fatec.controle_financeiro.domain.cliente.ClienteRepository; import com.fatec.controle_financeiro.domain.fornecedor.FornecedorRepository; import com.fatec.controle_financeiro.entities.Cliente; import com.fatec.controle_financeiro.entities.Fornecedor; + import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @@ -20,8 +20,6 @@ public class FornecedorController { @Autowired private FornecedorRepository fornecedorRepository; - - //CRUD = CREATE, READ, UPDATE E DELETE //CREATE @PostMapping() From 189950f96e15c7efe54b301c3f280fc8fb4474f2 Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Mon, 4 Nov 2024 23:22:53 -0300 Subject: [PATCH 06/25] Remove unnecessary comments to improve code readability --- .../fatec/controle_financeiro/entities/Cliente.java | 6 +----- .../controle_financeiro/entities/ContasReceber.java | 2 +- .../controle_financeiro/entities/Fornecedor.java | 6 +----- .../com/fatec/controle_financeiro/entities/User.java | 11 +---------- 4 files changed, 4 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java index 8f95e86..649560d 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java @@ -12,16 +12,13 @@ public class Cliente { @Column(nullable = false, length = 60) private String name; - // Construtor padrão - public Cliente() { - } + public Cliente() { } public Cliente(int id, String name) { this.id = id; this.name = name; } - // Getters e Setters public int getId() { return id; } public void setId(int id) { this.id = id; } @@ -33,5 +30,4 @@ public String getName() { public void setName(String name) { this.name = name; } - } diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java index 3d85e73..7858252 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java @@ -24,7 +24,7 @@ public class ContasReceber { @Column(name = "valor", precision = 12, scale = 2) private BigDecimal valor; - public void ContasReceber() {} // Constructor + public void ContasReceber() { } // Constructor public Long getId(){ return id; diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java b/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java index fc972e8..f15d5a1 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java @@ -12,16 +12,13 @@ public class Fornecedor { @Column(nullable = false, length = 60) private String name; - // Construtor padrão - public Fornecedor() { - } + public Fornecedor() { } public Fornecedor(int id, String name) { this.id = id; this.name = name; } - // Getters e Setters public int getId() { return id; } public void setId(int id) { this.id = id; } @@ -33,5 +30,4 @@ public String getName() { public void setName(String name) { this.name = name; } - } diff --git a/src/main/java/com/fatec/controle_financeiro/entities/User.java b/src/main/java/com/fatec/controle_financeiro/entities/User.java index 7e0380c..46fe65b 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/User.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/User.java @@ -9,20 +9,13 @@ public class User { @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; - //Desabilitar qdo quiser trabalhar com @Valid - //@NotBlank(message = "O nome não pode estar em branco.") @Column(nullable = false, length = 60) private String name; - //Desabilitar qdo quiser trabalhar com @Valid - //@NotNull(message = "A idade é obrigatória.") - //@Min(value = 0, message = "A idade não pode ser negativa.") @Column() private int age; - // Construtor padrão - public User() { - } + public User() { } public User(int id, String name, int age) { this.id = id; @@ -30,7 +23,6 @@ public User(int id, String name, int age) { this.age = age; } - // Getters e Setters public int getId() { return id; } public void setId(int id) { this.id = id; } @@ -50,5 +42,4 @@ public int getAge() { public void setAge(int age) { this.age = age; } - } From b7a55047e6d2f81087807fbae0d0e68782a48e2b Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 5 Nov 2024 00:16:27 -0300 Subject: [PATCH 07/25] Mapped API paths, updated README, and added endpoint documentation --- README.md | 4 ++ controle-financeiro.json | 1 + .../controllers/ClienteController.java | 11 +++-- .../controllers/ContasReceberController.java | 24 +++++------ .../controllers/FornecedorController.java | 17 ++++---- .../domain/cliente/ClienteRepository.java | 2 +- .../domain/cliente/ClienteService.java | 42 +------------------ .../contaspagar/ContasPagarRepository.java | 15 +------ .../contaspagar/ContasPagarService.java | 2 +- .../contasreceber/ContasReceberService.java | 4 +- .../domain/fornecedor/FornecedorService.java | 4 +- 11 files changed, 34 insertions(+), 92 deletions(-) create mode 100644 controle-financeiro.json diff --git a/README.md b/README.md index f3b8a5a..2cfd796 100644 --- a/README.md +++ b/README.md @@ -30,3 +30,7 @@ Este projeto visa fornecer uma plataforma simples e eficaz para o controle de cl 1. Clone o repositório: ```bash https://github.com/GabRodrigues23/controle-financeiro/tree/dev + +2. Importe os Endpoints no HoppScotch: + ```file + controle-financeiro.json diff --git a/controle-financeiro.json b/controle-financeiro.json new file mode 100644 index 0000000..1360178 --- /dev/null +++ b/controle-financeiro.json @@ -0,0 +1 @@ +{"v":4,"name":"controle-financeiro","folders":[{"v":4,"name":"Cliente","folders":[],"requests":[{"preRequestScript":"","headers":[],"body":{"body":"{\n \"nome\" : \"Gustavo\"\n}\n\n","contentType":"application/json"},"params":[],"v":"8","method":"POST","requestVariables":[],"testScript":"","endpoint":"http://localhost:8090/api/cliente/create","auth":{"authActive":true,"authType":"inherit"},"responses":{},"name":"Create"},{"v":"8","endpoint":"http://localhost:8090/api/cliente/read","name":"SelectAll","params":[],"headers":[],"method":"GET","auth":{"authType":"inherit","authActive":true},"preRequestScript":"","testScript":"","body":{"contentType":"application/json","body":"\n\n"},"requestVariables":[],"responses":{}},{"v":"8","endpoint":"http://localhost:8090/api/cliente/read/1","preRequestScript":"","headers":[],"method":"GET","responses":{},"testScript":"","requestVariables":[],"name":"SelectById","params":[],"body":{"body":"\n\n","contentType":"application/json"},"auth":{"authType":"inherit","authActive":true}},{"method":"PUT","preRequestScript":"","requestVariables":[],"testScript":"","body":{"body":"{\n \"nome\" : \"Gustavo Kravszenko\"\n}\n\n","contentType":"application/json"},"auth":{"authType":"inherit","authActive":true},"responses":{},"v":"8","endpoint":"http://localhost:8090/api/cliente/update/1","headers":[],"params":[],"name":"Update"},{"endpoint":"http://localhost:8090/api/cliente/delete/1","auth":{"authType":"inherit","authActive":true},"params":[],"requestVariables":[],"testScript":"","body":{"body":"\n\n","contentType":"application/json"},"preRequestScript":"","name":"Delete","method":"DELETE","v":"8","responses":{},"headers":[]}],"auth":{"authType":"inherit","authActive":true},"headers":[]},{"v":4,"name":"Fornecedor","folders":[],"requests":[{"headers":[],"name":"Create","v":"8","testScript":"","preRequestScript":"","params":[],"requestVariables":[],"endpoint":"http://localhost:8090/api/fornecedor/create","responses":{},"method":"POST","auth":{"authActive":true,"authType":"inherit"},"body":{"body":"{\n \"nome\" : \"Neemias Borges\"\n}\n\n","contentType":"application/json"}},{"auth":{"authType":"inherit","authActive":true},"v":"8","responses":{},"body":{"contentType":"application/json","body":""},"headers":[],"testScript":"","params":[],"endpoint":"http://localhost:8090/api/fornecedor/read","name":"SelectAll","preRequestScript":"","method":"GET","requestVariables":[]},{"headers":[],"testScript":"","preRequestScript":"","v":"8","responses":{},"method":"GET","auth":{"authActive":true,"authType":"inherit"},"name":"SelectById","params":[],"endpoint":"http://localhost:8090/api/fornecedor/read/1","body":{"body":"","contentType":"application/json"},"requestVariables":[]},{"body":{"contentType":"application/json","body":"{\n \"nome\" : \"Amanda Marino\"\n}\n\n"},"params":[],"method":"PUT","responses":{},"preRequestScript":"","requestVariables":[],"auth":{"authType":"inherit","authActive":true},"v":"8","name":"Update","testScript":"","headers":[],"endpoint":"http://localhost:8090/api/fornecedor/update/1"},{"method":"DELETE","headers":[],"v":"8","requestVariables":[],"params":[],"testScript":"","body":{"contentType":"application/json","body":""},"preRequestScript":"","endpoint":"http://localhost:8090/api/fornecedor/delete/1","auth":{"authActive":true,"authType":"inherit"},"name":"Delete","responses":{}}],"auth":{"authActive":true,"authType":"inherit"},"headers":[]},{"v":4,"name":"ContasPagar","folders":[],"requests":[{"body":{"contentType":"application/json","body":""},"responses":{},"method":"POST","requestVariables":[],"headers":[],"auth":{"authType":"inherit","authActive":true},"testScript":"","v":"8","params":[],"name":"Create","preRequestScript":"","endpoint":"http://localhost:8090/api/contaspagar/create"},{"auth":{"authType":"inherit","authActive":true},"v":"8","responses":{},"body":{"contentType":"application/json","body":""},"headers":[],"testScript":"","params":[],"endpoint":"http://localhost:8090/api/contaspagar/read","name":"SelectAll","preRequestScript":"","method":"GET","requestVariables":[]},{"body":{"contentType":"application/json","body":""},"params":[],"method":"GET","responses":{},"preRequestScript":"","requestVariables":[],"auth":{"authType":"inherit","authActive":true},"v":"8","name":"SelectById","testScript":"","headers":[],"endpoint":"http://localhost:8090/api/contaspagar/read/1"},{"body":{"contentType":"application/json","body":""},"params":[],"method":"PUT","responses":{},"preRequestScript":"","requestVariables":[],"auth":{"authType":"inherit","authActive":true},"v":"8","name":"Update","testScript":"","headers":[],"endpoint":"http://localhost:8090/api/contaspagar/update/1"},{"method":"DELETE","body":{"contentType":"application/json","body":""},"requestVariables":[],"auth":{"authActive":true,"authType":"inherit"},"responses":{},"headers":[],"v":"8","testScript":"","endpoint":"http://localhost:8090/api/contaspagar/delete/1","name":"Delete","params":[],"preRequestScript":""}],"auth":{"authType":"inherit","authActive":true},"headers":[]},{"v":4,"name":"ContasReceber","folders":[],"requests":[{"requestVariables":[],"params":[],"body":{"contentType":"application/json","body":""},"method":"POST","responses":{},"headers":[],"v":"8","preRequestScript":"","endpoint":"http://localhost:8090/api/contasreceber/create","name":"Create","testScript":"","auth":{"authType":"inherit","authActive":true}},{"auth":{"authType":"inherit","authActive":true},"v":"8","responses":{},"body":{"contentType":"application/json","body":""},"headers":[],"testScript":"","params":[],"endpoint":"http://localhost:8090/api/contasreceber/read","name":"SelectAll","preRequestScript":"","method":"GET","requestVariables":[]},{"body":{"contentType":"application/json","body":""},"params":[],"method":"GET","responses":{},"preRequestScript":"","requestVariables":[],"auth":{"authType":"inherit","authActive":true},"v":"8","name":"SelectById","testScript":"","headers":[],"endpoint":"http://localhost:8090/api/contasreceber/read/1"},{"body":{"contentType":"application/json","body":""},"params":[],"method":"PUT","responses":{},"preRequestScript":"","requestVariables":[],"auth":{"authType":"inherit","authActive":true},"v":"8","name":"Update","testScript":"","headers":[],"endpoint":"http://localhost:8090/api/contasreceber/update/1"},{"v":"8","preRequestScript":"","method":"DELETE","headers":[],"responses":{},"auth":{"authType":"inherit","authActive":true},"body":{"body":"","contentType":"application/json"},"params":[],"testScript":"","endpoint":"http://localhost:8090/api/contasreceber/delete/1","requestVariables":[],"name":"Delete"}],"auth":{"authActive":true,"authType":"inherit"},"headers":[]}],"requests":[],"auth":{"authType":"none","authActive":true},"headers":[]} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java index fac91ac..3504ddc 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java @@ -1,8 +1,6 @@ package com.fatec.controle_financeiro.controllers; -import com.fatec.controle_financeiro.entities.User; import com.fatec.controle_financeiro.entities.Cliente; import com.fatec.controle_financeiro.domain.cliente.ClienteRepository; -import com.fatec.controle_financeiro.domain.cliente.ClienteService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -25,21 +23,22 @@ public class ClienteController { private int proximoId = 1; //CREATE - @PostMapping("/registrar") + @PostMapping("/create") public ResponseEntity create(@RequestBody Cliente cliente) { Cliente clienteCreated = clienteRepository.save(cliente); return new ResponseEntity<>(clienteCreated, HttpStatus.CREATED); } //READ - @GetMapping("/readAll") + ///READ ALL + @GetMapping("/read") public ResponseEntity> getAllCliente() { //SELECT * FROM CLIENTES List clientes = clienteRepository.findAll(); return new ResponseEntity<>(clientes, HttpStatus.OK); } - + ///READ BY ID @GetMapping("/read/{id}") public ResponseEntity getById(@PathVariable int id) { Optional cliente = clienteRepository.findById(id); @@ -49,7 +48,7 @@ public ResponseEntity getById(@PathVariable int id) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } - + //UPDATE @PutMapping("/update/{id}") public ResponseEntity updateCliente(@PathVariable int id, @RequestBody Cliente entity) { diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java index e1d30ac..0fc3cf6 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java @@ -1,7 +1,6 @@ package com.fatec.controle_financeiro.controllers; import com.fatec.controle_financeiro.entities.ContasReceber; import com.fatec.controle_financeiro.domain.contasreceber.ContasReceberRepository; -import com.fatec.controle_financeiro.domain.contasreceber.ContasReceberService; import java.util.ArrayList; import java.util.List; @@ -13,8 +12,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; - - @RestController @RequestMapping("/api/contasreceber") public class ContasReceberController { @@ -25,21 +22,22 @@ public class ContasReceberController { private List receber = new ArrayList<>(); private int proximoId = 1; - // CREATE - @PostMapping() + //CREATE + @PostMapping("/create") public ResponseEntity create(@RequestBody ContasReceber receber){ ContasReceber receberCreated = receberRepository.save(receber); return new ResponseEntity<>(receberCreated, HttpStatus.CREATED); } - // READ (SELECT) - @GetMapping() + //READ + ///READ ALL + @GetMapping("/read") public ResponseEntity> getAllReceber(){ List contasReceber = receberRepository.findAll(); return new ResponseEntity<>(contasReceber, HttpStatus.OK); } - - @GetMapping("{id}") + ///READ BY ID + @GetMapping("/read/{id}") public ResponseEntity getById(@PathVariable Long id){ Optional receber = receberRepository.findById(id); if(receber.isPresent()){ @@ -49,8 +47,8 @@ public ResponseEntity getById(@PathVariable Long id){ } } - // UPDATE - @PutMapping("{id}") + //UPDATE + @PutMapping("/update/{id}") public ResponseEntity updateReceber(@PathVariable Long id, @RequestBody ContasReceber entity){ Optional receberAtual = receberRepository.findById(id); if(receberAtual.isPresent()){ @@ -62,8 +60,8 @@ public ResponseEntity updateReceber(@PathVariable Long id, @Reque } } - // DELETE - @DeleteMapping("/{id}") + //DELETE + @DeleteMapping("/delete/{id}") public ResponseEntity deleteReceber(@PathVariable Long id){ Optional receberAtual = receberRepository.findById(id); if (receberAtual.isPresent()) { diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java b/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java index 65fca9c..50259b7 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java @@ -1,7 +1,5 @@ package com.fatec.controle_financeiro.controllers; -import com.fatec.controle_financeiro.domain.cliente.ClienteRepository; import com.fatec.controle_financeiro.domain.fornecedor.FornecedorRepository; -import com.fatec.controle_financeiro.entities.Cliente; import com.fatec.controle_financeiro.entities.Fornecedor; import org.springframework.beans.factory.annotation.Autowired; @@ -9,7 +7,6 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -22,23 +19,23 @@ public class FornecedorController { private FornecedorRepository fornecedorRepository; //CREATE - @PostMapping() + @PostMapping("/create") public ResponseEntity create(@RequestBody Fornecedor fornecedor) { Fornecedor created = fornecedorRepository.save(fornecedor); return new ResponseEntity<>(created, HttpStatus.CREATED); } - //READ - @GetMapping() + ///READ ALL + @GetMapping("/read") public ResponseEntity> getAllFornecedor() { List fornecedores = fornecedorRepository.findAll(); return new ResponseEntity<>(fornecedores, HttpStatus.OK); } - - @GetMapping("{id}") + ///READ BY ID + @GetMapping("/read/{id}") public ResponseEntity getById(@PathVariable int id) { Optional fornecedor = fornecedorRepository.findById(id); if (fornecedor.isPresent()) { @@ -49,7 +46,7 @@ public ResponseEntity getById(@PathVariable int id) { } //UPDATE - @PutMapping("{id}") + @PutMapping("/update/{id}") public ResponseEntity updateFornecedor(@PathVariable int id, @RequestBody Fornecedor entity) { Optional fornecedorAtual = fornecedorRepository.findById(id); if (fornecedorAtual.isPresent()) { @@ -62,7 +59,7 @@ public ResponseEntity updateFornecedor(@PathVariable int id, @Reques } //DELETE - @DeleteMapping("/{id}") + @DeleteMapping("/delete/{id}") public ResponseEntity deleteFornecedor(@PathVariable int id) { Optional fornecedorAtual = fornecedorRepository.findById(id); if (fornecedorAtual.isPresent()) { diff --git a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java index a77aa63..5f71a7b 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java @@ -13,7 +13,7 @@ public interface ClienteRepository extends JpaRepository { // Busca por nome usando LIKE %nameparam% List findAllByNameContaining(String name); - //// Busca por nome usando LIKE com query manual + /// Busca por nome usando LIKE com query manual @Query("SELECT c FROM Cliente c WHERE c.name LIKE %:name%") List buscarClientesPorNome(@Param("name") String name); } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java index 2dd62fe..34c994b 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java @@ -1,47 +1,7 @@ package com.fatec.controle_financeiro.domain.cliente; -//import com.fatec.controle_financeiro.entities.Cliente; -//import org.springframework.beans.factory.annotation.Autowired; -//import java.util.List; import org.springframework.stereotype.Service; @Service -public class ClienteService { - /* @Autowired - private ClienteRepository clienteRepository; - - public List listarClientes() { - return clienteRepository.findAll(); - } - - public Cliente salvarCliente(Cliente cliente) { - return clienteRepository.save(cliente); - } - - public Cliente atualizarCliente(Long id, Cliente cliente) { - Cliente clienteCadastradoCliente = encontrarClientePorId(id); - - if (clienteCadastradoCliente == null) - { - return null; - } else { - clienteCadastradoCliente.setName(cliente.getName()); - return clienteRepository.save(clienteCadastradoCliente); - } - } - - public Cliente encontrarClientePorId(Long id) { - return clienteRepository.findById(id).orElse(null); - } - - public void deletarCliente(Long id) { - Cliente cliente = encontrarClientePorId(id); - - if(cliente == null) - throw new IllegalArgumentException("Cliente nao existe"); - - - clienteRepository.deleteById(id); - }*/ -} +public class ClienteService { } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java index 1c168fc..5979bd5 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java @@ -3,17 +3,4 @@ import org.springframework.data.jpa.repository.JpaRepository; -public interface ContasPagarRepository extends JpaRepository { - // Busca por ID - - // Busca por cliente - - // Busca por data emissao - - // Busca por data de vencimento - - // Create - - // Delete - -} \ No newline at end of file +public interface ContasPagarRepository extends JpaRepository { } \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java index 73176b1..8f183cc 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java @@ -3,4 +3,4 @@ import org.springframework.stereotype.Service; @Service -public class ContasPagarService {} \ No newline at end of file +public class ContasPagarService { } \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java index 1b13479..e889805 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java @@ -3,6 +3,4 @@ import org.springframework.stereotype.Service; @Service -public class ContasReceberService { - -} +public class ContasReceberService { } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java index ac6a368..5595c49 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java @@ -3,6 +3,4 @@ import org.springframework.stereotype.Service; @Service -public class FornecedorService { - -} +public class FornecedorService { } From 1435c87d30a3f691c0b2b2070f3b8df94137e54f Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 5 Nov 2024 00:47:45 -0300 Subject: [PATCH 08/25] Refactoring Contas a Receber --- .../controllers/ContasReceberController.java | 70 ++++++++----------- .../ContasReceberRepository.java | 14 +--- .../contasreceber/ContasReceberService.java | 44 +++++++++++- .../entities/ContasReceber.java | 20 +++++- 4 files changed, 92 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java index 0fc3cf6..bf19679 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java @@ -1,74 +1,64 @@ package com.fatec.controle_financeiro.controllers; import com.fatec.controle_financeiro.entities.ContasReceber; -import com.fatec.controle_financeiro.domain.contasreceber.ContasReceberRepository; +import com.fatec.controle_financeiro.domain.contasreceber.ContasReceberService; -import java.util.ArrayList; import java.util.List; -import java.util.Optional; import org.springframework.http.HttpStatus; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api/contasreceber") public class ContasReceberController { - - @Autowired - private ContasReceberRepository receberRepository; + private final ContasReceberService receberService; - private List receber = new ArrayList<>(); - private int proximoId = 1; + public ContasReceberController(ContasReceberService receberService) { + this.receberService = receberService; + } - //CREATE + // CREATE @PostMapping("/create") - public ResponseEntity create(@RequestBody ContasReceber receber){ - ContasReceber receberCreated = receberRepository.save(receber); + public ResponseEntity create(@RequestBody ContasReceber receber) { + ContasReceber receberCreated = receberService.create(receber); return new ResponseEntity<>(receberCreated, HttpStatus.CREATED); } - //READ - ///READ ALL + // READ ALL @GetMapping("/read") - public ResponseEntity> getAllReceber(){ - List contasReceber = receberRepository.findAll(); + public ResponseEntity> getAllReceber() { + List contasReceber = receberService.findAll(); return new ResponseEntity<>(contasReceber, HttpStatus.OK); } - ///READ BY ID + + // READ BY ID @GetMapping("/read/{id}") - public ResponseEntity getById(@PathVariable Long id){ - Optional receber = receberRepository.findById(id); - if(receber.isPresent()){ - return new ResponseEntity<>(receber.get(), HttpStatus.OK); - } else{ - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - } + public ResponseEntity getById(@PathVariable Long id) { + return receberService.findById(id) + .map(receber -> new ResponseEntity<>(receber, HttpStatus.OK)) + .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); } - //UPDATE + // UPDATE @PutMapping("/update/{id}") - public ResponseEntity updateReceber(@PathVariable Long id, @RequestBody ContasReceber entity){ - Optional receberAtual = receberRepository.findById(id); - if(receberAtual.isPresent()){ - entity.setId(id); - receberRepository.save(entity); - return new ResponseEntity<>(entity, HttpStatus.OK); - } else { + public ResponseEntity updateReceber(@PathVariable Long id, @RequestBody ContasReceber entity) { + try { + ContasReceber updated = receberService.update(id, entity); + return new ResponseEntity<>(updated, HttpStatus.OK); + } catch (IllegalArgumentException e) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } - //DELETE - @DeleteMapping("/delete/{id}") - public ResponseEntity deleteReceber(@PathVariable Long id){ - Optional receberAtual = receberRepository.findById(id); - if (receberAtual.isPresent()) { - receberRepository.deleteById(id); + // DELETE + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteReceber(@PathVariable Long id) { + try { + receberService.delete(id); return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } else{ + } catch (IllegalArgumentException e) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } - } + } } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java index bdb728d..ea9f07c 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java @@ -1,18 +1,6 @@ package com.fatec.controle_financeiro.domain.contasreceber; import com.fatec.controle_financeiro.entities.ContasReceber; -import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; -public interface ContasReceberRepository extends JpaRepository { - // Busca por ID - // Busca por cliente - // Busca por data emissao - // Busca por data de vencimento - List findAllByName(String name); - - // Create - - // Delete - -} \ No newline at end of file +public interface ContasReceberRepository extends JpaRepository { } \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java index e889805..d7772e5 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java @@ -1,6 +1,48 @@ package com.fatec.controle_financeiro.domain.contasreceber; +import com.fatec.controle_financeiro.entities.ContasReceber; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Optional; @Service -public class ContasReceberService { } +public class ContasReceberService { + + private final ContasReceberRepository contasReceberRepository; + + public ContasReceberService(ContasReceberRepository contasReceberRepository) { + this.contasReceberRepository = contasReceberRepository; + } + + @Transactional + public ContasReceber create(ContasReceber conta) { + return contasReceberRepository.save(conta); + } + + public List findAll() { + return contasReceberRepository.findAll(); + } + + public Optional findById(Long id) { + return contasReceberRepository.findById(id); + } + + @Transactional + public ContasReceber update(Long id, ContasReceber conta) { + if (!contasReceberRepository.existsById(id)) { + throw new IllegalArgumentException("Conta a receber não encontrada para o ID: " + id); + } + conta.setId(id); + return contasReceberRepository.save(conta); + } + + @Transactional + public void delete(Long id) { + if (!contasReceberRepository.existsById(id)) { + throw new IllegalArgumentException("Conta a receber não encontrada para o ID: " + id); + } + contasReceberRepository.deleteById(id); + } +} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java index 7858252..cfe4332 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java @@ -1,6 +1,9 @@ package com.fatec.controle_financeiro.entities; import jakarta.persistence.*; +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.NotNull; + import java.math.BigDecimal; import java.time.LocalDate; @@ -11,20 +14,25 @@ public class ContasReceber { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @NotNull(message = "A data de emissão é obrigatória.") @Column(name = "emissao") private LocalDate emissao; + @NotNull(message = "A data de vencimento é obrigatória.") @Column(name = "vencimento") private LocalDate vencimento; @ManyToOne - @JoinColumn(name = "cliente_id") + @JoinColumn(name = "cliente_id", nullable = false) + @NotNull(message = "O cliente é obrigatório.") private Cliente cliente; + @NotNull(message = "O valor é obrigatório.") + @DecimalMin(value = "0.01", inclusive = true, message = "O valor deve ser maior que zero.") @Column(name = "valor", precision = 12, scale = 2) private BigDecimal valor; - public void ContasReceber() { } // Constructor + public ContasReceber() { } // Constructor public Long getId(){ return id; @@ -65,4 +73,12 @@ public BigDecimal getValor(){ public void setValor(BigDecimal valor){ this.valor = valor; } + + @PrePersist + @PreUpdate + private void validarDatar(){ + if(emissao != null && vencimento != null && emissao.isAfter(vencimento)){ + throw new IllegalArgumentException("A data de emissão não pode ser posterior à data de vencimento."); + } + } } From e65e1f9ce20f85bfe8bb4a696548c8a0c638b1e9 Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 5 Nov 2024 01:43:38 -0300 Subject: [PATCH 09/25] Developing Contas a Pagar, Refactoring Contas a Receber and Update README.md --- README.md | 2 +- .../controllers/ContasPagarController.java | 59 +++++++++++++++++++ .../controllers/ContasReceberController.java | 4 +- .../contaspagar/ContasPagarService.java | 42 ++++++++++++- .../contasreceber/ContasReceberService.java | 6 +- .../entities/ContasPagar.java | 16 ++++- .../entities/ContasReceber.java | 5 +- 7 files changed, 122 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 2cfd796..325f168 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Este projeto visa fornecer uma plataforma simples e eficaz para o controle de cl 1. Clone o repositório: ```bash - https://github.com/GabRodrigues23/controle-financeiro/tree/dev + https://github.com/GabRodrigues23/controle-financeiro.git 2. Importe os Endpoints no HoppScotch: ```file diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java index e753d09..d2a64e8 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java @@ -1,5 +1,64 @@ package com.fatec.controle_financeiro.controllers; +import com.fatec.controle_financeiro.entities.ContasPagar; +import com.fatec.controle_financeiro.domain.contaspagar.ContasPagarService; +import java.util.List; + +import org.springframework.http.HttpStatus; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/contaspagar") public class ContasPagarController { + private final ContasPagarService pagarService; + + public ContasPagarController(ContasPagarService pagarService){ + this.pagarService = pagarService; + } + + // CREATE + @PostMapping("/create") + public ResponseEntity create(@RequestBody ContasPagar pagar) { + ContasPagar pagarCreated = pagarService.create(pagar); + return new ResponseEntity<>(pagarCreated, HttpStatus.CREATED); + } + + // READ ALL + @GetMapping("/read") + public ResponseEntity> getAllPagar() { + List contasPagar = pagarService.findAll(); + return new ResponseEntity<>(contasPagar, HttpStatus.OK); + } + // READ BY ID + @GetMapping("/read/{id}") + public ResponseEntity getById(@PathVariable Long id) { + return pagarService.findById(id) + .map(pagar -> new ResponseEntity<>(pagar, HttpStatus.OK)) + .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); + } + + // UPDATE + @PutMapping("/update/{id}") + public ResponseEntity updatePagar(@PathVariable Long id, @RequestBody ContasPagar entity) { + try { + ContasPagar updated = pagarService.update(id, entity); + return new ResponseEntity<>(updated, HttpStatus.OK); + } catch (IllegalArgumentException e) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + } + + // DELETE + @DeleteMapping("/delete/{id}") + public ResponseEntity deletePagar(@PathVariable Long id) { + try { + pagarService.delete(id); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } catch (IllegalArgumentException e) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + } } diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java index bf19679..49534a8 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java @@ -36,8 +36,8 @@ public ResponseEntity> getAllReceber() { @GetMapping("/read/{id}") public ResponseEntity getById(@PathVariable Long id) { return receberService.findById(id) - .map(receber -> new ResponseEntity<>(receber, HttpStatus.OK)) - .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); + .map(receber -> new ResponseEntity<>(receber, HttpStatus.OK)) + .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); } // UPDATE diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java index 8f183cc..b83549d 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java @@ -1,6 +1,46 @@ package com.fatec.controle_financeiro.domain.contaspagar; +import com.fatec.controle_financeiro.entities.ContasPagar; +import jakarta.transaction.Transactional; import org.springframework.stereotype.Service; +import java.util.*; @Service -public class ContasPagarService { } \ No newline at end of file +public class ContasPagarService { + + private final ContasPagarRepository contasPagarRepository; + + public ContasPagarService(ContasPagarRepository contasPagarRepository) { + this.contasPagarRepository = contasPagarRepository; + } + + @Transactional + public ContasPagar create(ContasPagar conta) { + return contasPagarRepository.save(conta); + } + + public List findAll() { + return contasPagarRepository.findAll(); + } + + public Optional findById(Long id){ + return contasPagarRepository.findById(id); + } + + @Transactional + public ContasPagar update(Long id, ContasPagar conta){ + if (!contasPagarRepository.existsById(id)) { + throw new IllegalArgumentException("Conta a pagar não encontrada para o ID: " + id); + } + conta.setId(id); + return contasPagarRepository.save(conta); + } + + @Transactional + public void delete(long id){ + if (!contasPagarRepository.existsById(id)) { + throw new IllegalArgumentException("Conta a pagar não encontrada para o ID: " + id); + } + contasPagarRepository.deleteById(id); + } +} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java index d7772e5..d5e2153 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java @@ -1,11 +1,9 @@ package com.fatec.controle_financeiro.domain.contasreceber; - import com.fatec.controle_financeiro.entities.ContasReceber; + import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.Optional; +import java.util.*; @Service public class ContasReceberService { diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java index 22cdf95..fc26b37 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java @@ -1,6 +1,7 @@ package com.fatec.controle_financeiro.entities; import jakarta.persistence.*; +import jakarta.validation.constraints.*; import java.math.BigDecimal; import java.time.LocalDate; @@ -12,20 +13,25 @@ public class ContasPagar { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @NotNull(message = "A data de emissão é obrigatória.") @Column(name = "emissao") private LocalDate emissao; + @NotNull(message = "A data de vencimento é obrigatória.") @Column(name = "vencimento") private LocalDate vencimento; @ManyToOne @JoinColumn(name = "fornecedor_id") + @NotNull(message = "O Fornecedor é obrigatório.") private Fornecedor fornecedor; + @NotNull(message = "O valor é obrigatório.") + @DecimalMin(value = "0.01", inclusive = true, message = "O valor deve ser maior que zero.") @Column(name = "valor", precision = 12, scale = 2) private BigDecimal valor; - public void ContasPagar() {} // Constructor + public ContasPagar() {} // Constructor public Long getId() { return id; @@ -66,4 +72,12 @@ public BigDecimal getValor() { public void setValor(BigDecimal valor) { this.valor = valor; } + + @PrePersist + @PreUpdate + private void validarData(){ + if(emissao != null && vencimento != null && emissao.isAfter(vencimento)){ + throw new IllegalArgumentException("A data de emissão não pode ser posterior à data de vencimento."); + } + } } diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java index cfe4332..1004e9a 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java @@ -1,8 +1,7 @@ package com.fatec.controle_financeiro.entities; import jakarta.persistence.*; -import jakarta.validation.constraints.DecimalMin; -import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.*; import java.math.BigDecimal; import java.time.LocalDate; @@ -76,7 +75,7 @@ public void setValor(BigDecimal valor){ @PrePersist @PreUpdate - private void validarDatar(){ + private void validarData(){ if(emissao != null && vencimento != null && emissao.isAfter(vencimento)){ throw new IllegalArgumentException("A data de emissão não pode ser posterior à data de vencimento."); } From e6c030411bd8b81f3954c062d1622b8a986d5c75 Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 5 Nov 2024 02:19:10 -0300 Subject: [PATCH 10/25] Refactored Fornecedor, Developed FornecedorService.java --- .../controllers/FornecedorController.java | 68 ++++++++----------- .../fornecedor/FornecedorRepository.java | 10 +-- .../domain/fornecedor/FornecedorService.java | 54 ++++++++++++++- .../entities/Fornecedor.java | 18 +++-- 4 files changed, 103 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java b/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java index 50259b7..35bbde8 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java @@ -1,71 +1,63 @@ package com.fatec.controle_financeiro.controllers; -import com.fatec.controle_financeiro.domain.fornecedor.FornecedorRepository; import com.fatec.controle_financeiro.entities.Fornecedor; +import com.fatec.controle_financeiro.domain.fornecedor.FornecedorService; + +import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import java.util.List; -import java.util.Optional; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api/fornecedor") public class FornecedorController { - - @Autowired - private FornecedorRepository fornecedorRepository; + private FornecedorService fornecedorService; - //CREATE + public FornecedorController(FornecedorService fornecedorService) { + this.fornecedorService = fornecedorService; + } + + // CREATE @PostMapping("/create") public ResponseEntity create(@RequestBody Fornecedor fornecedor) { - - Fornecedor created = fornecedorRepository.save(fornecedor); - return new ResponseEntity<>(created, HttpStatus.CREATED); + Fornecedor fornecedorCreated = fornecedorService.create(fornecedor); + return new ResponseEntity<>(fornecedorCreated, HttpStatus.CREATED); } - //READ - ///READ ALL + // READ ALL @GetMapping("/read") public ResponseEntity> getAllFornecedor() { - List fornecedores = fornecedorRepository.findAll(); - + List fornecedores = fornecedorService.findAll(); return new ResponseEntity<>(fornecedores, HttpStatus.OK); } - ///READ BY ID + // READ BY ID @GetMapping("/read/{id}") - public ResponseEntity getById(@PathVariable int id) { - Optional fornecedor = fornecedorRepository.findById(id); - if (fornecedor.isPresent()) { - return new ResponseEntity<>(fornecedor.get(), HttpStatus.OK); - } else { - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - } + public ResponseEntity getById(@PathVariable Long id) { + return fornecedorService.findById(id) + .map(fornecedor -> new ResponseEntity<>(fornecedor, HttpStatus.OK)) + .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); } - //UPDATE + // UPDATE @PutMapping("/update/{id}") - public ResponseEntity updateFornecedor(@PathVariable int id, @RequestBody Fornecedor entity) { - Optional fornecedorAtual = fornecedorRepository.findById(id); - if (fornecedorAtual.isPresent()) { - entity.setId(id); - fornecedorRepository.save(entity); - return new ResponseEntity<>(entity, HttpStatus.OK); - } else { + public ResponseEntity updateFornecedor(@PathVariable Long id, @RequestBody Fornecedor entity) { + try { + Fornecedor updated = fornecedorService.update(id, entity); + return new ResponseEntity<>(updated, HttpStatus.OK); + } catch (IllegalArgumentException e) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } //DELETE @DeleteMapping("/delete/{id}") - public ResponseEntity deleteFornecedor(@PathVariable int id) { - Optional fornecedorAtual = fornecedorRepository.findById(id); - if (fornecedorAtual.isPresent()) { - fornecedorRepository.deleteById(id); + public ResponseEntity deleteFornecedor(@PathVariable Long id) { + try { + fornecedorService.delete(id); return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } else { + } catch (IllegalArgumentException e) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java index c4040c5..80ffa89 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java @@ -2,18 +2,20 @@ import com.fatec.controle_financeiro.entities.Fornecedor; import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -public interface FornecedorRepository extends JpaRepository { +public interface FornecedorRepository extends JpaRepository{ // Busca por nome usando = List findAllByName(String name); - + // Busca por nome usando LIKE %nameparam% List findAllByNameContaining(String name); - + //// Busca por nome usando LIKE com query manual @Query("SELECT c FROM Fornecedor c WHERE c.name LIKE %:name%") List buscarFornecedoresPorNome(@Param("name") String name); -} + +} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java index 5595c49..a36da3d 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java @@ -1,6 +1,58 @@ package com.fatec.controle_financeiro.domain.fornecedor; +import com.fatec.controle_financeiro.entities.Fornecedor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.*; @Service -public class FornecedorService { } +public class FornecedorService { + + private final FornecedorRepository fornecedorRepository; + + public FornecedorService(FornecedorRepository fornecedorRepository) { + this.fornecedorRepository = fornecedorRepository; + } + + @Transactional + public Fornecedor create(Fornecedor forn) { + return fornecedorRepository.save(forn); + } + + public List findAll() { + return fornecedorRepository.findAll(); + } + + public Optional findById(Long id) { + return fornecedorRepository.findById(id); + } + + public List findAllByName(String name) { + return fornecedorRepository.findAllByName(name); + } + + public List findAllByNameContaining(String name) { + return fornecedorRepository.findAllByNameContaining(name); + } + + public List buscarFornecedoresPorNome(String name) { + return fornecedorRepository.buscarFornecedoresPorNome(name); + } + + @Transactional + public Fornecedor update(Long id, Fornecedor fornecedor){ + if(!fornecedorRepository.existsById(id)) { + throw new IllegalArgumentException("Fornecedor não encontrado com o ID: " + id); + } + fornecedor.setId(id); + return fornecedorRepository.save(fornecedor); + } + + @Transactional + public void delete(Long id){ + if(!fornecedorRepository.existsById(id)) { + throw new IllegalArgumentException("Fornecedor não encontrado com o ID: " + id); + } + fornecedorRepository.deleteById(id); + } +} diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java b/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java index f15d5a1..0cb8597 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java @@ -1,27 +1,37 @@ package com.fatec.controle_financeiro.entities; import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; +import java.util.List; @Entity @Table(name = "fornecedores") public class Fornecedor { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private int id; + private Long id; + @NotNull(message = "O nome do Fornecedor é obrigatório.") @Column(nullable = false, length = 60) private String name; + @OneToMany(mappedBy = "fornecedor") + private List contasPagar; + public Fornecedor() { } - public Fornecedor(int id, String name) { + public Fornecedor(Long id, String name) { this.id = id; this.name = name; } - public int getId() { return id; } + public Long getId() { + return id; + } - public void setId(int id) { this.id = id; } + public void setId(Long id) { + this.id = id; + } public String getName() { return name; From d68776315e6cea67e87b080824fe55a683e41128 Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 5 Nov 2024 02:32:21 -0300 Subject: [PATCH 11/25] Refactored Cliente, Developed ClienteService.java --- .../controllers/ClienteController.java | 74 ++++++++----------- .../controllers/FornecedorController.java | 5 +- .../domain/cliente/ClienteRepository.java | 2 +- .../domain/cliente/ClienteService.java | 53 ++++++++++++- .../domain/fornecedor/FornecedorService.java | 4 +- .../controle_financeiro/entities/Cliente.java | 16 +++- .../entities/Fornecedor.java | 4 +- 7 files changed, 100 insertions(+), 58 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java index 3504ddc..633e880 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java @@ -1,76 +1,62 @@ package com.fatec.controle_financeiro.controllers; import com.fatec.controle_financeiro.entities.Cliente; -import com.fatec.controle_financeiro.domain.cliente.ClienteRepository; +import com.fatec.controle_financeiro.domain.cliente.ClienteService; + +import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - - @RestController @RequestMapping("/api/cliente") public class ClienteController { + private ClienteService clienteService; - @Autowired - private ClienteRepository clienteRepository; - - private List clientes = new ArrayList<>(); - private int proximoId = 1; - - //CREATE + public ClienteController(ClienteService clienteService) { + this.clienteService = clienteService; + } + + // CREATE @PostMapping("/create") public ResponseEntity create(@RequestBody Cliente cliente) { - Cliente clienteCreated = clienteRepository.save(cliente); + Cliente clienteCreated = clienteService.create(cliente); return new ResponseEntity<>(clienteCreated, HttpStatus.CREATED); } - //READ - ///READ ALL + // READ ALL @GetMapping("/read") public ResponseEntity> getAllCliente() { - //SELECT * FROM CLIENTES - List clientes = clienteRepository.findAll(); - + List clientes = clienteService.findAll(); return new ResponseEntity<>(clientes, HttpStatus.OK); } - ///READ BY ID + // READ BY ID @GetMapping("/read/{id}") - public ResponseEntity getById(@PathVariable int id) { - Optional cliente = clienteRepository.findById(id); - if (cliente.isPresent()) { - return new ResponseEntity<>(cliente.get(), HttpStatus.OK); - } else { - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - } + public ResponseEntity getById(@PathVariable Long id) { + return clienteService.findById(id) + .map(cliente -> new ResponseEntity<>(cliente, HttpStatus.OK)) + .orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); } - //UPDATE + // UPDATE @PutMapping("/update/{id}") - public ResponseEntity updateCliente(@PathVariable int id, @RequestBody Cliente entity) { - Optional clienteAtual = clienteRepository.findById(id); - if (clienteAtual.isPresent()) { - entity.setId(id); - clienteRepository.save(entity); - return new ResponseEntity<>(entity, HttpStatus.OK); - } else { - return new ResponseEntity<>(HttpStatus.NOT_FOUND); + public ResponseEntity updateCliente(@PathVariable Long id, @RequestBody Cliente entity) { + try { + Cliente updated = clienteService.update(id, entity); + return new ResponseEntity<>(updated, HttpStatus.OK); + } catch (IllegalArgumentException e) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } - //DELETE + // DELETE @DeleteMapping("/delete/{id}") - public ResponseEntity deleteCliente(@PathVariable int id) { - Optional clienteAtual = clienteRepository.findById(id); - if (clienteAtual.isPresent()) { - clienteRepository.deleteById(id); + public ResponseEntity deleteCliente(@PathVariable Long id) { + try { + clienteService.delete(id); return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } else { + } catch (IllegalArgumentException e) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } -} +} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java b/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java index 35bbde8..1e3c4a0 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java @@ -9,7 +9,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; - @RestController @RequestMapping("/api/fornecedor") public class FornecedorController { @@ -51,7 +50,7 @@ public ResponseEntity updateFornecedor(@PathVariable Long id, @Reque } } - //DELETE + // DELETE @DeleteMapping("/delete/{id}") public ResponseEntity deleteFornecedor(@PathVariable Long id) { try { @@ -61,4 +60,4 @@ public ResponseEntity deleteFornecedor(@PathVariable Long id) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } -} +} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java index 5f71a7b..2a59194 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java @@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -public interface ClienteRepository extends JpaRepository { +public interface ClienteRepository extends JpaRepository { // Busca por nome usando = List findAllByName(String name); diff --git a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java index 34c994b..9f70d50 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java @@ -1,7 +1,58 @@ package com.fatec.controle_financeiro.domain.cliente; +import com.fatec.controle_financeiro.entities.Cliente; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.*; @Service -public class ClienteService { } +public class ClienteService { + private final ClienteRepository clienteRepository; + + public ClienteService(ClienteRepository clienteRepository) { + this.clienteRepository = clienteRepository; + } + + @Transactional + public Cliente create(Cliente cliente) { + return clienteRepository.save(cliente); + } + + public List findAll() { + return clienteRepository.findAll(); + } + + public Optional findById(Long id) { + return clienteRepository.findById(id); + } + + public List findAllByName(String name) { + return clienteRepository.findAllByName(name); + } + + public List findAllByNameContaining(String name) { + return clienteRepository.findAllByNameContaining(name); + } + + public List buscarClienteesPorNome(String name) { + return clienteRepository.buscarClientesPorNome(name); + } + + @Transactional + public Cliente update(Long id, Cliente Cliente){ + if(!clienteRepository.existsById(id)) { + throw new IllegalArgumentException("Cliente não encontrado com o ID: " + id); + } + Cliente.setId(id); + return clienteRepository.save(Cliente); + } + + @Transactional + public void delete(Long id){ + if(!clienteRepository.existsById(id)) { + throw new IllegalArgumentException("Cliente não encontrado com o ID: " + id); + } + clienteRepository.deleteById(id); + } +} diff --git a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java index a36da3d..cf2992a 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java @@ -15,8 +15,8 @@ public FornecedorService(FornecedorRepository fornecedorRepository) { } @Transactional - public Fornecedor create(Fornecedor forn) { - return fornecedorRepository.save(forn); + public Fornecedor create(Fornecedor fornecedor) { + return fornecedorRepository.save(fornecedor); } public List findAll() { diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java index 649560d..5e21e8e 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java @@ -1,27 +1,35 @@ package com.fatec.controle_financeiro.entities; import jakarta.persistence.*; +import java.util.List; @Entity @Table(name = "clientes") public class Cliente { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private int id; + private Long id; @Column(nullable = false, length = 60) private String name; + @OneToMany(mappedBy = "clientes") + private List ContasReceber; + public Cliente() { } - public Cliente(int id, String name) { + public Cliente(Long id, String name) { this.id = id; this.name = name; } - public int getId() { return id; } + public Long getId() { + return id; + } - public void setId(int id) { this.id = id; } + public void setId(Long id) { + this.id = id; + } public String getName() { return name; diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java b/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java index 0cb8597..96e4f0f 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java @@ -1,7 +1,6 @@ package com.fatec.controle_financeiro.entities; import jakarta.persistence.*; -import jakarta.validation.constraints.NotNull; import java.util.List; @Entity @@ -11,11 +10,10 @@ public class Fornecedor { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @NotNull(message = "O nome do Fornecedor é obrigatório.") @Column(nullable = false, length = 60) private String name; - @OneToMany(mappedBy = "fornecedor") + @OneToMany(mappedBy = "fornecedores") private List contasPagar; public Fornecedor() { } From c4a5dbedb0452641a4e6ff307607d4b60f4ad6be Mon Sep 17 00:00:00 2001 From: Fatec Date: Wed, 6 Nov 2024 20:38:19 -0300 Subject: [PATCH 12/25] Maintenance and Optimization --- pom.xml | 8 +++++++- .../com/fatec/controle_financeiro/config/WebConfig.java | 2 +- .../com/fatec/controle_financeiro/entities/Cliente.java | 4 ++-- .../fatec/controle_financeiro/entities/Fornecedor.java | 4 ++-- .../exercicios_controllers/UserController.java | 1 - .../exercicios_controllers/UsuarioController.java | 5 +---- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index e97a54d..7577986 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.3.2 + 3.3.5 com.fatec @@ -30,6 +30,12 @@ 17 + + + org.springframework.boot + spring-boot-starter-actuator + + org.springframework.boot spring-boot-starter-data-jpa diff --git a/src/main/java/com/fatec/controle_financeiro/config/WebConfig.java b/src/main/java/com/fatec/controle_financeiro/config/WebConfig.java index 215ba56..a25e612 100644 --- a/src/main/java/com/fatec/controle_financeiro/config/WebConfig.java +++ b/src/main/java/com/fatec/controle_financeiro/config/WebConfig.java @@ -7,7 +7,7 @@ @Configuration public class WebConfig implements WebMvcConfigurer { @Override - public void addCorsMappings(CorsRegistry registry) { + public void addCorsMappings(@SuppressWarnings("null") CorsRegistry registry) { registry.addMapping("/**") .allowedOriginPatterns("*") // Permite todas as origens .allowedMethods("*") diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java index 5e21e8e..367d09f 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java @@ -4,7 +4,7 @@ import java.util.List; @Entity -@Table(name = "clientes") +@Table(name = "cliente") public class Cliente { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -13,7 +13,7 @@ public class Cliente { @Column(nullable = false, length = 60) private String name; - @OneToMany(mappedBy = "clientes") + @OneToMany(mappedBy = "cliente") private List ContasReceber; public Cliente() { } diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java b/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java index 96e4f0f..1b8ce51 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java @@ -4,7 +4,7 @@ import java.util.List; @Entity -@Table(name = "fornecedores") +@Table(name = "fornecedor") public class Fornecedor { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -13,7 +13,7 @@ public class Fornecedor { @Column(nullable = false, length = 60) private String name; - @OneToMany(mappedBy = "fornecedores") + @OneToMany(mappedBy = "fornecedor") private List contasPagar; public Fornecedor() { } diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java index edbc87e..186d009 100644 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java +++ b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Optional; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java index 21a993f..e8dab3a 100644 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java +++ b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java @@ -1,12 +1,9 @@ package com.fatec.controle_financeiro.exercicios_controllers; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PatchMapping; + import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; From a8f06d1855069488d92d3fe53d07ee0ffbd3bbbe Mon Sep 17 00:00:00 2001 From: Fatec Date: Wed, 6 Nov 2024 21:31:11 -0300 Subject: [PATCH 13/25] update --- .../com/fatec/controle_financeiro/entities/ContasPagar.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java index fc26b37..d85823b 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java @@ -18,7 +18,7 @@ public class ContasPagar { private LocalDate emissao; @NotNull(message = "A data de vencimento é obrigatória.") - @Column(name = "vencimento") + @Column(name = "vencimento") private LocalDate vencimento; @ManyToOne From 9f405b3edfe37af986cc5cc958465a81d022a58c Mon Sep 17 00:00:00 2001 From: Fatec Date: Wed, 6 Nov 2024 22:04:34 -0300 Subject: [PATCH 14/25] test and update --- .../domain/contasreceber/ContasReceberService.java | 4 ++-- .../com/fatec/controle_financeiro/entities/ContasPagar.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java index d5e2153..66da870 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java @@ -15,8 +15,8 @@ public ContasReceberService(ContasReceberRepository contasReceberRepository) { } @Transactional - public ContasReceber create(ContasReceber conta) { - return contasReceberRepository.save(conta); + public ContasReceber create(ContasReceber receber) { + return contasReceberRepository.save(receber); } public List findAll() { diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java index d85823b..fc26b37 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java @@ -18,7 +18,7 @@ public class ContasPagar { private LocalDate emissao; @NotNull(message = "A data de vencimento é obrigatória.") - @Column(name = "vencimento") + @Column(name = "vencimento") private LocalDate vencimento; @ManyToOne From 3f856b105807172f90b2679ae3ffd3a21e23d3f3 Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Wed, 13 Nov 2024 22:17:07 -0300 Subject: [PATCH 15/25] moving User.java to optimaze code --- .../{entities => exercicios_controllers}/User.java | 0 .../exercicios_controllers/UsuarioController.java | 2 -- 2 files changed, 2 deletions(-) rename src/main/java/com/fatec/controle_financeiro/{entities => exercicios_controllers}/User.java (100%) diff --git a/src/main/java/com/fatec/controle_financeiro/entities/User.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/User.java similarity index 100% rename from src/main/java/com/fatec/controle_financeiro/entities/User.java rename to src/main/java/com/fatec/controle_financeiro/exercicios_controllers/User.java diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java index e8dab3a..99ebc9b 100644 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java +++ b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java @@ -8,8 +8,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.fatec.controle_financeiro.entities.User; - import jakarta.validation.Valid; From 5edd0022756bf8e864baf4f0ed3a359392ffcfc1 Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Wed, 13 Nov 2024 23:36:55 -0300 Subject: [PATCH 16/25] developing validation to emissao and vencimento --- .../domain/cliente/ClienteRepository.java | 15 +-------------- .../domain/cliente/ClienteService.java | 12 ------------ .../contaspagar/ContasPagarRepository.java | 11 ++++++++--- .../domain/contaspagar/ContasPagarService.java | 9 +++++++++ .../contasreceber/ContasReceberRepository.java | 7 ++++++- .../contasreceber/ContasReceberService.java | 9 +++++++++ .../domain/fornecedor/FornecedorRepository.java | 17 +---------------- .../domain/fornecedor/FornecedorService.java | 12 ------------ .../controle_financeiro/entities/Cliente.java | 3 +++ .../entities/ContasPagar.java | 7 ------- .../entities/ContasReceber.java | 8 -------- .../exercicios_controllers/User.java | 2 +- .../exercicios_controllers/UserController.java | 2 -- 13 files changed, 38 insertions(+), 76 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java index 2a59194..623a0cc 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteRepository.java @@ -1,19 +1,6 @@ package com.fatec.controle_financeiro.domain.cliente; import com.fatec.controle_financeiro.entities.Cliente; -import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; -public interface ClienteRepository extends JpaRepository { - // Busca por nome usando = - List findAllByName(String name); - - // Busca por nome usando LIKE %nameparam% - List findAllByNameContaining(String name); - - /// Busca por nome usando LIKE com query manual - @Query("SELECT c FROM Cliente c WHERE c.name LIKE %:name%") - List buscarClientesPorNome(@Param("name") String name); -} +public interface ClienteRepository extends JpaRepository { } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java index 9f70d50..3d99060 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java @@ -27,18 +27,6 @@ public Optional findById(Long id) { return clienteRepository.findById(id); } - public List findAllByName(String name) { - return clienteRepository.findAllByName(name); - } - - public List findAllByNameContaining(String name) { - return clienteRepository.findAllByNameContaining(name); - } - - public List buscarClienteesPorNome(String name) { - return clienteRepository.buscarClientesPorNome(name); - } - @Transactional public Cliente update(Long id, Cliente Cliente){ if(!clienteRepository.existsById(id)) { diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java index 5979bd5..7fa3c1c 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java @@ -1,6 +1,11 @@ package com.fatec.controle_financeiro.domain.contaspagar; -import com.fatec.controle_financeiro.entities.ContasPagar; - import org.springframework.data.jpa.repository.JpaRepository; -public interface ContasPagarRepository extends JpaRepository { } \ No newline at end of file +import java.time.LocalDate; +import java.util.Optional; + +import com.fatec.controle_financeiro.entities.ContasPagar; + +public interface ContasPagarRepository extends JpaRepository { + Optional findByDataEmissao(LocalDate emissao); +} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java index b83549d..602dada 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java @@ -3,6 +3,8 @@ import jakarta.transaction.Transactional; import org.springframework.stereotype.Service; + +import java.math.BigDecimal; import java.util.*; @Service @@ -16,6 +18,13 @@ public ContasPagarService(ContasPagarRepository contasPagarRepository) { @Transactional public ContasPagar create(ContasPagar conta) { + if (conta.getVencimento().isBefore(conta.getEmissao())) { + throw new IllegalArgumentException("A data de vencimento não pode ser menor que a data de emissão"); + } + BigDecimal valorZero = BigDecimal.ZERO; + if (conta.getValor().compareTo(valorZero) <= 0){ + throw new IllegalArgumentException("O valor não pode ser 0 ou menor."); + } return contasPagarRepository.save(conta); } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java index ea9f07c..40a2931 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java @@ -1,6 +1,11 @@ package com.fatec.controle_financeiro.domain.contasreceber; import com.fatec.controle_financeiro.entities.ContasReceber; +import java.time.LocalDate; +import java.util.Optional; + import org.springframework.data.jpa.repository.JpaRepository; -public interface ContasReceberRepository extends JpaRepository { } \ No newline at end of file +public interface ContasReceberRepository extends JpaRepository { + Optional findByDataEmissao(LocalDate emissao); +} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java index 66da870..d65c5c0 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java @@ -3,6 +3,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; import java.util.*; @Service @@ -16,6 +18,13 @@ public ContasReceberService(ContasReceberRepository contasReceberRepository) { @Transactional public ContasReceber create(ContasReceber receber) { + if(receber.getEmissao().isAfter(receber.getVencimento())){ + throw new IllegalArgumentException("A data de vencimento não pode ser menor que a data de emissão"); + } + BigDecimal valorZero = BigDecimal.ZERO; + if(receber.getValor().compareTo(valorZero) <= 0 ){ + throw new IllegalArgumentException("O valor não pode ser 0 ou menor."); + } return contasReceberRepository.save(receber); } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java index 80ffa89..4888329 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorRepository.java @@ -1,21 +1,6 @@ package com.fatec.controle_financeiro.domain.fornecedor; import com.fatec.controle_financeiro.entities.Fornecedor; -import java.util.List; - import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; - -public interface FornecedorRepository extends JpaRepository{ - // Busca por nome usando = - List findAllByName(String name); - - // Busca por nome usando LIKE %nameparam% - List findAllByNameContaining(String name); - - //// Busca por nome usando LIKE com query manual - @Query("SELECT c FROM Fornecedor c WHERE c.name LIKE %:name%") - List buscarFornecedoresPorNome(@Param("name") String name); -} \ No newline at end of file +public interface FornecedorRepository extends JpaRepository{ } \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java index cf2992a..f473e88 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java @@ -27,18 +27,6 @@ public Optional findById(Long id) { return fornecedorRepository.findById(id); } - public List findAllByName(String name) { - return fornecedorRepository.findAllByName(name); - } - - public List findAllByNameContaining(String name) { - return fornecedorRepository.findAllByNameContaining(name); - } - - public List buscarFornecedoresPorNome(String name) { - return fornecedorRepository.buscarFornecedoresPorNome(name); - } - @Transactional public Fornecedor update(Long id, Fornecedor fornecedor){ if(!fornecedorRepository.existsById(id)) { diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java index 367d09f..6fa045e 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java @@ -1,6 +1,8 @@ package com.fatec.controle_financeiro.entities; import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; + import java.util.List; @Entity @@ -10,6 +12,7 @@ public class Cliente { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @NotNull(message = "O nome do Cliente é obrigatório.") @Column(nullable = false, length = 60) private String name; diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java index fc26b37..1f90d4f 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java @@ -73,11 +73,4 @@ public void setValor(BigDecimal valor) { this.valor = valor; } - @PrePersist - @PreUpdate - private void validarData(){ - if(emissao != null && vencimento != null && emissao.isAfter(vencimento)){ - throw new IllegalArgumentException("A data de emissão não pode ser posterior à data de vencimento."); - } - } } diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java index 1004e9a..b495294 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java @@ -72,12 +72,4 @@ public BigDecimal getValor(){ public void setValor(BigDecimal valor){ this.valor = valor; } - - @PrePersist - @PreUpdate - private void validarData(){ - if(emissao != null && vencimento != null && emissao.isAfter(vencimento)){ - throw new IllegalArgumentException("A data de emissão não pode ser posterior à data de vencimento."); - } - } } diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/User.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/User.java index 46fe65b..bd67eeb 100644 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/User.java +++ b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/User.java @@ -1,4 +1,4 @@ -package com.fatec.controle_financeiro.entities; +package com.fatec.controle_financeiro.exercicios_controllers; import jakarta.persistence.*; diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java index 186d009..da2f515 100644 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java +++ b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java @@ -8,8 +8,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.fatec.controle_financeiro.entities.User; - import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.DeleteMapping; From d2de72fa3eaa28800699267c00979d865248eba1 Mon Sep 17 00:00:00 2001 From: "gabriel.rodrigues" Date: Tue, 26 Nov 2024 11:37:50 -0300 Subject: [PATCH 17/25] deleting exercicios_controllers --- .../Exercicio1Controller.java | 120 ------------------ .../ResponseAdviceController.java | 32 ----- .../UserController.java | 110 ---------------- .../UsuarioController.java | 59 --------- 4 files changed, 321 deletions(-) delete mode 100644 src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java delete mode 100644 src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java delete mode 100644 src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java delete mode 100644 src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java deleted file mode 100644 index 24049ee..0000000 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.fatec.controle_financeiro.exercicios_controllers; - - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -//http://localhost:8090/api/exercicios1 -@RestController -@RequestMapping("/api/exercicios1") -public class Exercicio1Controller { - - @GetMapping() - public String HelloWorld() { - return "Hello"; - } - - @GetMapping("/hello1") - public String HelloWorld1() { - return "Hello1"; - } - - //@PathVariable = anotacao para definir que a variavel nome que é do tipo String será recebida pelo - //parametro {nome} - @GetMapping("/reverter-nome/{nome}") - String reverterNome(@PathVariable String nome) { - return new StringBuilder(nome).reverse().toString(); - } - - //@RequestBody = anotacao defini que irei passar parametro no corpo da requisicao - //Só consigo passar no corpo da requisição se utilizar verbo POST (@PostMapping) - @PostMapping("/reverter-nome-requisicao-corpo") - String reverterNomeRequisicaoCorpo(@RequestBody String nome) { - return new StringBuilder(nome).reverse().toString(); - } - - ///api/exercicios1/2/par-ou-impar => @GetMapping("/{numero}/par-ou-impar") - ///api/exercicios1/par-ou-impar/2 => @GetMapping("/par-ou-impar/{numero}") - @GetMapping("/par-ou-impar/{numero}") - String verificarParOuImpar(@PathVariable Integer numero) { - if (numero % 2 == 0) { - return "Par"; - } else { - return "Ímpar"; - } - } - - //1 - @GetMapping("/contar-letras/{texto}") - @GetMapping("/contar-letras/{texto}") - String contarLetras(@PathVariable String texto) { - int contador = texto.length(); - return "O texto tem " + contador + " letras."; - } - - //2 - @GetMapping("/idade-com-parametro-tipo-integer/{paramIdade}") - //Idade < 12 => retorna "CRIANCA" - //Idade <= 18 => retorna "ADOLESCENTE" - //Idade <= 60 => retorna "ADULTO" - //Acima 60 => retorna "IDOSO" - //Idade invalida => retorna "idade invalida" - @GetMapping("/idade-com-parametro-tipo-integer/{paramIdade}") - String getIdadeComParametroTipoInteger(@PathVariable Integer paramIdade) { - try { - // Tenta converter a string para um BigInteger - int idade = paramIdade; - if (idade < 0){ - throw new NumberFormatException(); - } - - if (idade < 12) { - return "Crianca"; - } else if (idade <= 18) { - return "Adolescente"; - } else if (idade <= 60) { - return "Adulto"; - } else { - return "Idoso"; - } - } catch (NumberFormatException e) { - // Se a conversão falhar, significa que a string não é um número válido - return "idade invalida"; - } - } - - public static class User { - private String name; - private int age; - - // Construtor padrão - public User() { - } - - // Getters e Setters - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - } - - @PostMapping("/register") - public String registerUser(@RequestBody User user) { - return "Bem-vindo, " + user.getName() + "! Você tem " + user.getAge() + " anos."; - } - -} - diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java deleted file mode 100644 index 15bafc2..0000000 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.fatec.controle_financeiro.exercicios_controllers; - -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.FieldError; -import org.springframework.web.bind.MethodArgumentNotValidException; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -import java.util.HashMap; -import java.util.Map; - -@RestControllerAdvice -public class ResponseAdviceController { - - @ExceptionHandler(MethodArgumentNotValidException.class) - public ResponseEntity> handleValidationExceptions(MethodArgumentNotValidException ex) { - Map errors = new HashMap<>(); - ex.getBindingResult().getAllErrors().forEach((error) -> { - String fieldName = ((FieldError) error).getField(); - String errorMessage = error.getDefaultMessage(); - errors.put(fieldName, errorMessage); - }); - return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST); - } - - @ExceptionHandler(IllegalArgumentException.class) - public ResponseEntity handleIlegalArgument(IllegalArgumentException ex) { - return ResponseEntity.badRequest().body("Usuario inválido") ; - } - -} diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java deleted file mode 100644 index 186d009..0000000 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.fatec.controle_financeiro.exercicios_controllers; - -import java.util.ArrayList; -import java.util.List; - -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.fatec.controle_financeiro.entities.User; - -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PutMapping; - - - - -@RestController -@RequestMapping("/api/user") -public class UserController { - - private List usuarios = new ArrayList<>(); - private int proximoId = 1; - - //CRUD = CREATE, READ, UPDATE E DELETE - - //CREATE - @PostMapping() - public ResponseEntity createUse(@RequestBody User usuario) { - - for (User user : usuarios) { - if (user.getName().equals(usuario.getName())) { - throw new IllegalArgumentException("ja existe nome"); - } - } - - usuario.setId(proximoId++); - usuarios.add(usuario); - - return new ResponseEntity<>(usuario, HttpStatus.CREATED); - } - - - //READ - @GetMapping() - public ResponseEntity> getAllUser() { - return new ResponseEntity<>(usuarios, HttpStatus.OK); - } - - @GetMapping("{id}") - public ResponseEntity getById(@PathVariable int id) { - // Percorre a lista de usuários para encontrar o usuário com o ID correspondente - for (User user : usuarios) { - if (user.getId() == id) { - // Se o usuário for encontrado, retorna-o com status 200 OK - return new ResponseEntity<>(user, HttpStatus.OK); - } - } - // Se o usuário não for encontrado, retorna status 404 Not Found - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - } - - //UPDATE - @PutMapping("{id}") - public ResponseEntity updateUser(@PathVariable int id, @RequestBody User entity) { - // Percorre a lista de usuários para encontrar o usuário com o ID correspondente - for (User user : usuarios) { - if (user.getId() == id) { - // Se o usuário for encontrado, atualiza suas informações - user.setName(entity.getName()); - user.setAge(entity.getAge()); - // Retorna o usuário atualizado com status 200 OK - return new ResponseEntity<>(user, HttpStatus.OK); - } - } - // Se o usuário não for encontrado, retorna status 404 Not Found - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - } - - //DELETE - @DeleteMapping("/{id}") - public ResponseEntity deleteUser(@PathVariable int id) { - // Percorre a lista de usuários para encontrar o usuário com o ID correspondente - for (User user : usuarios) { - if (user.getId() == id) { - // Se o usuário for encontrado, remove-o da lista - usuarios.remove(user); - // Retorna status 204 No Content - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - } - // Se o usuário não for encontrado, retorna status 404 Not Found - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - - //Forma otimizada do codigo acima - /*Optional user = usuarios.stream().filter(u -> u.getId() == id).findFirst(); - if (user.isPresent()) { - usuarios.remove(user.get()); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } else { - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - }*/ - - } -} diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java deleted file mode 100644 index e8dab3a..0000000 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.fatec.controle_financeiro.exercicios_controllers; - -import org.springframework.http.ResponseEntity; - -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.fatec.controle_financeiro.entities.User; - -import jakarta.validation.Valid; - - -@RestController -@RequestMapping("/api/usuario") -public class UsuarioController { - - //http://localhost:/api/usuario/register - //POST - //Parametro: @RequestBody => enviar no corpo da requisicao (body) - - //@PostMapping => POST - CRIACAO / CONSULTAS COM PARAMETROS NO CORPO DA REQUISICAO - //@GetMapping => GET - CONSULTAS - //@PutMapping -> PUT - ALTERACAO - //@DeleteMapping -> DELETE - DELETAR - //@PatchMapping -> PATCH - ANEXAR/ALTERAR - - - @PostMapping("/register") - public ResponseEntity registerUser(@RequestBody User usuario) { - if (usuario.getName() == null || usuario.getName().trim().isEmpty()) { - return ResponseEntity.badRequest().body("Usuario inválido") ; - } - - if (usuario.getAge() <= 0) { - return ResponseEntity.badRequest().body("idade inválida") ; - } - - return ResponseEntity.ok("Bem-vindo, " + usuario.getName() + "! Você tem " + usuario.getAge() + " anos."); - } - - @PostMapping("/register2") - public ResponseEntity registerUserComIsValid(@Valid @RequestBody User usuario) { - - return ResponseEntity.ok("Bem-vindo, " + usuario.getName() + "! Você tem " + usuario.getAge() + " anos."); - } - - @PostMapping("/register/{name}/{age}") - public String registerUser2(@PathVariable String name, @PathVariable int age) { - - User usuario = new User(); - usuario.setName(name); - usuario.setAge(age); - - return "Bem-vindo, " + usuario.getName() + "! Você tem " + usuario.getAge() + " anos."; - } -} From 3c44c641035b8e4649f6d43eb991d53aa622f3dd Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 26 Nov 2024 19:13:31 -0300 Subject: [PATCH 18/25] updating validations --- .../controllers/ClienteController.java | 2 +- .../controllers/ContasReceberController.java | 15 ++- .../contaspagar/ContasPagarRepository.java | 6 +- .../ContasReceberRepository.java | 6 +- .../contasreceber/ContasReceberService.java | 10 +- .../entities/ContasPagar.java | 10 +- .../entities/ContasReceber.java | 14 +- .../Exercicio1Controller.java | 120 ------------------ .../ResponseAdviceController.java | 32 ----- .../exercicios_controllers/User.java | 45 ------- .../UserController.java | 108 ---------------- .../UsuarioController.java | 57 --------- 12 files changed, 37 insertions(+), 388 deletions(-) delete mode 100644 src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java delete mode 100644 src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java delete mode 100644 src/main/java/com/fatec/controle_financeiro/exercicios_controllers/User.java delete mode 100644 src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java delete mode 100644 src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java index 633e880..027ad6e 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java @@ -54,7 +54,7 @@ public ResponseEntity updateCliente(@PathVariable Long id, @RequestBody public ResponseEntity deleteCliente(@PathVariable Long id) { try { clienteService.delete(id); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); } catch (IllegalArgumentException e) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java index 49534a8..22c27cd 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java @@ -20,9 +20,18 @@ public ContasReceberController(ContasReceberService receberService) { // CREATE @PostMapping("/create") - public ResponseEntity create(@RequestBody ContasReceber receber) { - ContasReceber receberCreated = receberService.create(receber); - return new ResponseEntity<>(receberCreated, HttpStatus.CREATED); + public ResponseEntity create(@RequestBody ContasReceber receber) { + try { + ContasReceber receberCreated = receberService.create(receber); + return new ResponseEntity<>(receberCreated, HttpStatus.CREATED); + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Erro inesperado: " + ex.getMessage()); + } + + // ContasReceber receberCreated = receberService.create(receber); + // return new ResponseEntity<>(receberCreated, HttpStatus.CREATED); } // READ ALL diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java index 7fa3c1c..edaca8b 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java @@ -1,11 +1,11 @@ package com.fatec.controle_financeiro.domain.contaspagar; import org.springframework.data.jpa.repository.JpaRepository; -import java.time.LocalDate; -import java.util.Optional; +// import java.time.LocalDate; +// import java.util.Optional; import com.fatec.controle_financeiro.entities.ContasPagar; public interface ContasPagarRepository extends JpaRepository { - Optional findByDataEmissao(LocalDate emissao); + //Optional findByDataEmissao(LocalDate emissao); } \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java index 40a2931..eaf28e7 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java @@ -1,11 +1,11 @@ package com.fatec.controle_financeiro.domain.contasreceber; import com.fatec.controle_financeiro.entities.ContasReceber; -import java.time.LocalDate; -import java.util.Optional; +// import java.time.LocalDate; +// import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; public interface ContasReceberRepository extends JpaRepository { - Optional findByDataEmissao(LocalDate emissao); + //Optional findByDataEmissao(LocalDate emissao); } \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java index d65c5c0..fecd968 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java @@ -1,6 +1,8 @@ package com.fatec.controle_financeiro.domain.contasreceber; import com.fatec.controle_financeiro.entities.ContasReceber; +import ch.qos.logback.core.helpers.ThrowableToStringArray; + import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,15 +21,15 @@ public ContasReceberService(ContasReceberRepository contasReceberRepository) { @Transactional public ContasReceber create(ContasReceber receber) { if(receber.getEmissao().isAfter(receber.getVencimento())){ - throw new IllegalArgumentException("A data de vencimento não pode ser menor que a data de emissão"); + throw new IllegalArgumentException("A data de vencimento nao pode ser menor que a data de emissao"); } BigDecimal valorZero = BigDecimal.ZERO; if(receber.getValor().compareTo(valorZero) <= 0 ){ - throw new IllegalArgumentException("O valor não pode ser 0 ou menor."); + throw new IllegalArgumentException("O valor nao pode ser 0 ou menor."); } - return contasReceberRepository.save(receber); + return contasReceberRepository.save(receber); } - + public List findAll() { return contasReceberRepository.findAll(); } diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java index 1f90d4f..b77ddeb 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java @@ -14,21 +14,21 @@ public class ContasPagar { private Long id; @NotNull(message = "A data de emissão é obrigatória.") - @Column(name = "emissao") + @Column(name = "emissao", nullable = false) private LocalDate emissao; @NotNull(message = "A data de vencimento é obrigatória.") - @Column(name = "vencimento") + @Column(name = "vencimento", nullable = false) private LocalDate vencimento; @ManyToOne - @JoinColumn(name = "fornecedor_id") + @JoinColumn(name = "fornecedor_id", nullable = false) @NotNull(message = "O Fornecedor é obrigatório.") private Fornecedor fornecedor; @NotNull(message = "O valor é obrigatório.") - @DecimalMin(value = "0.01", inclusive = true, message = "O valor deve ser maior que zero.") - @Column(name = "valor", precision = 12, scale = 2) + @DecimalMin(value = "0.01", inclusive = true) + @Column(name = "valor", precision = 12, scale = 2, nullable = false) private BigDecimal valor; public ContasPagar() {} // Constructor diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java index b495294..8835441 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java @@ -13,22 +13,22 @@ public class ContasReceber { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @NotNull(message = "A data de emissão é obrigatória.") - @Column(name = "emissao") + @NotNull(message = "A data de emissão e obrigatoria.") + @Column(name = "emissao", nullable = false) private LocalDate emissao; - @NotNull(message = "A data de vencimento é obrigatória.") - @Column(name = "vencimento") + @NotNull(message = "A data de vencimento e obrigatoria.") + @Column(name = "vencimento", nullable = false) private LocalDate vencimento; @ManyToOne @JoinColumn(name = "cliente_id", nullable = false) - @NotNull(message = "O cliente é obrigatório.") + @NotNull(message = "O cliente e obrigatorio.") private Cliente cliente; - @NotNull(message = "O valor é obrigatório.") + @NotNull(message = "O valor e obrigatorio.") @DecimalMin(value = "0.01", inclusive = true, message = "O valor deve ser maior que zero.") - @Column(name = "valor", precision = 12, scale = 2) + @Column(name = "valor", precision = 12, scale = 2, nullable = false) private BigDecimal valor; public ContasReceber() { } // Constructor diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java deleted file mode 100644 index 24049ee..0000000 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/Exercicio1Controller.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.fatec.controle_financeiro.exercicios_controllers; - - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -//http://localhost:8090/api/exercicios1 -@RestController -@RequestMapping("/api/exercicios1") -public class Exercicio1Controller { - - @GetMapping() - public String HelloWorld() { - return "Hello"; - } - - @GetMapping("/hello1") - public String HelloWorld1() { - return "Hello1"; - } - - //@PathVariable = anotacao para definir que a variavel nome que é do tipo String será recebida pelo - //parametro {nome} - @GetMapping("/reverter-nome/{nome}") - String reverterNome(@PathVariable String nome) { - return new StringBuilder(nome).reverse().toString(); - } - - //@RequestBody = anotacao defini que irei passar parametro no corpo da requisicao - //Só consigo passar no corpo da requisição se utilizar verbo POST (@PostMapping) - @PostMapping("/reverter-nome-requisicao-corpo") - String reverterNomeRequisicaoCorpo(@RequestBody String nome) { - return new StringBuilder(nome).reverse().toString(); - } - - ///api/exercicios1/2/par-ou-impar => @GetMapping("/{numero}/par-ou-impar") - ///api/exercicios1/par-ou-impar/2 => @GetMapping("/par-ou-impar/{numero}") - @GetMapping("/par-ou-impar/{numero}") - String verificarParOuImpar(@PathVariable Integer numero) { - if (numero % 2 == 0) { - return "Par"; - } else { - return "Ímpar"; - } - } - - //1 - @GetMapping("/contar-letras/{texto}") - @GetMapping("/contar-letras/{texto}") - String contarLetras(@PathVariable String texto) { - int contador = texto.length(); - return "O texto tem " + contador + " letras."; - } - - //2 - @GetMapping("/idade-com-parametro-tipo-integer/{paramIdade}") - //Idade < 12 => retorna "CRIANCA" - //Idade <= 18 => retorna "ADOLESCENTE" - //Idade <= 60 => retorna "ADULTO" - //Acima 60 => retorna "IDOSO" - //Idade invalida => retorna "idade invalida" - @GetMapping("/idade-com-parametro-tipo-integer/{paramIdade}") - String getIdadeComParametroTipoInteger(@PathVariable Integer paramIdade) { - try { - // Tenta converter a string para um BigInteger - int idade = paramIdade; - if (idade < 0){ - throw new NumberFormatException(); - } - - if (idade < 12) { - return "Crianca"; - } else if (idade <= 18) { - return "Adolescente"; - } else if (idade <= 60) { - return "Adulto"; - } else { - return "Idoso"; - } - } catch (NumberFormatException e) { - // Se a conversão falhar, significa que a string não é um número válido - return "idade invalida"; - } - } - - public static class User { - private String name; - private int age; - - // Construtor padrão - public User() { - } - - // Getters e Setters - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - } - - @PostMapping("/register") - public String registerUser(@RequestBody User user) { - return "Bem-vindo, " + user.getName() + "! Você tem " + user.getAge() + " anos."; - } - -} - diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java deleted file mode 100644 index 15bafc2..0000000 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/ResponseAdviceController.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.fatec.controle_financeiro.exercicios_controllers; - -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.FieldError; -import org.springframework.web.bind.MethodArgumentNotValidException; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -import java.util.HashMap; -import java.util.Map; - -@RestControllerAdvice -public class ResponseAdviceController { - - @ExceptionHandler(MethodArgumentNotValidException.class) - public ResponseEntity> handleValidationExceptions(MethodArgumentNotValidException ex) { - Map errors = new HashMap<>(); - ex.getBindingResult().getAllErrors().forEach((error) -> { - String fieldName = ((FieldError) error).getField(); - String errorMessage = error.getDefaultMessage(); - errors.put(fieldName, errorMessage); - }); - return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST); - } - - @ExceptionHandler(IllegalArgumentException.class) - public ResponseEntity handleIlegalArgument(IllegalArgumentException ex) { - return ResponseEntity.badRequest().body("Usuario inválido") ; - } - -} diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/User.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/User.java deleted file mode 100644 index bd67eeb..0000000 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/User.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.fatec.controle_financeiro.exercicios_controllers; - -import jakarta.persistence.*; - -@Entity -@Table(name = "usuarios") -public class User { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private int id; - - @Column(nullable = false, length = 60) - private String name; - - @Column() - private int age; - - public User() { } - - public User(int id, String name, int age) { - this.id = id; - this.name = name; - this.age = age; - } - - public int getId() { return id; } - - public void setId(int id) { this.id = id; } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } -} diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java deleted file mode 100644 index da2f515..0000000 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UserController.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.fatec.controle_financeiro.exercicios_controllers; - -import java.util.ArrayList; -import java.util.List; - -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PutMapping; - - - - -@RestController -@RequestMapping("/api/user") -public class UserController { - - private List usuarios = new ArrayList<>(); - private int proximoId = 1; - - //CRUD = CREATE, READ, UPDATE E DELETE - - //CREATE - @PostMapping() - public ResponseEntity createUse(@RequestBody User usuario) { - - for (User user : usuarios) { - if (user.getName().equals(usuario.getName())) { - throw new IllegalArgumentException("ja existe nome"); - } - } - - usuario.setId(proximoId++); - usuarios.add(usuario); - - return new ResponseEntity<>(usuario, HttpStatus.CREATED); - } - - - //READ - @GetMapping() - public ResponseEntity> getAllUser() { - return new ResponseEntity<>(usuarios, HttpStatus.OK); - } - - @GetMapping("{id}") - public ResponseEntity getById(@PathVariable int id) { - // Percorre a lista de usuários para encontrar o usuário com o ID correspondente - for (User user : usuarios) { - if (user.getId() == id) { - // Se o usuário for encontrado, retorna-o com status 200 OK - return new ResponseEntity<>(user, HttpStatus.OK); - } - } - // Se o usuário não for encontrado, retorna status 404 Not Found - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - } - - //UPDATE - @PutMapping("{id}") - public ResponseEntity updateUser(@PathVariable int id, @RequestBody User entity) { - // Percorre a lista de usuários para encontrar o usuário com o ID correspondente - for (User user : usuarios) { - if (user.getId() == id) { - // Se o usuário for encontrado, atualiza suas informações - user.setName(entity.getName()); - user.setAge(entity.getAge()); - // Retorna o usuário atualizado com status 200 OK - return new ResponseEntity<>(user, HttpStatus.OK); - } - } - // Se o usuário não for encontrado, retorna status 404 Not Found - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - } - - //DELETE - @DeleteMapping("/{id}") - public ResponseEntity deleteUser(@PathVariable int id) { - // Percorre a lista de usuários para encontrar o usuário com o ID correspondente - for (User user : usuarios) { - if (user.getId() == id) { - // Se o usuário for encontrado, remove-o da lista - usuarios.remove(user); - // Retorna status 204 No Content - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - } - // Se o usuário não for encontrado, retorna status 404 Not Found - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - - //Forma otimizada do codigo acima - /*Optional user = usuarios.stream().filter(u -> u.getId() == id).findFirst(); - if (user.isPresent()) { - usuarios.remove(user.get()); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } else { - return new ResponseEntity<>(HttpStatus.NOT_FOUND); - }*/ - - } -} diff --git a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java b/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java deleted file mode 100644 index 99ebc9b..0000000 --- a/src/main/java/com/fatec/controle_financeiro/exercicios_controllers/UsuarioController.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.fatec.controle_financeiro.exercicios_controllers; - -import org.springframework.http.ResponseEntity; - -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import jakarta.validation.Valid; - - -@RestController -@RequestMapping("/api/usuario") -public class UsuarioController { - - //http://localhost:/api/usuario/register - //POST - //Parametro: @RequestBody => enviar no corpo da requisicao (body) - - //@PostMapping => POST - CRIACAO / CONSULTAS COM PARAMETROS NO CORPO DA REQUISICAO - //@GetMapping => GET - CONSULTAS - //@PutMapping -> PUT - ALTERACAO - //@DeleteMapping -> DELETE - DELETAR - //@PatchMapping -> PATCH - ANEXAR/ALTERAR - - - @PostMapping("/register") - public ResponseEntity registerUser(@RequestBody User usuario) { - if (usuario.getName() == null || usuario.getName().trim().isEmpty()) { - return ResponseEntity.badRequest().body("Usuario inválido") ; - } - - if (usuario.getAge() <= 0) { - return ResponseEntity.badRequest().body("idade inválida") ; - } - - return ResponseEntity.ok("Bem-vindo, " + usuario.getName() + "! Você tem " + usuario.getAge() + " anos."); - } - - @PostMapping("/register2") - public ResponseEntity registerUserComIsValid(@Valid @RequestBody User usuario) { - - return ResponseEntity.ok("Bem-vindo, " + usuario.getName() + "! Você tem " + usuario.getAge() + " anos."); - } - - @PostMapping("/register/{name}/{age}") - public String registerUser2(@PathVariable String name, @PathVariable int age) { - - User usuario = new User(); - usuario.setName(name); - usuario.setAge(age); - - return "Bem-vindo, " + usuario.getName() + "! Você tem " + usuario.getAge() + " anos."; - } -} From f90be463e8ff5f528578f992915f523cac35490b Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 26 Nov 2024 21:39:00 -0300 Subject: [PATCH 19/25] add validations to ContasReceber --- .../domain/contasreceber/ContasReceberService.java | 12 +++++++++--- .../controle_financeiro/entities/ContasReceber.java | 10 +++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java index fecd968..00e460c 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java @@ -20,12 +20,18 @@ public ContasReceberService(ContasReceberRepository contasReceberRepository) { @Transactional public ContasReceber create(ContasReceber receber) { + if(receber.getEmissao() == null || receber.getVencimento() == null){ + throw new IllegalArgumentException("As datas não podem ser vazias."); + } + if(receber.getCliente() == null){ + throw new IllegalArgumentException("O cliente não pode ser vazio."); + } if(receber.getEmissao().isAfter(receber.getVencimento())){ - throw new IllegalArgumentException("A data de vencimento nao pode ser menor que a data de emissao"); + throw new IllegalArgumentException("A data de vencimento nao pode ser menor que a data de emissao."); } BigDecimal valorZero = BigDecimal.ZERO; - if(receber.getValor().compareTo(valorZero) <= 0 ){ - throw new IllegalArgumentException("O valor nao pode ser 0 ou menor."); + if(receber.getValor().compareTo(valorZero) <= 0 || receber.getValor() == null){ + throw new IllegalArgumentException("Valor inválido, o valor deve ser superior à 0 e não pode ser vazio."); } return contasReceberRepository.save(receber); } diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java index 8835441..a0bbb34 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasReceber.java @@ -13,20 +13,20 @@ public class ContasReceber { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @NotNull(message = "A data de emissão e obrigatoria.") + @NotNull @Column(name = "emissao", nullable = false) private LocalDate emissao; - @NotNull(message = "A data de vencimento e obrigatoria.") + @NotNull @Column(name = "vencimento", nullable = false) private LocalDate vencimento; + @NotNull @ManyToOne @JoinColumn(name = "cliente_id", nullable = false) - @NotNull(message = "O cliente e obrigatorio.") private Cliente cliente; - @NotNull(message = "O valor e obrigatorio.") + @NotNull @DecimalMin(value = "0.01", inclusive = true, message = "O valor deve ser maior que zero.") @Column(name = "valor", precision = 12, scale = 2, nullable = false) private BigDecimal valor; @@ -72,4 +72,4 @@ public BigDecimal getValor(){ public void setValor(BigDecimal valor){ this.valor = valor; } -} +} \ No newline at end of file From d824f48affd5729d09f2f20e0dd55be3fbcde2c8 Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 26 Nov 2024 22:09:56 -0300 Subject: [PATCH 20/25] add validation to ContasPagar --- .../domain/contaspagar/ContasPagarService.java | 16 +++++++++++----- .../contasreceber/ContasReceberService.java | 2 -- .../entities/ContasPagar.java | 11 +++++------ 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java index 602dada..ba8745d 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java @@ -17,15 +17,21 @@ public ContasPagarService(ContasPagarRepository contasPagarRepository) { } @Transactional - public ContasPagar create(ContasPagar conta) { - if (conta.getVencimento().isBefore(conta.getEmissao())) { - throw new IllegalArgumentException("A data de vencimento não pode ser menor que a data de emissão"); + public ContasPagar create(ContasPagar pagar) { + if(pagar.getEmissao() == null || pagar.getVencimento() == null){ + throw new IllegalArgumentException("As datas não podem ser vazias."); + } + if(pagar.getFornecedor() == null){ + throw new IllegalArgumentException("O fornecedor não pode ser vazio."); + } + if(pagar.getEmissao().isAfter(pagar.getVencimento())){ + throw new IllegalArgumentException("A data de vencimento nao pode ser menor que a data de emissao."); } BigDecimal valorZero = BigDecimal.ZERO; - if (conta.getValor().compareTo(valorZero) <= 0){ + if (pagar.getValor().compareTo(valorZero) <= 0){ throw new IllegalArgumentException("O valor não pode ser 0 ou menor."); } - return contasPagarRepository.save(conta); + return contasPagarRepository.save(pagar); } public List findAll() { diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java index 00e460c..fbcc104 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java @@ -1,8 +1,6 @@ package com.fatec.controle_financeiro.domain.contasreceber; import com.fatec.controle_financeiro.entities.ContasReceber; -import ch.qos.logback.core.helpers.ThrowableToStringArray; - import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java index b77ddeb..b7ba4b2 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/ContasPagar.java @@ -13,20 +13,20 @@ public class ContasPagar { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @NotNull(message = "A data de emissão é obrigatória.") + @NotNull @Column(name = "emissao", nullable = false) private LocalDate emissao; - @NotNull(message = "A data de vencimento é obrigatória.") + @NotNull @Column(name = "vencimento", nullable = false) private LocalDate vencimento; + @NotNull @ManyToOne @JoinColumn(name = "fornecedor_id", nullable = false) - @NotNull(message = "O Fornecedor é obrigatório.") private Fornecedor fornecedor; - @NotNull(message = "O valor é obrigatório.") + @NotNull @DecimalMin(value = "0.01", inclusive = true) @Column(name = "valor", precision = 12, scale = 2, nullable = false) private BigDecimal valor; @@ -72,5 +72,4 @@ public BigDecimal getValor() { public void setValor(BigDecimal valor) { this.valor = valor; } - -} +} \ No newline at end of file From d5551b89fc24aa79ac3e46d426d82d71b685a00e Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 26 Nov 2024 22:24:55 -0300 Subject: [PATCH 21/25] add validations to Fornecedor --- .../controllers/ContasPagarController.java | 12 +++++++--- .../controllers/FornecedorController.java | 24 +++++++++++++------ .../contaspagar/ContasPagarRepository.java | 3 --- .../domain/fornecedor/FornecedorService.java | 5 +++- .../entities/Fornecedor.java | 9 ++++--- 5 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java index d2a64e8..dc1f9ce 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java @@ -20,9 +20,15 @@ public ContasPagarController(ContasPagarService pagarService){ // CREATE @PostMapping("/create") - public ResponseEntity create(@RequestBody ContasPagar pagar) { - ContasPagar pagarCreated = pagarService.create(pagar); - return new ResponseEntity<>(pagarCreated, HttpStatus.CREATED); + public ResponseEntity create(@RequestBody ContasPagar pagar) { + try { + ContasPagar pagarCreated = pagarService.create(pagar); + return new ResponseEntity<>(pagarCreated, HttpStatus.CREATED); + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Erro inesperado: " + ex.getMessage()); + } } // READ ALL diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java b/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java index 1e3c4a0..cc70c33 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/FornecedorController.java @@ -20,9 +20,15 @@ public FornecedorController(FornecedorService fornecedorService) { // CREATE @PostMapping("/create") - public ResponseEntity create(@RequestBody Fornecedor fornecedor) { - Fornecedor fornecedorCreated = fornecedorService.create(fornecedor); - return new ResponseEntity<>(fornecedorCreated, HttpStatus.CREATED); + public ResponseEntity create(@RequestBody Fornecedor fornecedor) { + try { + Fornecedor fornecedorCreated = fornecedorService.create(fornecedor); + return new ResponseEntity<>(fornecedorCreated, HttpStatus.CREATED); + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } } // READ ALL @@ -41,22 +47,26 @@ public ResponseEntity getById(@PathVariable Long id) { // UPDATE @PutMapping("/update/{id}") - public ResponseEntity updateFornecedor(@PathVariable Long id, @RequestBody Fornecedor entity) { + public ResponseEntity updateFornecedor(@PathVariable Long id, @RequestBody Fornecedor entity) { try { Fornecedor updated = fornecedorService.update(id, entity); return new ResponseEntity<>(updated, HttpStatus.OK); - } catch (IllegalArgumentException e) { + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex){ return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } // DELETE @DeleteMapping("/delete/{id}") - public ResponseEntity deleteFornecedor(@PathVariable Long id) { + public ResponseEntity deleteFornecedor(@PathVariable Long id) { try { fornecedorService.delete(id); return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } catch (IllegalArgumentException e) { + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex){ return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java index edaca8b..b6d7afb 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java @@ -1,9 +1,6 @@ package com.fatec.controle_financeiro.domain.contaspagar; import org.springframework.data.jpa.repository.JpaRepository; -// import java.time.LocalDate; -// import java.util.Optional; - import com.fatec.controle_financeiro.entities.ContasPagar; public interface ContasPagarRepository extends JpaRepository { diff --git a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java index f473e88..f1d3712 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/fornecedor/FornecedorService.java @@ -16,6 +16,9 @@ public FornecedorService(FornecedorRepository fornecedorRepository) { @Transactional public Fornecedor create(Fornecedor fornecedor) { + if (fornecedor.getName() == null) { + throw new IllegalArgumentException("Nome não pode ser vazio."); + } return fornecedorRepository.save(fornecedor); } @@ -43,4 +46,4 @@ public void delete(Long id){ } fornecedorRepository.deleteById(id); } -} +} \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java b/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java index 1b8ce51..a681adb 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Fornecedor.java @@ -3,6 +3,8 @@ import jakarta.persistence.*; import java.util.List; +import io.micrometer.common.lang.Nullable; + @Entity @Table(name = "fornecedor") public class Fornecedor { @@ -10,18 +12,19 @@ public class Fornecedor { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(nullable = false, length = 60) + @Nullable + @Column(length = 60) private String name; @OneToMany(mappedBy = "fornecedor") private List contasPagar; - public Fornecedor() { } + public Fornecedor() { } // Empty Constructor public Fornecedor(Long id, String name) { this.id = id; this.name = name; - } + } // Constructor public Long getId() { return id; From a3cf371f3801fb315ca59b0b747e975ae8b1aef8 Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 26 Nov 2024 22:28:51 -0300 Subject: [PATCH 22/25] refactoring validations to ContasPagar and ContasReceber --- .../controllers/ContasPagarController.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java index dc1f9ce..344ef48 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasPagarController.java @@ -48,22 +48,26 @@ public ResponseEntity getById(@PathVariable Long id) { // UPDATE @PutMapping("/update/{id}") - public ResponseEntity updatePagar(@PathVariable Long id, @RequestBody ContasPagar entity) { + public ResponseEntity updatePagar(@PathVariable Long id, @RequestBody ContasPagar entity) { try { ContasPagar updated = pagarService.update(id, entity); return new ResponseEntity<>(updated, HttpStatus.OK); - } catch (IllegalArgumentException e) { + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex){ return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } // DELETE @DeleteMapping("/delete/{id}") - public ResponseEntity deletePagar(@PathVariable Long id) { + public ResponseEntity deletePagar(@PathVariable Long id) { try { pagarService.delete(id); return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } catch (IllegalArgumentException e) { + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex){ return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } From 1466406f380bc054e65bfef3ce9c070a232ec07c Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 26 Nov 2024 22:34:22 -0300 Subject: [PATCH 23/25] Add validations to Cliente --- .../controllers/ClienteController.java | 26 +++++++++++++------ .../controllers/ContasReceberController.java | 15 ++++++----- .../controle_financeiro/entities/Cliente.java | 4 +-- 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java index 027ad6e..beb6645 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ClienteController.java @@ -19,9 +19,15 @@ public ClienteController(ClienteService clienteService) { // CREATE @PostMapping("/create") - public ResponseEntity create(@RequestBody Cliente cliente) { - Cliente clienteCreated = clienteService.create(cliente); - return new ResponseEntity<>(clienteCreated, HttpStatus.CREATED); + public ResponseEntity create(@RequestBody Cliente cliente) { + try { + Cliente clienteCreated = clienteService.create(cliente); + return new ResponseEntity<>(clienteCreated, HttpStatus.CREATED); + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex){ + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } } // READ ALL @@ -40,22 +46,26 @@ public ResponseEntity getById(@PathVariable Long id) { // UPDATE @PutMapping("/update/{id}") - public ResponseEntity updateCliente(@PathVariable Long id, @RequestBody Cliente entity) { + public ResponseEntity updateCliente(@PathVariable Long id, @RequestBody Cliente entity) { try { Cliente updated = clienteService.update(id, entity); return new ResponseEntity<>(updated, HttpStatus.OK); - } catch (IllegalArgumentException e) { + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex){ return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } // DELETE @DeleteMapping("/delete/{id}") - public ResponseEntity deleteCliente(@PathVariable Long id) { + public ResponseEntity deleteCliente(@PathVariable Long id) { try { clienteService.delete(id); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } catch (IllegalArgumentException e) { + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex){ return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } diff --git a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java index 22c27cd..7417252 100644 --- a/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java +++ b/src/main/java/com/fatec/controle_financeiro/controllers/ContasReceberController.java @@ -29,9 +29,6 @@ public ResponseEntity create(@RequestBody ContasReceber receber) { } catch (Exception ex) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Erro inesperado: " + ex.getMessage()); } - - // ContasReceber receberCreated = receberService.create(receber); - // return new ResponseEntity<>(receberCreated, HttpStatus.CREATED); } // READ ALL @@ -51,22 +48,26 @@ public ResponseEntity getById(@PathVariable Long id) { // UPDATE @PutMapping("/update/{id}") - public ResponseEntity updateReceber(@PathVariable Long id, @RequestBody ContasReceber entity) { + public ResponseEntity updateReceber(@PathVariable Long id, @RequestBody ContasReceber entity) { try { ContasReceber updated = receberService.update(id, entity); return new ResponseEntity<>(updated, HttpStatus.OK); - } catch (IllegalArgumentException e) { + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex){ return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } // DELETE @DeleteMapping("/delete/{id}") - public ResponseEntity deleteReceber(@PathVariable Long id) { + public ResponseEntity deleteReceber(@PathVariable Long id) { try { receberService.delete(id); return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } catch (IllegalArgumentException e) { + } catch (IllegalArgumentException ex) { + return ResponseEntity.badRequest().body(ex.getMessage()); + } catch (Exception ex){ return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java index 6fa045e..9c036c4 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java @@ -12,7 +12,7 @@ public class Cliente { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @NotNull(message = "O nome do Cliente é obrigatório.") + @NotNull @Column(nullable = false, length = 60) private String name; @@ -41,4 +41,4 @@ public String getName() { public void setName(String name) { this.name = name; } -} +} \ No newline at end of file From 8f151da9d03bc7f99cd0c379927ee02c77f96caa Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 26 Nov 2024 22:35:16 -0300 Subject: [PATCH 24/25] Add validations to Cliente --- .../controle_financeiro/domain/cliente/ClienteService.java | 3 +++ .../java/com/fatec/controle_financeiro/entities/Cliente.java | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java index 3d99060..5a0baee 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/cliente/ClienteService.java @@ -16,6 +16,9 @@ public ClienteService(ClienteRepository clienteRepository) { @Transactional public Cliente create(Cliente cliente) { + if (cliente.getName() == null) { + throw new IllegalArgumentException("Nome não pode ser vazio."); + } return clienteRepository.save(cliente); } diff --git a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java index 9c036c4..2fe3c2c 100644 --- a/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java +++ b/src/main/java/com/fatec/controle_financeiro/entities/Cliente.java @@ -19,12 +19,12 @@ public class Cliente { @OneToMany(mappedBy = "cliente") private List ContasReceber; - public Cliente() { } + public Cliente() { } // Empty Constructor public Cliente(Long id, String name) { this.id = id; this.name = name; - } + } // Constructor public Long getId() { return id; From 6df19a81d0591989b86599bc9be44a0f6656afcd Mon Sep 17 00:00:00 2001 From: GabRodrigues23 Date: Tue, 26 Nov 2024 22:38:29 -0300 Subject: [PATCH 25/25] Deleting unusable comments and correcting grammar --- .../domain/contaspagar/ContasPagarRepository.java | 4 +--- .../domain/contaspagar/ContasPagarService.java | 6 +++--- .../domain/contasreceber/ContasReceberRepository.java | 7 +------ .../domain/contasreceber/ContasReceberService.java | 2 +- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java index b6d7afb..230adb4 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarRepository.java @@ -3,6 +3,4 @@ import com.fatec.controle_financeiro.entities.ContasPagar; -public interface ContasPagarRepository extends JpaRepository { - //Optional findByDataEmissao(LocalDate emissao); -} \ No newline at end of file +public interface ContasPagarRepository extends JpaRepository { } \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java index ba8745d..d639bb9 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contaspagar/ContasPagarService.java @@ -25,11 +25,11 @@ public ContasPagar create(ContasPagar pagar) { throw new IllegalArgumentException("O fornecedor não pode ser vazio."); } if(pagar.getEmissao().isAfter(pagar.getVencimento())){ - throw new IllegalArgumentException("A data de vencimento nao pode ser menor que a data de emissao."); + throw new IllegalArgumentException("A data de vencimento não pode ser menor que a data de emissão."); } BigDecimal valorZero = BigDecimal.ZERO; - if (pagar.getValor().compareTo(valorZero) <= 0){ - throw new IllegalArgumentException("O valor não pode ser 0 ou menor."); + if(pagar.getValor().compareTo(valorZero) <= 0 || pagar.getValor() == null){ + throw new IllegalArgumentException("Valor inválido, o valor deve ser superior à 0 e não pode ser vazio."); } return contasPagarRepository.save(pagar); } diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java index eaf28e7..ea9f07c 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberRepository.java @@ -1,11 +1,6 @@ package com.fatec.controle_financeiro.domain.contasreceber; import com.fatec.controle_financeiro.entities.ContasReceber; -// import java.time.LocalDate; -// import java.util.Optional; - import org.springframework.data.jpa.repository.JpaRepository; -public interface ContasReceberRepository extends JpaRepository { - //Optional findByDataEmissao(LocalDate emissao); -} \ No newline at end of file +public interface ContasReceberRepository extends JpaRepository { } \ No newline at end of file diff --git a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java index fbcc104..e442b57 100644 --- a/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java +++ b/src/main/java/com/fatec/controle_financeiro/domain/contasreceber/ContasReceberService.java @@ -25,7 +25,7 @@ public ContasReceber create(ContasReceber receber) { throw new IllegalArgumentException("O cliente não pode ser vazio."); } if(receber.getEmissao().isAfter(receber.getVencimento())){ - throw new IllegalArgumentException("A data de vencimento nao pode ser menor que a data de emissao."); + throw new IllegalArgumentException("A data de vencimento não pode ser menor que a data de emissão."); } BigDecimal valorZero = BigDecimal.ZERO; if(receber.getValor().compareTo(valorZero) <= 0 || receber.getValor() == null){