Commit bc480a6d by Adrian

Añadidas funciones

parent 61be9bed
......@@ -8,6 +8,8 @@ package es.ujaen.dae.ujacoin.beans;
import es.ujaen.dae.ujacoin.entidades.Cliente;
import es.ujaen.dae.ujacoin.entidades.Cuenta;
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 java.time.LocalDateTime;
import java.util.ArrayList;
......@@ -16,8 +18,6 @@ import javax.persistence.EntityManager;
import javax.persistence.LockModeType;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
......@@ -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) {
em.merge(cliente);
......
......@@ -99,45 +99,41 @@ public class ServicioUjaBankImpl implements ServicioUjaBank {
@Override
public void ingreso(Cuenta cuenta, Tarjeta tarjeta, float importe) {
//cuenta.ingreso(tarjeta, importe);
repoCuentas.ingreso(tarjeta, cuenta, importe);
}
@Override
public void reintegro(Cuenta cuenta, Tarjeta tarjeta, float importe) {
// cuenta.reintegro(tarjeta, importe);
repoCuentas.reintegro(cuenta, tarjeta, importe);
}
@Transactional
@Override
public void transferencia(Cuenta cuentaOrigen, Cuenta cuentaDestino, float importe) {
repoCuentas.transferencia(cuentaOrigen, cuentaDestino, importe);
}
@Override
@Transactional
public Cuenta añadirCuenta(Cliente cliente) {
Cuenta cuentaNueva = new Cuenta(generadorCuentasNuevas(), cliente);
cliente.asignarCuenta(cuentaNueva);
repoClientes.actualizar(cliente);
repoCuentas.insertar(cuentaNueva);
repoClientes.actualizar(cliente);
return cuentaNueva;
}
@Override
@Transactional
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);
repoTarjetas.insertar(tarjeta);
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