Commit a88d62b9 by Antonio Rueda

Eliminación de operaciones verCliente() y verTarjetas, accesibles desde el propio cliente

parent 7b02c593
......@@ -112,7 +112,10 @@ public class ControladorREST {
@GetMapping("/clientes/{dni}/tarjetas")
@ResponseStatus(HttpStatus.OK)
List<DTOTarjeta> verTarjetas(@PathVariable String dni) {
return servicios.verTarjetas(dni).stream()
return servicios.verCliente(dni)
.orElseThrow(ClienteNoRegistrado::new)
.verTarjetas()
.stream()
.map(t -> new DTOTarjeta(t)).toList();
}
......@@ -121,7 +124,10 @@ public class ControladorREST {
*/
@GetMapping("/clientes/{dni}/tarjetas/{num}")
ResponseEntity<DTOTarjeta> verTarjeta(@PathVariable String dni, @PathVariable String num) {
return servicios.verTarjetas(dni).stream()
return servicios.verCliente(dni)
.orElseThrow(ClienteNoRegistrado::new)
.verTarjetas()
.stream()
.filter(t -> t.getNum().equals(num))
.findFirst()
.map(t -> ResponseEntity.ok(new DTOTarjeta(t)))
......@@ -143,7 +149,10 @@ public class ControladorREST {
@GetMapping("/clientes/{dni}/cuentas")
@ResponseStatus(HttpStatus.OK)
List<DTOCuenta> verCuentas(@PathVariable String dni) {
return servicios.verCuentas(dni).stream()
return servicios.verCliente(dni)
.orElseThrow(ClienteNoRegistrado::new)
.verCuentas()
.stream()
.map(c -> new DTOCuenta(c)).toList();
}
......@@ -152,7 +161,10 @@ public class ControladorREST {
*/
@GetMapping("/clientes/{dni}/cuentas/{num}")
ResponseEntity<DTOCuenta> verCuenta(@PathVariable String dni, @PathVariable String num) {
return servicios.verCuentas(dni).stream()
return servicios.verCliente(dni)
.orElseThrow(ClienteNoRegistrado::new)
.verCuentas()
.stream()
.filter(c -> c.getNum().equals(num))
.findFirst()
.map(c -> ResponseEntity.ok(new DTOCuenta(c)))
......
......@@ -132,30 +132,6 @@ public class ServicioUjaCoin {
}
/**
* Devolver las cuentas de un cliente dado
* No es una operación imprescindible puesto que el cliente ya
* tiene la lista de cuentas
* @param dni el DNI del cliente
* @return la lista de cuentas
*/
public List<Cuenta> verCuentas(@NotBlank String dni) {
Cliente cliente = repositorioClientes.buscar(dni).orElseThrow(ClienteNoRegistrado::new);
return cliente.verCuentas();
}
/**
* Devolver las tarjetas registradas por el usuario. No es una operación
* realmente necesaria puesto que el cliente ya contiene esta lista
* @param dni el DNI del cliente
* @return la lista de tarjetas
*/
public List<Tarjeta> verTarjetas(@NotBlank String dni) {
Cliente cliente = repositorioClientes.buscar(dni).orElseThrow(ClienteNoRegistrado::new);
return cliente.verTarjetas(); // Relación eager, no hay que hacer nada
}
/**
* Realizar un ingreso en cuenta a partir de una tarjeta
* @param numCuenta el número de la cuenta donde se ingresa el dinero
* @param numTarjeta el número de la tarjeta desde donde se retira el dinero
......
......@@ -149,9 +149,11 @@ public class ServicioUjaCoinTest {
Tarjeta tarjeta = new Tarjeta("4111111111111111", cliente.getNombre(), LocalDate.of(2030, 12, 1), "365");
servicioUjaCoin.registrarTarjeta(clienteLogin.getDni(), tarjeta);
clienteLogin.nuevaTarjeta(tarjeta);
clienteLogin = null;
// Obtener cuenta
List<Cuenta> cuentas = servicioUjaCoin.verCuentas(clienteLogin.getDni());
clienteLogin = servicioUjaCoin.loginCliente(cliente.getDni(), "clave").get();
List<Cuenta> cuentas = clienteLogin.verCuentas();
Assertions.assertThat(cuentas).hasSize(1);
// Realizar ingreso y comprobar estado de la cuenta
......@@ -203,8 +205,8 @@ public class ServicioUjaCoinTest {
servicioUjaCoin.transferencia(cuentaOrigen.getNum(), cuentaDestino.getNum(), 500);
// Refrescar cuenta origen y destino
cuentaOrigen = servicioUjaCoin.verCuentas(cliente.getDni()).get(0);
cuentaDestino = servicioUjaCoin.verCuentas(cliente2.getDni()).get(0);
cuentaOrigen = servicioUjaCoin.loginCliente(cliente.getDni(), "claveyyy").get().verCuentas().get(0);
cuentaDestino = servicioUjaCoin.loginCliente(cliente2.getDni(), "clavezzz").get().verCuentas().get(0);
// Listar movimientos de la cuenta origen
List<Movimiento> movimientos = servicioUjaCoin.listarMovimientosCuentaDesde(cuentaOrigen.getNum(), LocalDateTime.now().minusDays(1));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment