示例#1
0
        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"));
        }
示例#2
0
        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);
        }