PagamentoControler:
package br.com.alurafood.pagamentos.controller;
import br.com.alurafood.pagamentos.dto.PagamentoDto;
import br.com.alurafood.pagamentos.service.PagamentoService;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.UriComponentsBuilder;
import java.net.URI;
@RestController
@RequestMapping("/pagamentos")
public class PagamentoControler {
@Autowired
private PagamentoService service;
@GetMapping
public Page<PagamentoDto> listar(@PageableDefault(size = 10) Pageable paginacao) {
return service.obterTodos(paginacao);
}
@GetMapping("/{id}")
public ResponseEntity<PagamentoDto> detalhar(@PathVariable @NotNull Long id) {
PagamentoDto dto = service.obterPorId(id);
return ResponseEntity.ok(dto);
}
@PostMapping
public ResponseEntity<PagamentoDto> cadastrar(@RequestBody @Valid PagamentoDto dto, UriComponentsBuilder uriBuilder) {
PagamentoDto pagamento = service.criarPagamento(dto);
URI endereco = uriBuilder.path("/pagamentos/{id}").buildAndExpand(pagamento.getId()).toUri();
return ResponseEntity.created(endereco).body(pagamento);
}
@PutMapping("/{id}")
public ResponseEntity<PagamentoDto> atualizar(@PathVariable @NotNull Long id, @RequestBody @Valid PagamentoDto dto) {
PagamentoDto atualizado = service.atualizarPagamento(id, dto);
return ResponseEntity.ok(atualizado);
}
}
PagamentoDto:
package br.com.alurafood.pagamentos.dto;
import br.com.alurafood.pagamentos.model.Status;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
@Getter
@Setter
public class PagamentoDto {
private Long id;
private BigDecimal valor;
private String nome;
private String numero;
private String expiracao;
private String codigo;
private Status status;
private Long formaDePagamentoId;
private Long pedidoId;
}