Bom dia, pessoal. Estou tentando retornar uma lista que esta dentro de um Repository no meu controller mas nao estou conseguindo, alguem poderia me ajudar?
Repository
@Repository
public class DispenserRepository {
private List<Cedula> notasDisponiveis;
public DispenserRepository() {
notasDisponiveis = new ArrayList<>();
notasDisponiveis.add(new Cedula(5, TipoNota.NOTAS_100));
notasDisponiveis.add(new Cedula(7, TipoNota.NOTAS_50));
notasDisponiveis.add(new Cedula(2, TipoNota.NOTAS_20));
notasDisponiveis.add(new Cedula(5, TipoNota.NOTAS_10));
}
public List<Cedula> buscarNotasDispenser() {
return notasDisponiveis;
}
}
Service
@Service
public class DispenserService {
private List<Cedula> notasDisponiveis;
private final DispenserRepository dispenserRepository;
public DispenserService(DispenserRepository dispenserRepository) {
this.dispenserRepository = dispenserRepository;
}
private void buscarNotasDispenser() {
notasDisponiveis = dispenserRepository.buscarNotasDispenser();
}
public Optional<Cedula> buscarCedulaDoTipo(TipoNota tipoNota) {
if (notasDisponiveis == null || notasDisponiveis.isEmpty()) {
buscarNotasDispenser();
}
return notasDisponiveis
.stream()
.filter(cedula -> cedula.getNota().equals(tipoNota))
.findFirst();
}
public void atualizarRetiraDeCedulas(TipoNota tipoNota, Integer quantidade) throws CedulaIndisponivelException, NumeroDeNotasIndisponivelException {
Optional<Cedula> cedulaOptional = buscarCedulaDoTipo(tipoNota);
if (cedulaOptional.isPresent()) {
cedulaOptional.get().retirarEstoque(quantidade);
} else {
throw new CedulaIndisponivelException("Cedula não encontrada!");
}
}
public List<Cedula> buscarNotasEmEstoque() {
if (notasDisponiveis == null || notasDisponiveis.isEmpty()) {
buscarNotasDispenser();
}
return notasDisponiveis
.stream()
.filter(cedula -> cedula.getQuantidadeDisponivel() > 0)
.collect(Collectors.toList());
}
}
Model
@Getter
@EqualsAndHashCode
public class Cedula {
private Integer quantidadeDisponivel;
private TipoNota nota;
public Cedula(Integer quantidadeDisponivel, TipoNota nota) {
this.quantidadeDisponivel = quantidadeDisponivel;
this.nota = nota;
}
public void retirarEstoque(Integer quantidade) throws NumeroDeNotasIndisponivelException {
if (quantidadeDisponivel < quantidade) {
throw new NumeroDeNotasIndisponivelException("Número de notas indisponível!");
}
quantidadeDisponivel = quantidadeDisponivel - quantidade;
}
}
Controller
@CrossOrigin
@RestController
@RequestMapping("/sacar")
public class SaqueController {
private final SaqueService saqueService;
public SaqueController(SaqueService saqueService) {
this.saqueService = saqueService;
}
@ResponseStatus(HttpStatus.OK)
@GetMapping("/{valor}")
public ResponseEntity<?> retornaQuantidadeDeNotas(@PathVariable("valor") Integer valor) throws ValorIndisponivelException, NumeroDeNotasIndisponivelException {
return new ResponseEntity<>(saqueService.sacarCedulas(valor), HttpStatus.OK);
}
}