Commit bc480a6d by Adrian

Añadidas funciones

parent 61be9bed
...@@ -8,6 +8,8 @@ package es.ujaen.dae.ujacoin.beans; ...@@ -8,6 +8,8 @@ package es.ujaen.dae.ujacoin.beans;
import es.ujaen.dae.ujacoin.entidades.Cliente; import es.ujaen.dae.ujacoin.entidades.Cliente;
import es.ujaen.dae.ujacoin.entidades.Cuenta; import es.ujaen.dae.ujacoin.entidades.Cuenta;
import es.ujaen.dae.ujacoin.entidades.Movimiento; import es.ujaen.dae.ujacoin.entidades.Movimiento;
import es.ujaen.dae.ujacoin.entidades.Tarjeta;
import es.ujaen.dae.ujacoin.excepciones.TarjetaNoValida;
import es.ujaen.dae.ujacoin.util.TipoMovimiento; import es.ujaen.dae.ujacoin.util.TipoMovimiento;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -16,8 +18,6 @@ import javax.persistence.EntityManager; ...@@ -16,8 +18,6 @@ import javax.persistence.EntityManager;
import javax.persistence.LockModeType; import javax.persistence.LockModeType;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
/** /**
...@@ -66,6 +66,40 @@ public class RepositorioCuentas { ...@@ -66,6 +66,40 @@ public class RepositorioCuentas {
} }
public void ingreso(Tarjeta tarjetaOrigen, Cuenta cuentaDestino, float importe){
Cuenta cuentaDestinoEnlazada = em.find(Cuenta.class, cuentaDestino.getNumero(), LockModeType.PESSIMISTIC_WRITE);
if(!cuentaDestinoEnlazada.getTitular().getTarjetasAsociadas().containsKey(tarjetaOrigen.getNumero()))
throw new TarjetaNoValida();
cuentaDestinoEnlazada.modificarSaldo(importe);
Movimiento movimiento = new Movimiento(TipoMovimiento.TMIngreso, importe, LocalDateTime.now(), tarjetaOrigen);
em.persist(movimiento);
cuentaDestinoEnlazada.getMovimientos().add(movimiento);
}
public void reintegro(Cuenta cuentaOrigen, Tarjeta tarjetaDestino, float importe){
Cuenta cuentaOrigenEnlazada = em.find(Cuenta.class, cuentaOrigen.getNumero(), LockModeType.PESSIMISTIC_WRITE);
if(!cuentaOrigenEnlazada.getTitular().getTarjetasAsociadas().containsKey(tarjetaDestino.getNumero()))
throw new TarjetaNoValida();
cuentaOrigenEnlazada.modificarSaldo(-importe);
Movimiento movimiento = new Movimiento(TipoMovimiento.TMReintegro, importe, LocalDateTime.now(), tarjetaDestino);
em.persist(movimiento);
cuentaOrigenEnlazada.getMovimientos().add(movimiento);
}
public List<Cuenta> listarCuentasPorCliente(Cliente cliente) { public List<Cuenta> listarCuentasPorCliente(Cliente cliente) {
em.merge(cliente); em.merge(cliente);
......
...@@ -99,45 +99,41 @@ public class ServicioUjaBankImpl implements ServicioUjaBank { ...@@ -99,45 +99,41 @@ public class ServicioUjaBankImpl implements ServicioUjaBank {
@Override @Override
public void ingreso(Cuenta cuenta, Tarjeta tarjeta, float importe) { public void ingreso(Cuenta cuenta, Tarjeta tarjeta, float importe) {
//cuenta.ingreso(tarjeta, importe); repoCuentas.ingreso(tarjeta, cuenta, importe);
} }
@Override @Override
public void reintegro(Cuenta cuenta, Tarjeta tarjeta, float importe) { public void reintegro(Cuenta cuenta, Tarjeta tarjeta, float importe) {
// cuenta.reintegro(tarjeta, importe); repoCuentas.reintegro(cuenta, tarjeta, importe);
} }
@Transactional
@Override @Override
public void transferencia(Cuenta cuentaOrigen, Cuenta cuentaDestino, float importe) { public void transferencia(Cuenta cuentaOrigen, Cuenta cuentaDestino, float importe) {
repoCuentas.transferencia(cuentaOrigen, cuentaDestino, importe); repoCuentas.transferencia(cuentaOrigen, cuentaDestino, importe);
} }
@Override @Override
@Transactional
public Cuenta añadirCuenta(Cliente cliente) { public Cuenta añadirCuenta(Cliente cliente) {
Cuenta cuentaNueva = new Cuenta(generadorCuentasNuevas(), cliente); Cuenta cuentaNueva = new Cuenta(generadorCuentasNuevas(), cliente);
cliente.asignarCuenta(cuentaNueva); cliente.asignarCuenta(cuentaNueva);
repoClientes.actualizar(cliente);
repoCuentas.insertar(cuentaNueva); repoCuentas.insertar(cuentaNueva);
repoClientes.actualizar(cliente);
return cuentaNueva; return cuentaNueva;
} }
@Override @Override
@Transactional
public void añadirTarjeta(Cliente cliente, Tarjeta tarjeta) { public void añadirTarjeta(Cliente cliente, Tarjeta tarjeta) {
//Tarjeta nuevaTarjeta = new Tarjeta(, cliente.getNombre(), String.valueOf(rand.nextInt(999)), LocalDate.now());
cliente.añadirTarjeta(tarjeta); cliente.añadirTarjeta(tarjeta);
repoTarjetas.insertar(tarjeta);
repoClientes.actualizar(cliente); repoClientes.actualizar(cliente);
repoClientes.insertar(cliente);
} }
......
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