Skip to content

Commit baf95fd

Browse files
Criacao de lancamento de gasto e busca de gasto por data
1 parent 25c0ddb commit baf95fd

21 files changed

+324
-31
lines changed

testeSantanderWay/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@
5353
<artifactId>spring-boot-starter-security</artifactId>
5454
</dependency>
5555

56+
<dependency>
57+
<groupId>org.springframework.boot</groupId>
58+
<artifactId>spring-boot-starter-actuator</artifactId>
59+
</dependency>
60+
5661
<dependency>
5762
<groupId>io.jsonwebtoken</groupId>
5863
<artifactId>jjwt</artifactId>

testeSantanderWay/src/main/java/br/com/testesantanderway/TesteSantanderWayApplication.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,18 @@
55
import org.springframework.cache.annotation.EnableCaching;
66
import org.springframework.data.web.config.EnableSpringDataWebSupport;
77

8+
import javax.annotation.PostConstruct;
9+
import java.util.TimeZone;
10+
811
@SpringBootApplication
912
@EnableSpringDataWebSupport
1013
@EnableCaching
1114
public class TesteSantanderWayApplication {
15+
@PostConstruct
16+
void started(){
17+
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
18+
}
19+
1220
public static void main(String[] args) {
1321
SpringApplication.run(TesteSantanderWayApplication.class, args);
1422
}

testeSantanderWay/src/main/java/br/com/testesantanderway/config/security/AutenticacaoService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,4 @@ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundEx
2626

2727
throw new UsernameNotFoundException("Dados Inválidos");
2828
}
29-
3029
}

testeSantanderWay/src/main/java/br/com/testesantanderway/config/security/AutenticacaoViaTokenFilter.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package br.com.testesantanderway.config.security;
22

33
import br.com.testesantanderway.modelo.Cliente;
4-
import br.com.testesantanderway.modelo.Perfil;
54
import br.com.testesantanderway.repository.ClienteRepository;
65
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
76
import org.springframework.security.core.context.SecurityContextHolder;
8-
import org.springframework.security.core.token.TokenService;
97
import org.springframework.web.filter.OncePerRequestFilter;
10-
118
import javax.servlet.FilterChain;
129
import javax.servlet.ServletException;
1310
import javax.servlet.http.HttpServletRequest;
@@ -32,7 +29,6 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
3229
autenticarCliente(token);
3330
}
3431

35-
3632
filterChain.doFilter(request, response);
3733
}
3834

testeSantanderWay/src/main/java/br/com/testesantanderway/config/security/ConfigSeguranca.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ public class ConfigSeguranca extends WebSecurityConfigurerAdapter {
2525
@Autowired
2626
private ClienteRepository clienteRepository;
2727

28-
2928
@Override
3029
@Bean
3130
protected AuthenticationManager authenticationManager() throws Exception{
@@ -42,9 +41,10 @@ protected void configure(AuthenticationManagerBuilder auth) throws Exception {
4241
@Override
4342
protected void configure(HttpSecurity http) throws Exception {
4443
http.authorizeRequests()
45-
.antMatchers(HttpMethod.GET,"/clientes").permitAll()
4644
.antMatchers(HttpMethod.GET,"/clientes/*").permitAll()
45+
.antMatchers(HttpMethod.GET,"/gastos/*").permitAll()
4746
.antMatchers(HttpMethod.POST,"/auth").permitAll()
47+
.antMatchers(HttpMethod.GET,"/actuator/**").permitAll()
4848
.antMatchers(
4949
"/v2/api-docs", "/swagger-resources/**", "/swagger-ui.html", "/webjars/**",
5050
"/swagger.json")

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@ public class ClienteController {
3131

3232
@GetMapping
3333
@Cacheable(value = "listaDeCliente")
34-
public Page<ClienteDTO> dadosLoginCliente(@RequestParam(required = false) String nome, @PageableDefault(sort = "codigoUsuario",
35-
direction = Sort.Direction.ASC) Pageable paginacao) {
34+
public Page<ClienteDTO> dadosLoginCliente(@RequestParam(required = false) String nome,
35+
@PageableDefault(sort = "codigoUsuario",
36+
direction = Sort.Direction.ASC) Pageable paginacao) {
3637

3738
if (nome == null || nome.isEmpty()) {
3839
Page<Cliente> clientes = clienteRepository.findAll(paginacao);
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package br.com.testesantanderway.controller;
2+
3+
import br.com.testesantanderway.controller.form.GastoForm;
4+
import br.com.testesantanderway.dto.DetalheGastosDTO;
5+
import br.com.testesantanderway.dto.GastosDTO;
6+
import br.com.testesantanderway.modelo.Gasto;
7+
import br.com.testesantanderway.repository.GastoRepository;
8+
import br.com.testesantanderway.util.UtilDate;
9+
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.cache.annotation.Cacheable;
11+
import org.springframework.data.domain.Page;
12+
import org.springframework.data.domain.Pageable;
13+
import org.springframework.data.domain.Sort;
14+
import org.springframework.data.web.PageableDefault;
15+
import org.springframework.format.annotation.DateTimeFormat;
16+
import org.springframework.http.ResponseEntity;
17+
import org.springframework.web.bind.annotation.*;
18+
import org.springframework.web.util.UriComponentsBuilder;
19+
20+
import java.net.URI;
21+
import java.time.LocalDateTime;
22+
import java.util.Date;
23+
import java.util.Optional;
24+
25+
@RestController
26+
@RequestMapping("/gastos")
27+
public class GastosController {
28+
@Autowired
29+
private GastoRepository gastoRepository;
30+
31+
@GetMapping
32+
@Cacheable(value = "gastoDeCliente")
33+
public Page<GastosDTO> dadosDosGastos(@RequestParam(required = false) String descricao,
34+
@PageableDefault(sort = "codigoUsuario",
35+
direction = Sort.Direction.ASC) Pageable paginacao) {
36+
37+
if (descricao == null || descricao.isEmpty()) {
38+
Page<Gasto> gastos = gastoRepository.findAll(paginacao);
39+
40+
return GastosDTO.converter(gastos);
41+
} else {
42+
Page<Gasto> gastos = gastoRepository.findByDescricao(descricao, paginacao);
43+
44+
return GastosDTO.converter(gastos);
45+
}
46+
}
47+
48+
@PostMapping
49+
public ResponseEntity<GastosDTO> lancarGastos(@RequestBody GastoForm form, UriComponentsBuilder uriBuilder) {
50+
Gasto gastoCadastro = form.converter();
51+
gastoRepository.save(gastoCadastro);
52+
URI uri = uriBuilder.path("/{id}").buildAndExpand(gastoCadastro.getCodigoUsuario()).toUri();
53+
54+
return ResponseEntity.created(uri).body(new GastosDTO(gastoCadastro));
55+
}
56+
57+
@GetMapping("/{dataCriacao}")
58+
public ResponseEntity<DetalheGastosDTO> detalheGastosPorData(@PathVariable LocalDateTime dataCriacao) {
59+
//String utilDate = UtilDate.format(dataCriacao);
60+
Optional<Gasto> gasto = gastoRepository.findByDataCriacao(dataCriacao);
61+
if (gasto.isPresent()) {
62+
return ResponseEntity.ok(new DetalheGastosDTO(gasto.get()));
63+
}
64+
65+
return ResponseEntity.notFound().build();
66+
}
67+
}

testeSantanderWay/src/main/java/br/com/testesantanderway/controller/form/AuthForm.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package br.com.testesantanderway.controller.form;
22

3-
import org.hibernate.validator.constraints.Length;
43
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
54

6-
import javax.validation.constraints.NotEmpty;
7-
import javax.validation.constraints.NotNull;
8-
95
public class AuthForm {
106
private String email;
117
private String senha;

testeSantanderWay/src/main/java/br/com/testesantanderway/controller/form/ClienteForm.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public class ClienteForm {
1414
private String email;
1515
@NotNull @NotEmpty @Length(min = 6)
1616
private String senha;
17-
1817
private LocalDateTime dataCriacao;
1918

2019
public ClienteForm() {
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package br.com.testesantanderway.controller.form;
2+
3+
import br.com.testesantanderway.modelo.Gasto;
4+
import org.hibernate.validator.constraints.Length;
5+
import javax.validation.constraints.NotEmpty;
6+
import javax.validation.constraints.NotNull;
7+
import java.time.LocalDateTime;
8+
9+
public class GastoForm {
10+
@NotNull @NotEmpty @Length(min = 11)
11+
private String descricao;
12+
@NotNull @NotEmpty
13+
private Double valor;
14+
private LocalDateTime dataCriacao;
15+
16+
public GastoForm() {
17+
}
18+
19+
public GastoForm(Gasto gasto) {
20+
this.descricao = gasto.getDescricao();
21+
this.valor = gasto.getValor();
22+
this.dataCriacao = gasto.getDataCriacao();
23+
}
24+
25+
public String getDescricao() {
26+
return descricao;
27+
}
28+
29+
public void setDescricao(String descricao) {
30+
this.descricao = descricao;
31+
}
32+
33+
public Double getValor() {
34+
return valor;
35+
}
36+
37+
public void setValor(Double valor) {
38+
this.valor = valor;
39+
}
40+
41+
public LocalDateTime getDataCriacao() {
42+
return dataCriacao;
43+
}
44+
45+
public void setDataCriacao(LocalDateTime dataCriacao) {
46+
this.dataCriacao = dataCriacao;
47+
}
48+
49+
public Gasto converter() {
50+
return new Gasto(descricao, valor, dataCriacao);
51+
}
52+
}

0 commit comments

Comments
 (0)