Skip to content

Commit 1c0eace

Browse files
Refatorando para simplificar a aplicação: -Removido DetalheGastosDTO. - Ajustado metodo para buscar apenas gastos dos ultimos 5 segundos sem paginação
1 parent 6cf4d1d commit 1c0eace

File tree

5 files changed

+44
-60
lines changed

5 files changed

+44
-60
lines changed

testeSantanderWay/src/main/java/br/com/testesantanderway/controller/GastoController.java

Lines changed: 14 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
import br.com.testesantanderway.config.security.AutenticacaoViaTokenFilter;
44
import br.com.testesantanderway.config.security.ServicoDeToken;
55
import br.com.testesantanderway.controller.form.GastoForm;
6-
import br.com.testesantanderway.dto.DetalheGastosDTO;
7-
import br.com.testesantanderway.dto.GastosDTO;
6+
import br.com.testesantanderway.dto.GastoDTO;
87
import br.com.testesantanderway.modelo.Gasto;
98
import br.com.testesantanderway.repository.GastoRepository;
109
import br.com.testesantanderway.service.GastoService;
@@ -18,7 +17,8 @@
1817
import org.springframework.web.bind.annotation.*;
1918

2019
import javax.servlet.http.HttpServletRequest;
21-
import java.util.Optional;
20+
import java.time.LocalDateTime;
21+
import java.util.List;
2222

2323
@RestController
2424
@RequestMapping("/gastos")
@@ -33,20 +33,11 @@ public class GastoController {
3333
private GastoService gastoService;
3434

3535
@GetMapping
36-
@Cacheable(value = "gastoDeCliente")
37-
public Page<GastosDTO> listagemDeGastos(@RequestParam(required = false) String descricao,
38-
@PageableDefault(sort = "codigoCliente",
39-
direction = Sort.Direction.ASC) Pageable paginacao) {
40-
41-
if (descricao == null || descricao.isEmpty()) {
42-
Page<Gasto> gastos = gastoRepository.findAll(paginacao);
43-
44-
return GastosDTO.converter(gastos);
45-
} else {
46-
Page<Gasto> gastos = gastoRepository.findByCategoria(descricao, paginacao);
47-
48-
return GastosDTO.converter(gastos);
49-
}
36+
public Page<GastoDTO> listagemDeGastos(HttpServletRequest request) {
37+
String codigoUsuario = servicoDeToken.getCodigo(AutenticacaoViaTokenFilter.recuperarToken(request));
38+
LocalDateTime ultimosCincoSegundos = LocalDateTime.now().minusSeconds(5);
39+
List<Gasto> gastos = gastoRepository.findByCodigoUsuarioAndDataCriacaoAfter(codigoUsuario, ultimosCincoSegundos);
40+
return GastoDTO.converter(gastos);
5041
}
5142

5243
//TODO permitir apenas SISTEMA lançar gasto
@@ -57,24 +48,20 @@ public ResponseEntity lancarGastosCartao(HttpServletRequest request, @RequestBod
5748
return ResponseEntity.ok().build();
5849
}
5950

51+
@Cacheable("gastoUsuario")
6052
@GetMapping("/{dataCriacao}")
61-
public ResponseEntity<DetalheGastosDTO> listagemDeGastosPorData(@PathVariable String dataCriacao) {
62-
Optional<Gasto> gasto = gastoRepository.findByDataCriacao(dataCriacao);
63-
64-
if (gasto.isPresent()) {
65-
return ResponseEntity.ok(new DetalheGastosDTO(gasto.get()));
66-
}
67-
68-
return ResponseEntity.notFound().build();
53+
public Page<GastoDTO> listagemDeGastosPorData(@PathVariable String dataCriacao, @PageableDefault(sort = "dataCriacao", direction = Sort.Direction.DESC) Pageable paginacao) {
54+
Page<Gasto> gastos = gastoRepository.findByDataCriacao(dataCriacao, paginacao);
55+
return GastoDTO.converter(gastos);
6956
}
7057

7158
// @PostMapping("/{categorizaGasto}")
72-
// public ResponseEntity<GastosDTO> categorizarGastos(@RequestBody CategoriaForm form, UriComponentsBuilder uriBuilder) {
59+
// public ResponseEntity<GastoDTO> categorizarGastos(@RequestBody CategoriaForm form, UriComponentsBuilder uriBuilder) {
7360
// Gasto categoriaCadastro = form.converter();
7461
// gastoRepository.save(categoriaCadastro);
7562
// URI uri = uriBuilder.path("/{id}").buildAndExpand(categoriaCadastro.getCodigo()).toUri();
7663
//
77-
// return ResponseEntity.created(uri).body(new GastosDTO(categoriaCadastro));
64+
// return ResponseEntity.created(uri).body(new GastoDTO(categoriaCadastro));
7865
// }
7966

8067
}

testeSantanderWay/src/main/java/br/com/testesantanderway/dto/DetalheGastosDTO.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

testeSantanderWay/src/main/java/br/com/testesantanderway/dto/GastosDTO.java renamed to testeSantanderWay/src/main/java/br/com/testesantanderway/dto/GastoDTO.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,22 @@
22

33
import br.com.testesantanderway.modelo.Gasto;
44
import org.springframework.data.domain.Page;
5+
56
import java.time.LocalDateTime;
7+
import java.util.List;
8+
import java.util.stream.Collectors;
69

7-
public class GastosDTO {
10+
public class GastoDTO {
811
private LocalDateTime dataCriacao;
912
private String descricao;
1013
private Double valor;
14+
private String categoria;
1115

12-
public GastosDTO(Gasto gasto) {
16+
public GastoDTO(Gasto gasto) {
1317
this.dataCriacao = gasto.getDataCriacao();
14-
this.descricao = gasto.getCategoria();
18+
this.descricao = gasto.getDescricao();
1519
this.valor = gasto.getValor();
20+
this.categoria = gasto.getCategoria();
1621
}
1722

1823
public LocalDateTime getDataCriacao() {
@@ -39,7 +44,19 @@ public void setValor(Double valor) {
3944
this.valor = valor;
4045
}
4146

42-
public static Page<GastosDTO> converter(Page<Gasto> gastos) {
43-
return gastos.map(GastosDTO::new);
47+
public String getCategoria() {
48+
return categoria;
49+
}
50+
51+
public void setCategoria(String categoria) {
52+
this.categoria = categoria;
53+
}
54+
55+
public static List<GastoDTO> converterLista(List<Gasto> gastos) {
56+
return gastos.stream().map(GastoDTO::new).collect(Collectors.toList());
57+
}
58+
59+
public static Page<GastoDTO> converterPagina(Page<Gasto> gastos) {
60+
return gastos.map(GastoDTO::new);
4461
}
4562
}

testeSantanderWay/src/main/java/br/com/testesantanderway/repository/GastoRepository.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@
55
import org.springframework.data.domain.Pageable;
66
import org.springframework.data.solr.repository.SolrCrudRepository;
77

8+
import java.time.LocalDateTime;
9+
import java.util.List;
810
import java.util.Optional;
911

1012
public interface GastoRepository extends SolrCrudRepository<Gasto, String>{
11-
Page<Gasto> findByCategoria(String categoria, Pageable paginacao);
12-
Optional<Gasto> findByDataCriacao(String data);
13+
List<Gasto> findByCodigoUsuarioAndDataCriacaoAfter(String codigoUsuario, LocalDateTime dataCriacao);
14+
15+
Page<Gasto> findByDataCriacao(String data, Pageable paginacao);
16+
1317
Optional<String> findCategoriaByDescricao(String descricao);
1418
}

testeSantanderWay/src/test/java/br/com/testesantanderway/config/TesteGasto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,6 @@ public void testarLancamentoDeGasto(){
3535
service.lancarGastosCartao(this.gasto);
3636
}
3737

38+
//TODO testar categorizacao automatica
39+
3840
}

0 commit comments

Comments
 (0)