/// <summary>
        /// Descripción: Controlador para obtener e imprimir los codigos de muestra por EESS.
        /// Author: Terceros.
        /// Fecha Creacion: 01/01/2017
        /// Fecha Modificación: 02/02/2017.
        /// Modificación: Se agregaron comentarios.
        /// </summary>
        /// <returns></returns>
        public ActionResult MostrarCodigo()
        {
            ViewBag.isPost = false;
            MuestraDal dal = new MuestraDal();

            ViewBag.idExtablecimientoUsuario = EstablecimientoSeleccionado.IdEstablecimiento;

            if (Request["idEstablecimiento"] != null)
            {
                int    idEstablecimiento = int.Parse(Request["idEstablecimiento"].ToString());
                string desde             = Request["txtDesde"].ToString();
                string hasta             = Request["txtHasta"].ToString();
                int    cantidad          = int.Parse(Request["txtCantidad"].ToString());
                var    chkcodigoLineal   = Request["chkCodigoLineal"];

                if (desde.Length == 5 && hasta.Length == 5)
                {
                    var listaEstablecimientos = Session["establecimientoList"] as List <Establecimiento>;

                    var renaes = listaEstablecimientos.FirstOrDefault(i => i.IdEstablecimiento == idEstablecimiento);
                    //EstablecimientosUsuario.Where(i => i.IdEstablecimiento == idEstablecimiento).FirstOrDefault().CodigoUnico;
                    string codigoRenaes = renaes.CodigoUnico;

                    codigoRenaes = codigoRenaes.Substring(codigoRenaes.Length - 5, 5);
                    desde        = codigoRenaes + desde;
                    hasta        = codigoRenaes + hasta;
                }
                if (cantidad <= 0)
                {
                    cantidad = 1;
                }


                List <string> listaCodigos = dal.GetGeneradosByEstablecimiento(idEstablecimiento, desde, hasta);
                ViewBag.listaCodigos = listaCodigos;
                ViewBag.notFound     = false;

                if (listaCodigos == null || listaCodigos.Count == 0)
                {
                    ViewBag.notFound = true;
                }
                else
                {
                    this.Session["GCM_ListaCodigos"] = listaCodigos;
                    this.Session["GCM_Duplicados"]   = cantidad;
                    this.Session["GCM_codigoLineal"] = chkcodigoLineal;
                    return(RedirectToAction("ImprimirGenerados", "Muestra"));
                }
                ViewBag.isPost = true;
            }
            else
            {
            }


            return(View());
        }
        public ActionResult ImprimirCodigosGenerados()
        {
            MuestraDal dal = new MuestraDal();

            int    cantidad          = 0;
            int    idEstablecimiento = 0;
            int    duplicados        = 1;
            string tipo         = string.Empty;
            string codigoBarras = string.Empty;

            //Inicio - Sotero 03/07/2019 Generacion Codigo de Barra.
            string urlTemp                     = "";
            int    intMilliseconds             = 1000;
            List <PDFCodigoMuestraModel> lista = new List <PDFCodigoMuestraModel>();
            var varCodigoBarra                 = Request.RequestContext.RouteData.Values["id"];
            var varCodigoBarra2                = Request.Form["chkCodigoLineal"];

            if (varCodigoBarra2 != null && varCodigoBarra2 == "on")
            {
                this.Session["GCM_codigoLineal"] = "on";
            }
            else
            {
                this.Session["GCM_codigoLineal"] = null;
            }
            List <string> codigos = new List <string>();

            if (varCodigoBarra != null)
            {
                tipo         = "B";
                codigoBarras = varCodigoBarra.ToString();
                urlTemp      = string.Format("{0}://{1}{2}{3}/",
                                             Request.Url.Scheme,
                                             Request.Url.Host,
                                             Request.Url.Port == 80 ? string.Empty : ":" + Request.Url.Port,
                                             Request.ApplicationPath);

                urlTemp = urlTemp + "QR/WFCodBarra.aspx?barcode=" + varCodigoBarra.ToString();
                HttpWebRequest  request  = WebRequest.Create(urlTemp) as HttpWebRequest;
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                Stream          stream   = response.GetResponseStream();

                Thread.Sleep(intMilliseconds);

                lista.Add(new PDFCodigoMuestraModel()
                {
                    codigo   = varCodigoBarra.ToString(),
                    url      = Url.Content("~") + "QR/Images/" + varCodigoBarra.ToString() + ".png",
                    cantidad = duplicados,
                    Tipo     = "B"
                });
            }
            else
            {
                tipo = "Q";
                if (this.Session["GCM_Cantidad"] != null)
                {
                    cantidad          = (int)this.Session["GCM_Cantidad"];
                    idEstablecimiento = (int)this.Session["GCM_Establecimiento"];
                    if (Request["txtCantidad"] != null)
                    {
                        duplicados = int.Parse(Request["txtCantidad"].ToString());
                    }
                    else if (Session["GCM_Duplicados"] != null)
                    {
                        duplicados = (int)Session["GCM_Duplicados"];
                    }

                    if (duplicados < 1)
                    {
                        duplicados = 1;
                    }

                    string columna = varCodigoBarra2 != null && varCodigoBarra2 == "on" ? "codigoLineal" : "codificacion";
                    codigos = dal.UltimosGenerados(Logueado.idUsuario, idEstablecimiento, cantidad, columna);
                }

                if (this.Session["GCM_ListaCodigos"] != null)
                {
                    duplicados = (int)this.Session["GCM_Duplicados"];
                    codigos    = (List <string>) this.Session["GCM_ListaCodigos"];
                }
                if (this.Session["GCM_codigoLineal"] != null)
                {
                    tipo = "B";
                }

                idEstablecimiento = Request["idEstablecimiento"] != ""?int.Parse(Request["idEstablecimiento"].ToString()):0;
                string solicitud = Request["txtNumSolicitud"] == null ? "": Request["txtNumSolicitud"].ToString();
                string desde     = Request["txtDesde"].ToString();
                string hasta     = Request["txtHasta"].ToString();
                if (solicitud != "")
                {
                    idEstablecimiento = 0;
                    desde             = "-";
                    hasta             = "-";
                }

                if (!codigos.Any() && Session["GCM_ListaCodigos"] == null && !string.IsNullOrWhiteSpace(desde) && !string.IsNullOrWhiteSpace(hasta))
                {
                    string columna = varCodigoBarra2 != null && varCodigoBarra2 == "on" ? "codigoLineal" : "codificacion";
                    codigos = dal.GetGeneradosByEstablecimiento(idEstablecimiento, desde, hasta, solicitud, columna);
                    codigos = codigos.Where(x => x != "").ToList();
                }
            }
            //List<PDFCodigoMuestraModel> lista = new List<PDFCodigoMuestraModel>();
            //Pendiente = Calibrar los margenes
            //string urlTemp = "";
            //Fin - Sotero 03/07/2019 Generacion Codigo de Barra.
            foreach (string codigo in codigos)
            {
                if (tipo == "B")
                {
                    codigoBarras = codigo;
                    urlTemp      = string.Format("{0}://{1}{2}{3}/",
                                                 Request.Url.Scheme,
                                                 Request.Url.Host,
                                                 Request.Url.Port == 80 ? string.Empty : ":" + Request.Url.Port,
                                                 Request.ApplicationPath);

                    urlTemp = urlTemp + "QR/WFCodBarra.aspx?barcode=" + codigo;
                    HttpWebRequest  request  = WebRequest.Create(urlTemp) as HttpWebRequest;
                    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                    Stream          stream   = response.GetResponseStream();

                    Thread.Sleep(intMilliseconds);

                    lista.Add(new PDFCodigoMuestraModel()
                    {
                        codigo   = codigo,
                        url      = Url.Content("~") + "QR/Images/" + codigo + ".png",
                        cantidad = duplicados,
                        Tipo     = "B"
                    });
                }
                else
                {
                    urlTemp = Url.Content("~") + "QR/WFCodBar.aspx?barcode=" + codigo +
                              "&MODE=" + 1 +
                              "&PFMT=" + 0 +
                              "&IR=" + 20 +
                              "&X=" + "0.300" +
                              "&Left_Margin=" + "0.05" +
                              "&Top_Margin=" + "0.05" +
                              "&FORMAT=" + "GIF";
                    lista.Add(new PDFCodigoMuestraModel()
                    {
                        codigo   = codigo,
                        url      = urlTemp,
                        cantidad = duplicados,
                        Tipo     = "Q" // Sotero 03/07/2019 Generacion Codigo de Barra.
                    });
                }
            }

            ViewBag.lista = lista;
            ViewBag.tipo  = tipo;
            //ViewBag.codigoBarras = codigoBarras;
            return(View("ImprimirGenerados", lista));
        }