public bool AddPay(PagoViewModel model)
        {
            ICollection <ReservaSet> reserva = db.Reservas
                                               .Find(r => r.Id == model.idReserva)
                                               .ToList();
            PagoSet pago = new PagoSet {
                Descripcion = model.descripcion,
                Monto       = model.monto,
                TipoPago    = model.tipoPago,
                ReservaSet  = reserva,
                Estado      = model.Estado
            };

            db.Pagos.Add(pago);

            try
            {
                db.Commit();
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Example #2
0
        // GET: Cajas/Create
        public IActionResult Create()
        {
            var model = new PagoViewModel {
            };

            model.Fecha = DateTime.Today.Date.ToString("dd-MM-yyyy");
            model.FechaTransferencia = model.Fecha;
            model.MediosList         = new SelectList(from Medio m in Enum.GetValues(typeof(Medio))
                                                      select new { Id = m, Name = m.ToString() }, "Id", "Name");
            var oficinas = _context.ApplicationUser
                           .Include(u => u.PuestosTrabajo)
                           .ThenInclude(p => p.Oficina)
                           .Single(u => u.UserName == User.Identity.Name)
                           .PuestosTrabajo.Select(u => u.Oficina);

            model.OficinasList = new SelectList(from Oficina o in oficinas
                                                select new {
                o.Id, o.Name
            }, "Id", "Name",
                                                oficinas.Count() == 1 ?
                                                oficinas.First().Id.ToString() : null);
            model.AvailableDates = String.Format("'{0}'",
                                                 String.Join("','",
                                                             _context.Vale
                                                             .Where(v => v.State == State.Activo || v.State == State.Pendiente)
                                                             .Select(v => v.Date.Date.ToString("yyyy-M-d")).Distinct().ToList()));
            return(View(model));
        }
Example #3
0
        public async Task <IActionResult> AddPago(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var propietario = await _context.Propietariostbls.FindAsync(id.Value);

            if (propietario == null)
            {
                return(NotFound());
            }

            var model = new PagoViewModel
            {
                PropietarioId     = propietario.Id,
                PAG_FECHACREACION = DateTime.Today,
                PAG_ESTADO        = 'A',
                Anios1            = _combosHelper.GetComboAnios(),
                Meses1            = _combosHelper.GetComboMeses(),
                Valores           = _combosHelper.GetComboValores(),
                TiposPago         = _combosHelper.GetComboValoresDescripcion(),
                Puntos            = _combosHelper.GetComboPuntos()
            };

            return(View(model));
        }
Example #4
0
        public async Task <IActionResult> AddPago(PagoViewModel model, ContabilidadViewModel model1)
        {
            if (ModelState.IsValid)
            {
                var pago = await _converterHelper.ToPagoAsync(model, true);

                var ingreso = await _converterHelper.ToIngresosAsync(model1, true);

                //var anio_nuevo = pago.Anio.Id;
                //var anio = _context.Pagostbls.Find(model.AnioId);
                //var mes_nuevo = pago.Mes.Id;
                //var mes = _context.Pagostbls.Find(model.MesId);
                //var anio_nuevo2 = anio_nuevo.ToString();
                //var mes_nuevo2 = mes_nuevo.ToString();
                //guardamos el pago
                _context.Pagostbls.Add(pago);
                _context.Contabilidadtbls.Add(ingreso);
                await _context.SaveChangesAsync();

                //var IdDelRegistroInsertadoEnPagos = pago.Id;
                //var IdDelRegistroInsertadoEnIngresos = ingreso.Id;
                //var PagoInsertadoObj = _context.Contabilidadtbls.First(x => x.Id == IdDelRegistroInsertadoEnIngresos);
                //PagoInsertadoObj.Con_IngId = IdDelRegistroInsertadoEnPagos;
                //await _context.SaveChangesAsync();
                return(RedirectToAction($"Details/{model.PropietarioId}"));
            }

            model.Anios1    = _combosHelper.GetComboAnios();
            model.Meses1    = _combosHelper.GetComboMeses();
            model.Valores   = _combosHelper.GetComboValores();
            model.TiposPago = _combosHelper.GetComboValoresDescripcion();
            model.Puntos    = _combosHelper.GetComboPuntos();
            return(View(model));
        }
        public async Task <IActionResult> SeleccionarEntradas(long eventoId)
        {
            ClienteViewModel cliente = new ClienteViewModel();

            if (User.Identity.IsAuthenticated)
            {
                if (User.IsInRole("Cliente"))
                {
                    var user = await _userManager.FindByEmailAsync(User.Identity.Name);

                    cliente = await _helperCliente.ObtenerClienteViewModelPorEmail(user.Email);
                }
            }

            var model = new PagoViewModel()
            {
                Cliente           = cliente,
                EntradasGenericas = await _helperEntrada.PoblarComboGeneric(eventoId)
            };

            ViewBag.DatosInvalidos      = false;
            ViewBag.EntradaInsuficiente = false;
            ViewBag.ClienteExistente    = false;
            ViewBag.EventoId            = eventoId;

            return(View(model));
        }
 public TarjetasPagoElegirPage(pedidos p)
 {
     InitializeComponent();
     pedidoActual        = p;
     viewModel           = new PagoViewModel();
     this.BindingContext = viewModel;
 }
Example #7
0
 private void MappingThisFromViewModel(PagoViewModel curso)
 {
     this.Id           = curso.Id;
     this.Alumno       = curso.Alumno;
     this.Total_Cuenta = curso.Total_Cuenta;
     this.Valor_Pago   = curso.Valor_Pago;
     this.Fecha_Pago   = curso.Fecha_Pago;
 }
Example #8
0
 public Form_Pago(OnAddSuccessDelegate <PagoViewModel> onSuccess)
 {
     InitializeComponent();
     _OnSuccessDelegate = onSuccess;
     _ViewModel         = new PagoViewModel();
     BindViewModel();
     LoadDropdowns();
 }
Example #9
0
 public async Task <InventarioEmpresa> ToInventarioEmpresaAsync(PagoViewModel model)
 {
     return(new InventarioEmpresa
     {
         Stock = model.UnidadesPagadas,
         ProductoReal = await _dataContext.ProductoReal.FindAsync(model.IdProductoFinal),
         Empresa = await _dataContext.Empresas.FindAsync(model.EmpresaId),
     });
 }
        public ActionResult Pago(int id)
        {
            PagoViewModel pvm = new PagoViewModel();

            pvm.usuario   = db.AspNetUsers.Find(User.Identity.GetUserId());
            pvm.membresia = db.MEMBRESIA.Find(id);
            pvm.tarjeta   = new TARJETA();
            return(View(pvm));
        }
Example #11
0
        // GET: Pagos/Create
        public IActionResult Create()
        {
            var model = new PagoViewModel
            {
                Empresas         = _combosHelper.GetComboEmpresas(),
                ProductosFinales = _combosHelper.GetComboProductosReales(),
            };

            return(View(model));
        }
Example #12
0
        public async Task <ProductoPago> ToProductoPagoAsync(PagoViewModel model)
        {
            return(new ProductoPago
            {
                Monto = model.MontoPago,

                UnidadesPagadas = model.UnidadesPagadas,
                ProductoReal = await _dataContext.ProductoReal.FindAsync(model.IdProductoFinal),

                Pago = await _dataContext.Pagos.LastAsync(),
            });
        }
Example #13
0
        public ActionResult <PagoViewModel> postPago(PagoInputModel pagoInput)
        {
            var pago     = this.MapearPago(pagoInput);
            var response = pagoService.GuardarPago(pago);

            if (!response.Error)
            {
                var pagoView = new PagoViewModel(pago);
                return(Ok(pagoView));
            }
            return(BadRequest(response.Mensaje));
        }
        public PagoViewModel GetMontoFaltante(int id)
        {
            ReservaSet reserva = db.Reservas.Find(p => p.Id == id).Single();
            decimal    pago    = reserva.MontoPagado;

            PagoViewModel pagomodel = new PagoViewModel
            {
                idReserva     = id,
                MontoFaltante = 160 - pago
            };

            return(pagomodel);
        }
        private async Task CambiarEstado(PagoViewModel pagos)
        {
            if (pagos.Estado)
            {
                await this.PagoDataService.Desactivar(pagos.Id).ConfigureAwait(false);
            }
            else
            {
                await this.PagoDataService.Activar(pagos.Id).ConfigureAwait(false);
            }

            this.LPagos = (await this.PagoDataService.Listar(100).ConfigureAwait(false)).ToList();
        }
        public bool ProductStorageExists(PagoViewModel model)
        {
            var inventarioempresa = _dataContext
                                    .InventarioEmpresas
                                    .FirstOrDefault(e => e.ProductoReal.Id == model.IdProductoFinal &&
                                                    e.Empresa.Id == model.EmpresaId);

            if (inventarioempresa == null)
            {
                return(false);
            }

            return(true);
        }
Example #17
0
        public async Task <Pago> ToPagoAsync(PagoViewModel model)
        {
            return(new Pago
            {
                Nombre = model.Nombre,


                MontoTotal = model.MontoTotal,

                Fecha = model.Fecha,

                Empresa = await _dataContext.Empresas.FindAsync(model.EmpresaId),
            });
        }
        public ActionResult AgregarPago(int id)
        {
            ViewBag.TipoPagoDrow = new SelectList(new List <Object> {
                new { value = "Deposito", text = "Deposito" },
                new { value = "Efectivo", text = "Pago en Efectivo" },
                new { value = "Paypal", text = "Paypal" }
            },
                                                  "value",
                                                  "text",
                                                  1);
            PagoViewModel pagoModel = reservasConsultas.GetMontoFaltante(id);

            return(View(pagoModel));
        }
        public async Task <ActionResult <PagoViewModel> > Crear([FromForm] CrearViewModel model)
        {
            if (model == null)
            {
                return(this.BadRequest());
            }

            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var fecha = DateTime.Now;

            var pago = new Pago
            {
                OrdenId   = model.OrdenId,
                Monto     = model.Monto,
                CreatedAt = fecha,
                UpdatedAt = fecha,
            };

            await this._context.Pagos.AddAsync(pago).ConfigureAwait(false);

            try
            {
                await this._context.SaveChangesAsync().ConfigureAwait(false);
            }
            catch (DbUpdateConcurrencyException)
            {
                return(this.BadRequest("Hubo un error al guardar sus datos."));
            }

            var pagoModel = new PagoViewModel
            {
                Id        = pago.Id,
                OrdenId   = pago.OrdenId,
                Monto     = pago.Monto,
                Estado    = pago.Estado,
                CreatedAt = pago.CreatedAt,
                UpdatedAt = pago.UpdatedAt,
            };

            return(this.CreatedAtAction("Mostrar", new { id = pago.Id }, pagoModel));
        }
Example #20
0
        public async Task <Pagostbl> ToPagoAsync(PagoViewModel model, bool isNew)
        {
            var pagos = new Pagostbl
            {
                PAG_FECHAPAGADO   = model.PAG_FECHAPAGADO,
                PAG_FECHACREACION = DateTime.Today,
                PAG_ESTADO        = 'A',
                Id          = isNew ? 0 : model.Id,
                Propietario = await _dataContext1.Propietariostbls.FindAsync(model.PropietarioId),
                Anio        = await _dataContext1.Aniostbls.FindAsync(model.AnioId),
                Mes         = await _dataContext1.Mesestbls.FindAsync(model.MesId),
                Val         = await _dataContext1.Valorestbls.FindAsync(model.ValorId),
                Tipos       = await _dataContext1.TiposPagotbls.FindAsync(model.TipoPagoId),
                PuntodePago = await _dataContext1.PuntosPagotbls.FindAsync(model.PuntoPagoId),
            };

            return(pagos);
        }
Example #21
0
        public PagoPage()
        {
            var model = new PagoViewModel();

            model.CargarTiposPago();
            BindingContext = model;
            InitializeComponent();
            picker.SelectedIndex                = 0;
            pickerFactura.SelectedIndex         = 0;
            pickerFactura.SelectedIndexChanged += this.OnPickerSelectedIndexChanged;

            Deuda.Text = "225.66";

            Deuda.TextChanged += Deuda_TextChanged;
            MyLabel.Text       = "225.66";
            Valor.Text         = "0.00";
            Valor.TextChanged += Valor_TextChanged;
        }
Example #22
0
 public IActionResult AddPago(PagoViewModel pago)
 {
     try
     {
         var cfdi = _context.CFDIs.First(d => d.CfdUUID == pago.UUID);
         if (_context.CFDIPagados.Any(d => d.CfdUUID == pago.UUID && d.CfdReferenciaPago == pago.ReferenciaDePago))
         {
             this.ShowError("Ya existe una referencia de pago registrada.");
             return(View("ConsultaCFDI", new PagoViewModel()));
         }
         _context.CFDIPagados.Add(new CFDIPagados
         {
             CfdUUID                      = pago.UUID,
             CfdSerie                     = cfdi.CfdSerie,
             CfdFolio                     = cfdi.CfdFolio,
             CfdFechaEmision              = cfdi.CfdFechaEmision,
             CfdTipoComprobante           = cfdi.CfdTipoComprobante,
             CfdFormaPago                 = cfdi.CfdFormaPago,
             CfdMetodoPago                = cfdi.CfdMetodoPago,
             CfdMoneda                    = cfdi.CfdMoneda,
             CfdRFCEmisor                 = cfdi.CfdRFCEmisor,
             CfdNombreEmisor              = cfdi.CfdNombreEmisor,
             CfdRFCReceptor               = cfdi.CfdRFCReceptor,
             CfdNombreReceptor            = cfdi.CfdNombreReceptor,
             CfdTotalImpuestosRetenidos   = cfdi.CfdTotalImpuestosRetenidos,
             CfdTotalImpuestosTrasladados = cfdi.CfdTotalImpuestosTrasladados,
             CfdSubtotalCFDI              = cfdi.CfdSubtotalCFDI,
             CfdTotalCFDI                 = cfdi.CfdTotalCFDI,
             //mis campos
             CfdFechaPago      = pago.FechaDePago,
             CfdMontoPagado    = pago.MontoDePago,
             CfdReferenciaPago = pago.ReferenciaDePago
         });
         _context.SaveChanges();
         this.ShowSuccess("Ingreso Exitoso");
         return(View("ConsultaCFDI", new PagoViewModel()));
     }
     catch (Exception ex)
     {
         this.ShowError(ex.Message);
     }
     return(View("ConsultaCFDI"));
 }
Example #23
0
        public async Task <ActionResult> CrearAsync(PagoViewModel pago)
        {
            Pago_Web pago_crear = new Pago_Web();
            bool     retorno    = await pago_crear.CreateFromViewAsync(pago);

            if (retorno)
            {
                SessionUser     userSesion = new SessionUser();
                Tarea_Terminada task       = new Tarea_Terminada()
                {
                    LayoutNombre   = "_LayoutAdmin",
                    Titulo         = "Pago Creado",
                    Mensaje        = "El pago ha sido creado exitosamente.",
                    ActionName     = "MisPagos",
                    ControllerName = "Pago",
                    LinkTexto      = "Volver a la lista de mis pagos"
                };
                userSesion.SesionTareaTerminada = task;
                return(RedirectToAction("Exito", "Home"));
            }
            return(View("Nuevo", "_LayoutApoderado"));
        }
Example #24
0
        public async Task <IActionResult> EditPago(PagoViewModel model, ContabilidadViewModel model1)
        {
            if (ModelState.IsValid)
            {
                var pago = await _converterHelper.ToPagoAsync(model, false);

                var ingreso = await _converterHelper.ToIngresosAsync(model1, false);

                _context.Pagostbls.Update(pago);
                _context.Contabilidadtbls.Update(ingreso);
                await _context.SaveChangesAsync();

                var IdTipoDelRegistroActualizadoEnPagos = pago.Tipos.Id;
                return(RedirectToAction($"Details/{model.PropietarioId}"));
            }

            model.Anios1    = _combosHelper.GetComboAnios();
            model.Meses1    = _combosHelper.GetComboMeses();
            model.Valores   = _combosHelper.GetComboValores();
            model.TiposPago = _combosHelper.GetComboValoresDescripcion();
            model.Puntos    = _combosHelper.GetComboPuntos();
            return(View(model));
        }
        public ActionResult AgregarPago(PagoViewModel model)
        {
            ViewBag.TipoPagoDrow = new SelectList(new List <Object> {
                new { value = "Deposito", text = "Deposito" },
                new { value = "Efectivo", text = "Pago en Efectivo" },
                new { value = "Paypal", text = "Paypal" }
            },
                                                  "value",
                                                  "text",
                                                  1);
            model.Estado = "P";
            bool resultado = reservasConsultas.AddPay(model);

            ViewBag.resultado = resultado;
            if (resultado)
            {
                model.descripcion    = null;
                model.MontoFaltante -= model.monto;
                model.monto          = 0;
                model.tipoPago       = null;
            }
            model = new PagoViewModel();
            return(View(model));
        }
Example #26
0
        public async Task <IActionResult> Create(PagoViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (!_validatorHelper.IsEnoughProduct(model.IdProductoFinal, model.UnidadesPagadas))
                {
                    return(RedirectToAction("Error"));
                }


                var pago = await _converterHelper.ToPagoAsync(model);



                _context.Pagos.Add(pago);

                _context.SaveChanges();

                var producto = await _context.ProductoReal.FindAsync(model.IdProductoFinal);

                producto.stock = producto.stock - model.UnidadesPagadas;

                _context.ProductoReal.Update(producto);

                _context.SaveChanges();


                //Aqui tenemos que introducir producto pago con los datos del model.

                var productopago = await _converterHelper.ToProductoPagoAsync(model);

                _context.ProductoPagos.Add(productopago);

                _context.SaveChanges();

                //Aqui tenemos que itroducir a inventarioEmpresa
                //Primero tenemos que verificar que no existael producto real combinado con la empresa

                if (!_validatorHelper.ProductStorageExists(model))
                {
                    var inventarioEmpresa = await _converterHelper.ToInventarioEmpresaAsync(model);

                    _context.InventarioEmpresas.Add(inventarioEmpresa);

                    _context.SaveChanges();
                }
                else
                {
                    var inventarioEmpresa = _context
                                            .InventarioEmpresas
                                            .FirstOrDefault(e => e.ProductoReal.Id == model.IdProductoFinal &&
                                                            e.Empresa.Id == model.EmpresaId);
                    inventarioEmpresa.Stock = inventarioEmpresa.Stock + model.UnidadesPagadas;

                    _context.InventarioEmpresas.Update(inventarioEmpresa);

                    _context.SaveChanges();
                }

                //Si existe extraemos y solamente lo actualizamos
                //Si no existe se procede a crear uno nuevo.

                return(RedirectToAction("Index"));
            }
            else
            {
                model.Empresas = _combosHelper.GetComboEmpresas();
            }

            return(View(model));
        }
Example #27
0
 public async Task <bool> UpdateFromViewAsync(PagoViewModel pago)
 {
     MappingThisFromViewModel(pago);
     return(await Update());
 }
        public async Task <IActionResult> SeleccionarEntradas(PagoViewModel vm, long eventoId)
        {
            try
            {
                ViewBag.DatosInvalidos      = false;
                ViewBag.EntradaInsuficiente = false;
                ViewBag.ClienteExistente    = false;
                ViewBag.EventoId            = eventoId;

                if (!ModelState.IsValid)
                {
                    ViewBag.DatosInvalidos = true;
                    throw new Exception("Error de validacion no controlado.");
                }

                var evento = await _helperEvento.Obtener(eventoId);

                if (evento.CupoDisponible < vm.Cantidad)
                {
                    ViewBag.EntradaInsuficiente = true;
                    throw new Exception("Cantidad de entradas insuficiente.");
                }

                long clienteId = vm.Cliente.Id;
                var  clienteVm = vm.Cliente;

                if (!User.Identity.IsAuthenticated)
                {
                    var existe = await _helperCliente.ExisteCliente(vm.Cliente.Dni, vm.Cliente.Email);

                    if (existe)
                    {
                        ViewBag.ClienteExistente = true;
                        throw new Exception("Ya existe un cliente con los datos especificados.");
                    }

                    var clienteDto = new ClienteDto()
                    {
                        Apellido = vm.Cliente.Apellido,
                        Nombre   = vm.Cliente.Nombre,
                        Dni      = vm.Cliente.Dni,
                        Email    = vm.Cliente.Email
                    };
                    clienteId = await _clienteServicio.InsertarDevuelveId(clienteDto);

                    clienteVm = await _helperCliente.Obtener(clienteId);
                }

                await _helperEvento.ActualizarCupoDisponible(evento.Id, vm.Cantidad);


                // guardo la forma de pago
                var formaPagoDto = new FormaPagoTarjetaDto()
                {
                    Nombre               = vm.FormaPago.Nombre,
                    NumeroTarjeta        = vm.FormaPago.NumeroTarjeta,
                    AnioExp              = vm.FormaPago.AnioExp,
                    MesExp               = vm.FormaPago.MesExp,
                    CodigoSeguridad      = vm.FormaPago.CodigoSeguridad,
                    CodigoPostal         = vm.FormaPago.CodigoPostal,
                    DireccionFacturacion = vm.FormaPago.DireccionFacturacion
                };
                var formaPagoId = await _formaPagoTarjetaServicio.InsertarDevuelveId(formaPagoDto);

                var formaPagoVm = await _helperFormaPagoTarjeta.Obtener(formaPagoId);

                // guardo las entradas para el cliente (for int i=0; 1 < cantidad; i++)
                var entradaVm = await _helperEntrada.ObtenerEntrada(vm.EntradaId);

                long[] entradas = new long[vm.Cantidad];
                for (int i = 0; i < vm.Cantidad; i++)
                {
                    var entrada = new EntradaDto()
                    {
                        ClienteId     = clienteId,
                        EventoId      = entradaVm.EventoId,
                        Precio        = entradaVm.Precio,
                        TipoEntradaId = entradaVm.TipoEntradaId
                    };
                    var entradaId = await _entradaServicio.InsertarDevuelveId(entrada);

                    entradas[i] = entradaId;
                }

                return(RedirectToAction("AltaFacturaRedirect", "FacturaPDF", new { clienteId = clienteVm.Id, formaPagoId = formaPagoVm.Id, entradaId = entradaVm.Id, cantidad = vm.Cantidad, entradas }));
            }
            catch (Exception)
            {
                vm.EntradasGenericas = await _helperEntrada.PoblarComboGeneric(eventoId);

                return(View(vm));
            }
        }
Example #29
0
        public async Task <IActionResult> Create([Bind("Fecha,ValeId,Medio,Monto,FechaTransferencia,RUT,ClienteId,Saldo,OficinaId")] PagoViewModel pago)
        {
            if (ModelState.IsValid && !String.IsNullOrEmpty(pago.Monto))
            {
                var user = await _userManager.GetUserAsync(User);

                var plata = Convert.ToInt32(Regex.Replace(pago.Monto, "[^0-9]", ""));

                var cliente = _context.Cliente
                              .Include(c => c.Vales)
                              .ThenInclude(v => v.Cobros)
                              .Single(c => c.Id == pago.ClienteId);

                var pagado = new Pago
                {
                    Date = DateTime.Parse(pago.Fecha).Date,
                    ApplicationUserId = user.Id,
                    ClienteId         = pago.ClienteId,
                    Medio             = pago.Medio,
                    Monto             = plata,
                    Cliente           = cliente,
                    OficinaId         = pago.OficinaId,
                    Oficina           = await _context.Oficina.SingleOrDefaultAsync(o => o.Id == pago.OficinaId)
                };

                if (pago.Medio == Medio.Transferencia)
                {
                    pagado.FechaTransferencia = DateTime.Parse(pago.FechaTransferencia).Date;
                    pagado.RutTransferencia   = Convert.ToInt32(String.Format(new InterceptProvider(), "{0:I}", pago.RUT));
                }

                _context.Pago.Add(pagado);

                var vales = cliente.Vales.Where(v => v.State == State.Activo || v.State == State.Pendiente).OrderBy(v => v.Date);

                foreach (var v in vales)
                {
                    var valePago = new ValePago
                    {
                        PagoId = pagado.Id,
                        ValeId = v.Id
                    };
                    _context.ValePagos.Add(valePago);

                    var remanente = v.SubTotal - v.Pagado;
                    if (plata > remanente)
                    {
                        plata   -= remanente;
                        v.Pagado = v.SubTotal;
                        v.State  = State.Pagado;
                        _context.Vale.Update(v);
                    }
                    else if (plata == remanente)
                    {
                        v.Pagado = v.SubTotal;
                        v.State  = State.Pagado;
                        _context.Vale.Update(v);
                        break;
                    }
                    else if (plata < remanente)
                    {
                        v.Pagado += plata;
                        v.State   = State.Pendiente;
                        _context.Vale.Update(v);
                        break;
                    }
                }

                var saldo = Convert.ToDouble(Regex.Replace(pago.Saldo, "[^0-9-]", ""));

                var vale = _context.Vale.Single(v => v.Id == pago.ValeId);

                _context.Vale.Update(vale);

                if (saldo == cliente.SaldosPendientes - pagado.Monto)
                {
                    cliente.SaldosPendientes = Convert.ToInt32(Regex.Replace(pago.Saldo, "[^0-9-]", ""));
                    _context.Cliente.Update(cliente);
                    await _context.SaveChangesAsync();

                    var cobros = vales
                                 .SelectMany(v => v.Cobros)
                                 .Select(c => $@"<tr><td>{typeof(Honorario)
                            .GetMember(c.Honorario.ToString())
                            .FirstOrDefault()
                            .GetCustomAttribute<DisplayAttribute>(false)
                            .Name}</td><td><i class=""fas fa-dollar-sign""></i></td><td style=""text-align:right"">" +
                                         c.Monto.ToString("C", CultureInfo.GetCultureInfo("es-CL")) + "</td></tr>");

                    //var cobrosList = new List<string> { };

                    //foreach(var c in cobros)
                    //{
                    //    cobrosList.Add($@"<tr><td>{typeof(Honorario)
                    //                  .GetMember(c.Honorario.ToString())
                    //                  .FirstOrDefault()
                    //                  .GetCustomAttribute<DisplayAttribute>(false)
                    //                  .Name}</td><td><i class=""fas fa-dollar-sign""></i></td><td style=""text-align:right"">" +
                    //                  c.Monto.ToString("C", CultureInfo.GetCultureInfo("es-CL")) + "</td></tr>");
                    //}

                    var dlEmail = new BoletaEmail
                    {
                        Id       = pagado.Id,
                        Fecha    = pagado.Date.ToString("dd-MM-yyyy"),
                        Cobros   = String.Join("", cobros),
                        Emitidos = "",
                        Saldos   = "",
                        Total    = pagado.Monto.ToString("C", CultureInfo.GetCultureInfo("es-CL")),
                    };

                    var renderer = new RazorViewToStringRenderer(_viewEngine, _tempDataProvider, _serviceProvider);

                    var result = renderer.RenderViewToString("_BoletaEmail", dlEmail).GetAwaiter().GetResult();

                    await _emailSender.SendEmailAsync(user.Email, $@"BOLETA {pagado.Id}", result);

                    return(RedirectToAction(nameof(Index)));
                }

                return(NotFound());
            }
            var model = new PagoViewModel {
            };

            model.Fecha = DateTime.Today.Date.ToString("dd-MM-yyyy");
            model.FechaTransferencia = model.Fecha;
            model.MediosList         = new SelectList(from Medio m in Enum.GetValues(typeof(Medio))
                                                      select new { Id = m, Name = m.ToString() }, "Id", "Name");
            model.AvailableDates = String.Format("'{0}'",
                                                 String.Join("','",
                                                             _context.Vale
                                                             .Where(v => v.State == State.Activo || v.State == State.Pendiente)
                                                             .Select(v => v.Date.Date.ToString("yyyy-M-d")).Distinct().ToList()));
            return(View(model));
        }
 public Tarjetasdepago()
 {
     InitializeComponent();
     viewModel           = new PagoViewModel();
     this.BindingContext = viewModel;
 }