public async Task <IActionResult> TransferenciaPagoExpreso(TransaccionesViewModels Tr) { if (Tr != null) { var cuentaPrincipalUsuario = await _cuentaRepository.GetByIdAsync(Tr.NumeroCuenta); var cuentaDestinatario = await _cuentaRepository.GetByIdAsync(Tr.NumeroCuentaDestinatario.Value); decimal resta = Convert.ToDecimal(cuentaPrincipalUsuario.Balance - Tr.Monto); decimal suma = Convert.ToDecimal(cuentaDestinatario.Balance + Tr.Monto); cuentaPrincipalUsuario.Balance = resta; cuentaDestinatario.Balance = suma; await _cuentaRepository.Update(cuentaPrincipalUsuario); await _cuentaRepository.Update(cuentaDestinatario); var transacciones = _mapper.Map <Transacciones>(Tr); await _transaccionesRepository.AddAsync(transacciones); return(RedirectToAction("Index")); } return(RedirectToAction("Index")); }
public async Task <PagosViewModel> PagoTarjeta(PagosViewModel ptvm) { var cuenta = await _context.Cuenta.FirstOrDefaultAsync(x => x.NumeroCuenta == ptvm.NumeroCuenta); var tarjeta = await _context.TarjetaCredito.FirstOrDefaultAsync(x => x.NumeroTarjeta == ptvm.NumeroCuentaPagar); if (cuenta == null || tarjeta == null) { ModelState.AddModelError("", "Cuenta Inexistente"); return(ptvm); } if (cuenta.Balance < ptvm.Monto) { ModelState.AddModelError("", "No tiene suficiente balance"); return(ptvm); } cuenta.Balance = cuenta.Balance - ptvm.Monto; if (tarjeta.Deuda > ptvm.Monto) { tarjeta.Deuda = tarjeta.Deuda - ptvm.Monto; } else if (tarjeta.Deuda <= ptvm.Monto) { ptvm.Monto = ptvm.Monto - tarjeta.Deuda; tarjeta.Deuda = 0; cuenta.Balance = cuenta.Balance + ptvm.Monto; } try { var UsuarioDestinatario = await _usuarioRepository.GetByIdAsync(cuenta.IdUsuario); TransaccionesViewModels Transacciones = new TransaccionesViewModels(); Transacciones.NumeroCuenta = cuenta.NumeroCuenta; Transacciones.NumeroCuentaDestinatario = tarjeta.NumeroTarjeta; Transacciones.Monto = ptvm.Monto; Transacciones.Nombre = UsuarioDestinatario.Nombre; Transacciones.Apellido = UsuarioDestinatario.Apellido; Transacciones.TipoTransaccion = 1; var transacciones = _mapper.Map <Transacciones>(Transacciones); await _transaccionesRepository.AddAsync(transacciones); await _cuentaRepository.Update(cuenta); await _tarjetasRepository.Update(tarjeta); } catch { } return(null); }