public ActionResult DetalleEnvios(int?id)
        {
            List <wl_waldos> lista = new List <wl_waldos>();

            ViewBag.Folio = db.wl_waldos.Where(x => x.id == id).FirstOrDefault().folio;
            ViewBag.Fecha = db.wl_waldos.Where(x => x.id == id).FirstOrDefault().fechaalta;

            //ViewBag.Tienda = db.wl_detenvios.Where(x => x.wl_cajas_Id == id).FirstOrDefault().wl_tiendas.codigo;
            //ViewBag.Caja = db.wl_detenvios.Where(x => x.wl_cajas_Id == id).FirstOrDefault().wl_cajas.Codigo;
            //ViewBag.StatusCaja = db.wl_detenvios.Where(x => x.wl_cajas_Id == id).FirstOrDefault().wl_cajas.wl_statuscajas.descripcion;

            int cajas = 0;

            foreach (var item in db.wl_detenvios.Where(x => x.wl_waldos_Id == id).ToList())
            {
                wl_waldos detalle = new wl_waldos();
                detalle.id     = item.id;
                detalle.caja   = item.wl_cajas.Codigo;
                detalle.guia   = item.wl_guias.guia;
                detalle.tienda = item.wl_tiendas.codigo;
                cajas++;

                lista.Add(detalle);
            }

            ViewBag.CantidadCajas = cajas;

            return(View(lista));
        }
        public async Task <bool> InsercionDetalleEnvios(DataTable dtCharge)
        {
            try
            {
                List <wl_guias> listaGuiasBusqueda = await ListaGuiasAsync();

                List <wl_cajas> listaCajasBusqueda = await ListaCajasAsync();

                List <wl_tiendas> listaTiendasBusqueda = await ListaTiendasAsync();

                string    folioenvio = "OGL-WLD-" + (db.wl_waldos.Count() + 1);
                wl_waldos waldos     = new wl_waldos();
                waldos.folio     = folioenvio;
                waldos.fechaalta = DateTime.Now;

                db.wl_waldos.Add(waldos);
                await db.SaveChangesAsync();

                int idenvio = waldos.id;

                List <wl_detenvios> listaEnvios = new List <wl_detenvios>();

                foreach (DataRow row in dtCharge.Rows)
                {
                    string cajacodigo   = row[3].ToString().Trim().ToUpper();
                    string guia         = row[6].ToString().Trim().ToUpper();
                    string codigotienda = row[0].ToString().Trim().ToUpper();

                    wl_detenvios detenvios = new wl_detenvios();
                    detenvios.wl_cajas_Id   = listaCajasBusqueda.Where(x => x.Codigo.Equals(cajacodigo)).FirstOrDefault().id;
                    detenvios.wl_guias_Id   = listaGuiasBusqueda.Where(x => x.guia.Equals(guia)).FirstOrDefault().id;
                    detenvios.wl_tiendas_Id = listaTiendasBusqueda.Where(x => x.codigo.Equals(codigotienda)).FirstOrDefault().id;

                    listaEnvios.Add(detenvios);
                }

                var listaAgrupada = listaEnvios.GroupBy(x => x.wl_cajas_Id);

                List <wl_detenvios> listaEnviosAgregar = new List <wl_detenvios>();

                foreach (var item in listaAgrupada)
                {
                    wl_detenvios detenvios = new wl_detenvios();
                    detenvios.wl_cajas_Id   = item.Key;
                    detenvios.wl_guias_Id   = listaEnvios.Where(x => x.wl_cajas_Id.Equals(item.Key)).FirstOrDefault().wl_guias_Id;
                    detenvios.wl_tiendas_Id = listaEnvios.Where(x => x.wl_cajas_Id.Equals(item.Key)).FirstOrDefault().wl_tiendas_Id;
                    detenvios.wl_waldos_Id  = idenvio;

                    listaEnviosAgregar.Add(detenvios);
                }

                db.wl_detenvios.AddRange(listaEnviosAgregar);
                await db.SaveChangesAsync();

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }