Ejemplo n.º 1
0
        public AnexGRIDResponde ListarGrilla(int id, AnexGRID grilla)
        {
            try
            {
                using (var db = new ModeloDatos())
                {
                    grilla.Inicializar();

                    var query = db.Curso.Include("Ciclo").Where(x => x.curso_cod != "" || x.curso_cod != null).Where(x => x.plan_id == id);

                    if (grilla.columna == "curso_cod")
                    {
                        query = grilla.columna_orden == "DESC" ? query.OrderByDescending(x => x.curso_cod)
                                                               : query.OrderBy(x => x.curso_cod);
                    }

                    if (grilla.columna == "ciclo_id")
                    {
                        query = grilla.columna_orden == "DESC" ? query.OrderByDescending(x => x.ciclo_id)
                                                               : query.OrderBy(x => x.ciclo_id);
                    }

                    if (grilla.columna == "nombre")
                    {
                        query = grilla.columna_orden == "DESC" ? query.OrderByDescending(x => x.nombre)
                                                               : query.OrderBy(x => x.nombre);
                    }

                    if (grilla.columna == "prerequisito")
                    {
                        query = grilla.columna_orden == "DESC" ? query.OrderByDescending(x => x.prerequisito)
                                                               : query.OrderBy(x => x.prerequisito);
                    }

                    // Filtrar
                    foreach (var f in grilla.filtros)
                    {
                        if (f.columna == "nombre" && f.valor != "")
                        {
                            query = query.Where(x => x.ciclo_id.ToString() == f.valor);
                        }

                        if (f.columna == "nombrecurso")
                        {
                            query = query.Where(x => x.nombre.StartsWith(f.valor));
                        }
                    }


                    var curso = query.Skip(grilla.pagina)
                                .Take(grilla.limite)
                                .ToList();

                    var total = query.Count();

                    grilla.SetData(from s in curso
                                   select new
                    {
                        s.curso_cod,
                        s.Ciclo.nombre,
                        nombrecurso = s.nombre,
                        s.prerequisito
                    }, total);
                }
            }
            catch (Exception e)
            {
                throw;
            }

            return(grilla.responde());
        }