public GestionPagoViewModel()
 {
     ListaSolicitudes = new List<SolicitudPagoServicioVob>();
     PagoServicio = new PagoServicioVob();
     ListaEstados = new BindingList<SelectListItem>();
     FiltroBusqueda = new SolicitudPagoServicioVob();
     ListaMonedas = new BindingList<SelectListItem>();
     //ListaFormaPago = new IList<FormaPago>();
 }
        public int AgregarPagoServicio(PagoServicioVob registro)
        {
            var pagoServRepo = new TFPagoServicioRepositorio();

            int numPagoServicio = pagoServRepo.Agregar(registro);

            return numPagoServicio;

        }
        public int Agregar(PagoServicioVob pagoServicio)
        {
            PagoServicio pago = new PagoServicio();

            using (var context = new UPC_MUNIEntities())
            {
                pago.FechaPago = pagoServicio.FechaPago;
                pago.NumSolicitudPago = pagoServicio.SolicitudPagoServicio.NumSolicitudPago;
                pago.CodFormaPago = pagoServicio.CodFormaPago;
                pago.CodTipoCambio = pagoServicio.CodTipoCambio;
                pago.CodMonedaPago = pagoServicio.CodMonedaPago;
                pago.MontoPago = pagoServicio.MontoPago;
                pago.CodEstadoPago = pagoServicio.CodEstadoPago;

                context.PagoServicio.Add(pago);
                context.SaveChanges();



                // ACTUALIZAR SOLICITUD
                var solicitud = (from c in context.SolicitudPagoServicio
                                where c.NumSolicitudPago == pagoServicio.SolicitudPagoServicio.NumSolicitudPago
                                select c).First();


                solicitud.CodEstadoSolicitud = pagoServicio.SolicitudPagoServicio.CodEstadoSolicitud;

                //  context.Expediente.Add(exp);

                context.SolicitudPagoServicio.Attach(solicitud);
                context.Entry(solicitud).State = EntityState.Modified;
                context.SaveChanges();


                return Convert.ToInt32(pago.NumeroPago);

            };

        }
        //public ActionResult Calificar(string submit1, string submit2, ReciboProvisionalVob reciboProvisional, int id = 0)
        public ActionResult Pagar(string submit1, string submit2, string submit3, SolicitudPagoServicioVob SolicitudPagoServicio, string SolicitudPagoServicio_Monto, int id = 0, String tipoTran=null)
        {
            try
            {

                if (submit1 == "Pagar")
                {

                    //if (SolicitudPagoServicio.c == "0006001")
                    //{
                    //    SolicitudPagoServicio. = null;
                    //}

                    //var areaNegocio = new TFReciboProvisionalNegocio();

                    //areaNegocio.ModificarReciboProvisional(reciboProvisional);

                    var PagoServicios = new TFPagoServicioNegocio();
                    PagoServicioVob _PagoServicioVob = new PagoServicioVob();
                    _PagoServicioVob.FechaPago = DateTime.Now;
                    _PagoServicioVob.DescMonedaPago = SolicitudPagoServicio.DesMoneda;
                    _PagoServicioVob.DescFormaPago = SolicitudPagoServicio.DesForPago;
                    _PagoServicioVob.MontoPago = SolicitudPagoServicio.Monto;
                    _PagoServicioVob.CodEstadoPago = "0011001";
                    _PagoServicioVob.CodFormaPago = SolicitudPagoServicio.CodForPago;
                    _PagoServicioVob.CodMonedaPago = SolicitudPagoServicio.CodMoneda;
                    _PagoServicioVob.CodTipoCambio = SolicitudPagoServicio.CodTipoCambio;
                    _PagoServicioVob.SolicitudPagoServicio = SolicitudPagoServicio;
                    _PagoServicioVob.SolicitudPagoServicio.CodEstadoSolicitud = "0010002";

                    PagoServicios.AgregarPagoServicio(_PagoServicioVob);
                    //"Pagar", new { id = item.NumSolicitudPago })

                   // return RedirectToAction("Buscar", "GestionPagoBandeja", new { init = "true" });
                    return RedirectToAction("Pagar", "GestionPagoBandeja", new { tipoTran="1" });
                }
                else if (submit2 == "Anular")
                {
                    var pagoServiciosNego = new TFPagoServicioNegocio();
                    SolicitudPagoServicio.CodEstadoSolicitud = "0010003";
                    pagoServiciosNego.ModificarEstadoSolicitudPagoServicio(SolicitudPagoServicio);

                    //return RedirectToAction("Buscar", "GestionPagoBandeja", new { init = "true" });
                    return RedirectToAction("Pagar", "GestionPagoBandeja", new { tipoTran = "2" });
                }
                else if (submit3 == "Cancelar")
                {
                    return RedirectToAction("Buscar", "GestionPagoBandeja", new { init = "true" });
                }
                else
                {

                    var multitablaNegocio = new MultitablaNegocio();
                    var listaPagos = new TFPagoServicioNegocio();
                    var view = new GestionPagoViewModel();
                    view.tipoTransaccion = tipoTran;
                    if (view.ListaEstados == null || view.ListaEstados.Count <= 0)
                    {
                        List<ElementoVob> listadoEstados = multitablaNegocio.BuscarElementos(GrupoTabla.EstadoReciboProvisional);
                        List<ElementoVob> listadoEstadosNew = new List<ElementoVob>();
                        ElementoVob inicial = new ElementoVob();
                        inicial.Valor = "-1";
                        inicial.Texto = "Seleccionar";
                        listadoEstadosNew.Add(inicial);

                        foreach (ElementoVob obj in listadoEstados)
                        {
                            if (!"Pendiente".Equals(obj.Texto))
                            {
                                listadoEstadosNew.Add(obj);
                            }
                        }


                        view.ListaEstados = listadoEstadosNew.LlenarTT();
                    }

                    if (view.ListaMonedas == null || view.ListaMonedas.Count <= 0)
                    {
                        List<ElementoVob> listaMonedas = multitablaNegocio.BuscarElementos(GrupoTabla.TipoMoneda);
                        List<ElementoVob> listaMonedasNew = new List<ElementoVob>();
                        ElementoVob inicial = new ElementoVob();
                        inicial.Valor = "-1";
                        inicial.Texto = "Seleccionar";
                        listaMonedasNew.Add(inicial);

                        foreach (ElementoVob obj in listaMonedas)
                        {
                            if (!"Pendiente".Equals(obj.Texto))
                            {
                                listaMonedasNew.Add(obj);
                            }
                        }


                        view.ListaMonedas = listaMonedasNew.LlenarTT();
                    }

                    if (view.ListaFormaPago == null || view.ListaFormaPago.Count <= 0)
                    {
                        List<FormaPagoVob> listaFormaPago = listaPagos.listaFormaPago();
                        List<ElementoVob> listaFormaPagoNew = new List<ElementoVob>();
                        ElementoVob inicial = new ElementoVob();
                        inicial.Valor = "-1";
                        inicial.Texto = "Seleccionar";
                        listaFormaPagoNew.Add(inicial);

                        foreach (FormaPagoVob obj in listaFormaPago)
                        {
                            ElementoVob elemento = new ElementoVob();
                            elemento.Valor = obj.Codigo.ToString();
                            elemento.Texto = obj.Descripcion;
                            listaFormaPagoNew.Add(elemento);
                        }


                        view.ListaFormaPago = listaFormaPagoNew.LlenarTT();
                    }

                    SolicitudBusquedaSolicitudPagoServVob request = new SolicitudBusquedaSolicitudPagoServVob();
                    request.SolicitudPagoServFilter = new SolicitudPagoServicioVob();
                    request.SolicitudPagoServFilter.NumSolicitudPago = id;
                    RespuestaBusquedaSolicitudPagoServVob respuesta = listaPagos.BuscarSolicitudesPagoSericio(request);

                    view.SolicitudPagoServicio = respuesta.listaSolicitudPagoServicio[0];
                    view.SolicitudPagoServicio.FechaCorta = DateTime.Now.ToString("dd/MM/yyyy");
                    view.SolicitudPagoServicio.Hora = DateTime.Now.ToString("hh:mm:ss");
                    


                    return PartialView("FrmPago", view);
                }

            }
            catch (Exception ex)
            {
                return RedirectToAction("ErrorSistema", "Error", new { mensaje = ex.Message });
            }
        }