Commit e479af94 by Antonio Rueda

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

parent d2d5a5d0
......@@ -48,7 +48,6 @@ public class ServicioUjaCoin {
@Autowired
RepositorioMovimientos repositorioMovimientos;
public ServicioUjaCoin() {
}
......@@ -58,10 +57,12 @@ public class ServicioUjaCoin {
* @return la cuenta asociada al cliente
*/
public Cuenta altaCliente(@NotNull @Valid Cliente cliente) {
if (repositorioClientes.buscar(cliente.getDni()).isPresent()) {
Optional<Cliente> test = repositorioClientes.buscar(cliente.getDni());
if (test.isPresent()) {
throw new ClienteYaRegistrado();
}
// Crear y registrar cuenta
Cuenta cuenta = new Cuenta(generarNumCuenta(), cliente);
cliente.nuevaCuenta(cuenta);
repositorioClientes.guardar(cliente);
......@@ -83,6 +84,18 @@ public class ServicioUjaCoin {
}
/**
* Realiza un login de un cliente
* @param dni el DNI del cliente
* @param clave la clave de acceso
* @return el objeto de la clase Cliente asociado
*/
public Optional<Cliente> verCliente(@NotBlank String dni) {
Optional<Cliente> clienteLogin = repositorioClientes.buscar(dni);
return clienteLogin;
}
/**
* Crear una cuenta adicional para el cliente
* @param dni el DNI delcliente
* @return la cuenta creada
......@@ -102,6 +115,7 @@ public class ServicioUjaCoin {
* @param dni el DNI del cliente
* @param tarjeta la tarjeta a registrar
*/
// @Transactional
public void registrarTarjeta(@NotBlank String dni, @NotNull @Valid Tarjeta tarjeta) {
Cliente cliente = repositorioClientes.buscar(dni).orElseThrow(ClienteNoRegistrado::new);
cliente.verTarjeta(tarjeta.getNum()).ifPresent(x -> { throw new TarjetaYaRegistrada(); } );
......@@ -111,30 +125,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
......@@ -193,7 +183,7 @@ public class ServicioUjaCoin {
* @param fechaHoraHasta la fecha final
* @return la lista de los movimientos entre las fechas indicadas
*/
List<Movimiento> listarMovimientosCuentaDesdeHasta(@NotBlank String numCuenta, @Past LocalDateTime fechaHoraDesde, LocalDateTime fechaHoraHasta) {
public List<Movimiento> listarMovimientosCuentaDesdeHasta(@NotBlank String numCuenta, @Past LocalDateTime fechaHoraDesde, LocalDateTime fechaHoraHasta) {
Cuenta cuenta = repositorioCuentas.buscar(numCuenta)
.orElseThrow(CuentaNoRegistrada::new);
......
......@@ -37,6 +37,7 @@ public class ServicioUjaCoinTest {
@Autowired
ServicioUjaCoin servicioUjaCoin;
@Test
public void testAccesoServicioUjaCoin() {
Assertions.assertThat(servicioUjaCoin).isNotNull();
......@@ -146,9 +147,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
......@@ -200,8 +203,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