//(int? id)
        public ActionResult fcajaMasivaOKSINnumExp(string nro_expediente, DateTime? fecha_ini, DateTime? fecha_fin, Int32? id_dependencia, Int32? id_subserie, Int32? caja)
        {
            List<Caja> Cajas = new List<Caja>();
            var listaAgrupada = db.t_hoja_control.Include(h => h.p_dependencia).Where(h => h.fecha_expediente_ini != null && h.nro_expediente.Contains(nro_expediente))
                .GroupBy(x => new { x.p_dependencia.id, x.p_dependencia.codigo, x.p_dependencia.nombre, x.id_subserie, x.caja }).Select(c => new
                {
                    Id_dependencia = c.Key.id,
                    Cod_dependencia = c.Key.codigo,
                    Nom_dependencia = c.Key.nombre,
                    num_caja = c.Key.caja,
                    id_subserie = c.Key.id_subserie
                }).OrderBy(o => o.Cod_dependencia).ThenBy(c => c.num_caja).AsEnumerable();
            //FILTRO X DEPENDENCIA
            if (!String.IsNullOrEmpty(id_dependencia.ToString()))
            { listaAgrupada = listaAgrupada.Where(g => g.Id_dependencia == id_dependencia); }
            //FILTRO POR SUBSERIE
            if (!String.IsNullOrEmpty(id_subserie.ToString()))
            { listaAgrupada = listaAgrupada.Where(g => g.id_subserie == id_subserie); }
            //FILTRO X CAJA
            if (!String.IsNullOrEmpty(caja.ToString()))
            { listaAgrupada = listaAgrupada.Where(g => g.num_caja == caja); }

            foreach (var item2 in listaAgrupada)
            {
                Caja Caja = new Caja();

                Caja.CodDependencia = item2.Cod_dependencia;
                Caja.NomDependencia = item2.Nom_dependencia;
                Caja.NumCaja = item2.num_caja;
                //CONSULTA LOS DATOS DEL DOCUMENTO INICIAL - INICIAL - INICIAL - INICIAL - INICIAL - INICIAL
                var RSt_doc_fecha_ini = db.t_hoja_control.Where(d => d.caja == Caja.NumCaja && d.id_dependencia == item2.Id_dependencia && d.id_subserie == item2.id_subserie)
                                        .OrderBy(d => d.num_carpeta).ThenBy(d => d.fecha_expediente_ini).Take(1);
                foreach (var item in RSt_doc_fecha_ini)
                {
                    //CALCULA SI INCLUYE EL NÙMERO DE EXPEDIENTE INICIAL
                    var RSt_fuid_hc_exp = db.t_fuid_hc_exp.Where(d => d.id_hoja_control == item.id).Select(c => new
                    {
                        incluye_num_exp = c.incluye_num_exp,
                        fecha_expediente_ini = c.t_hoja_control.fecha_expediente_ini
                    }).OrderBy(d => d.fecha_expediente_ini).Take(1);
                    foreach (var itemf in RSt_fuid_hc_exp)
                    {
                        Caja.incluye_num_expInicio = itemf.incluye_num_exp;
                    }
                    //TRAE EL NUMERO DE EXPEDIENTE INICIAL
                    Caja.nro_expedienteInicio = item.nro_expediente;
                    Caja.NumCarpetaInicio = item.num_carpeta;
                    //CONSULTA DOCUMENTO INICIAL DE LA HOJA DE CONTROL
                    var RSt_doc_fecha_Ini = db.t_documento.Where(d => d.id_hoja_control == item.id && d.fecha_doc_anio > 0).OrderBy(d => d.fecha_doc_anio).ThenBy(d => d.fecha_doc_mes).ThenBy(d => d.fecha_doc_dia).ThenBy(d => d.folio_ini).Take(1);
                    foreach (var item3 in RSt_doc_fecha_Ini)
                    {
                        if (item3.fecha_doc_anio == null)
                        {
                            Caja.FechaInicio = "Sin Fecha";
                        }
                        else
                        {
                            var dia = item3.fecha_doc_dia.ToString();
                            if (dia.Length == 1) dia = "0" + dia;
                            var mes = item3.fecha_doc_mes.ToString();
                            if (mes.Length == 1) mes = "0" + mes;
                            Caja.FechaInicio = dia + "/" + mes + "/" + item3.fecha_doc_anio.ToString();
                        }
                    }
                }
                //CONSULTA LOS DATOS DELDOCUMENTO FINAL - FINAL - FINAL - FINAL - FINAL - FINAL - FINAL
                var RSt_doc_fecha_fin = db.t_documento.Include(d => d.t_hoja_control)
                                .Where(d => d.t_hoja_control.caja == Caja.NumCaja && d.t_hoja_control.id_dependencia == item2.Id_dependencia && d.t_hoja_control.id_subserie == item2.id_subserie)
                                .Select(c => new
                                {
                                    num_carpeta = c.t_hoja_control.num_carpeta,
                                    fecha_doc_anio = c.fecha_doc_anio,
                                    fecha_doc_mes = c.fecha_doc_mes,
                                    fecha_doc_dia = c.fecha_doc_dia,
                                    nro_expedienteFin = c.t_hoja_control.nro_expediente,
                                    id_hoja_control = c.t_hoja_control.id
                                }).OrderByDescending(h => h.num_carpeta).ThenByDescending(d => d.fecha_doc_anio).ThenByDescending(d => d.fecha_doc_mes).ThenByDescending(d => d.fecha_doc_dia).Take(1);
                foreach (var item in RSt_doc_fecha_fin)
                {
                    //CALCULA SI INCLUYE EL NÙMERO DE EXPEDIENTE INICIAL
                    var RSt_fuid_hc_exp = db.t_fuid_hc_exp.Where(d => d.id_hoja_control == item.id_hoja_control).Select(c => new
                    {
                        incluye_num_exp = c.incluye_num_exp,
                        fecha_expediente_ini = c.t_hoja_control.fecha_expediente_ini
                    }).OrderByDescending(d => d.fecha_expediente_ini).Take(1);
                    foreach (var itemf in RSt_fuid_hc_exp)
                    {
                        Caja.incluye_num_expFin = itemf.incluye_num_exp;
                    }
                    //TRAE EL NUMERO DE EXPEDIENTE FINAL
                    Caja.nro_expedienteFin = item.nro_expedienteFin;
                    Caja.NumCarpetaFin = item.num_carpeta;
                    //TRAE LA FECHA DEL DOCUMENTO FINAL
                    var dia = item.fecha_doc_dia.ToString();
                    if (dia.Length == 1) dia = "0" + dia;

                    var mes = item.fecha_doc_mes.ToString();
                    if (mes.Length == 1) mes = "0" + mes;

                    Caja.FechaFin = dia + "/" + mes + "/" + item.fecha_doc_anio.ToString();
                }

                Cajas.Add(Caja);
            }

            return View(Cajas.ToList()); //Json(ResultadoQuery, JsonRequestBehavior.AllowGet);
        }
 public ActionResult fcajaMasiva(Caja Caja)
 {
     if (Session["usuario"] != null)
     {
         var usuario = Session["usuario"] as User;
         if (usuario.Perfil != "ADMIN" && usuario.Perfil != "CARGUE")
         {
             return RedirectToAction("Index", "Home");
         }
     }
     else return RedirectToAction("Login", "Login");
     if (Request.Form["nro_expediente"] == null || Request.Form["nro_expediente"] == "")
     {
         if (Request.Form["AgruparAnio"] == "true")
         {
             return RedirectToAction("fcajaMasivaOK", new { nro_expediente = Request.Form["nro_expediente"], fecha_ini = Request.Form["fecha_elaboracion_ini"], fecha_fin = Request.Form["fecha_elaboracion_fin"], id_dependencia = Request.Form["id_dependencia"], id_subserie = Request.Form["id_subserie"], caja = Request.Form["caja"] });
         }
         else {
             return RedirectToAction("fcajaMasivaOKSIN", new { nro_expediente = Request.Form["nro_expediente"], fecha_ini = Request.Form["fecha_elaboracion_ini"], fecha_fin = Request.Form["fecha_elaboracion_fin"], id_dependencia = Request.Form["id_dependencia"], id_subserie = Request.Form["id_subserie"], caja = Request.Form["caja"] });
         }
     }
     else
     {
         if (Request.Form["AgruparAnio"] == "true")
         {
             return RedirectToAction("fcajaMasivaOKnumExp", new { nro_expediente = Request.Form["nro_expediente"], fecha_ini = Request.Form["fecha_elaboracion_ini"], fecha_fin = Request.Form["fecha_elaboracion_fin"], id_dependencia = Request.Form["id_dependencia"], id_subserie = Request.Form["id_subserie"], caja = Request.Form["caja"] });
         }
         else
         {
             return RedirectToAction("fcajaMasivaOKSINnumExp", new { nro_expediente = Request.Form["nro_expediente"], fecha_ini = Request.Form["fecha_elaboracion_ini"], fecha_fin = Request.Form["fecha_elaboracion_fin"], id_dependencia = Request.Form["id_dependencia"], id_subserie = Request.Form["id_subserie"], caja = Request.Form["caja"] });
         }
     }
 }