public DTODocenteReporte ObtenerPeriodos(int ServicioId) { try { var Sistema = (from a in db.PreguntaServicios where a.CategoriaId == ServicioId select a.EsSabatino) .GroupBy(k => k).ToList().Select(O => O.FirstOrDefault()).ToList(); DTODocenteReporte objd = new DTODocenteReporte(); objd.DocenteId = ServicioId; objd.Nombre = db.Categorias.Where(k => k.CategoriaId == ServicioId).FirstOrDefault().Descripcion; objd.Sistema = new List<DTOSistemaR>(); #region Todos List<DTOPeriodosR> lstPEriodost = new List<DTOPeriodosR>(); var periodost = (from a in db.PreguntaServicios where a.CategoriaId == ServicioId select a.PeriodoId) .GroupBy(k => k).ToList().Select(O => O.FirstOrDefault()).ToList(); periodost.ForEach(p => { var carrerast = (from a in db.PreguntaServicios where a.CategoriaId == ServicioId && a.PeriodoId == p select a.CarreraId) .GroupBy(k => k).ToList().Select(O => O.FirstOrDefault()).ToList(); lstPEriodost.Add(new DTOPeriodosR { Descripcion = db.Periodo.Where(p1 => p1.PeriodoId == p).FirstOrDefault().Descripcion, PeriodoId = p, Carreras = db.Carrera.Where(c => carrerast.Contains(c.CarreraId)) .Select(c => new DTOCarrerasR { CarreraId = c.CarreraId, Descripcion = c.Descripcion }).ToList() }); }); objd.Sistema.Add( new DTOSistemaR { SistemaId = -1, Descripcion = "--Todos--", Periodos = lstPEriodost }); #endregion #region Sistema Sabatino y Escolarizado Sistema.ForEach(l => { int sistemaEsc = l ? 1 : 2; List<DTOPeriodosR> lstPEriodos = new List<DTOPeriodosR>(); var periodos = (from a in db.PreguntaServicios where a.CategoriaId == ServicioId && a.EsSabatino == l select a.PeriodoId) .GroupBy(k => k).ToList().Select(O => O.FirstOrDefault()).ToList(); periodos.ForEach(p => { var carreras = (from a in db.PreguntaServicios where a.CategoriaId == ServicioId && a.EsSabatino == l && a.PeriodoId == p select a.CarreraId) .GroupBy(k => k).ToList().Select(O => O.FirstOrDefault()).ToList(); lstPEriodos.Add(new DTOPeriodosR { Descripcion = db.Periodo.Where(p1 => p1.PeriodoId == p).FirstOrDefault().Descripcion, PeriodoId = p, Carreras = db.Carrera.Where(c => carreras.Contains(c.CarreraId)) .Select(c => new DTOCarrerasR { CarreraId = c.CarreraId, Descripcion = c.Descripcion }).ToList() }); }); objd.Sistema.Add( new DTOSistemaR { SistemaId = sistemaEsc, Descripcion = l == true ? "Sabatino" : "Escolarizado", Periodos = lstPEriodos }); }); #endregion return objd; } catch { return null; } }
public DTO.DTODocenteReporte OBtenerDocente(string DocenteId) { int DocenteId2 = int.Parse(DocenteId); db.Configuration.LazyLoadingEnabled = true; var list = db.PreguntaDocente.Where(k => k.DocenteId == DocenteId2).AsNoTracking().ToList(); #region Periodo -> Carrera -> Materia DTODocenteReporte objDocente; if (list.Count > 0) { objDocente = new DTODocenteReporte { Nombre = list.FirstOrDefault().Docente.Nombre + " " + list.FirstOrDefault().Docente.Paterno + " " + list.FirstOrDefault().Docente.Materno, DocenteId = list.FirstOrDefault().Docente.DocenteId, ImgDocente = list.FirstOrDefault().Docente.urlImagen, Sistema = list.GroupBy(k => k.EsSabatino) .Select(K => new DTOSistemaR { Descripcion = K.FirstOrDefault().EsSabatino ? "Sabatino" : "Escolarizado", SistemaId = K.FirstOrDefault().EsSabatino ? 1 : 0, Periodos = list.Where(o => o.EsSabatino).GroupBy(k => k.PeriodoId).OrderBy(k => k.FirstOrDefault().PeriodoId).Select(k => new DTOPeriodosR { PeriodoId = k.FirstOrDefault().PeriodoId, Descripcion = k.FirstOrDefault().Periodo.Descripcion }).ToList() }).ToList() }; objDocente.Sistema.Add(new DTOSistemaR { Descripcion = "Todos", SistemaId = -1, Periodos = list.GroupBy(k => k.PeriodoId).OrderBy(k => k.FirstOrDefault().PeriodoId).Select(k => new DTOPeriodosR { PeriodoId = k.FirstOrDefault().PeriodoId, Descripcion = k.FirstOrDefault().Periodo.Descripcion, Carreras = k.GroupBy( l => l.CarreraId).OrderBy(l => l.FirstOrDefault().CarreraId) .Select(l => new DTOCarrerasR { CarreraId = l.FirstOrDefault().CarreraId, Descripcion = l.FirstOrDefault().Carrera.Descripcion, Materias = l.GroupBy(M => M.MateriaId).OrderBy(M => M.FirstOrDefault().MateriaId) .Select(M => new DTOMateriasR { MateriaId = M.FirstOrDefault().MateriaId, Descripcion = M.FirstOrDefault().Materia.Descripcion }).ToList() }).ToList() }).ToList(), }); objDocente.Sistema.ForEach(k1 => { if (k1.SistemaId == 1) { k1.Periodos = list.Where(o => o.EsSabatino).GroupBy(k => k.PeriodoId).OrderBy(k => k.FirstOrDefault().PeriodoId).Select(k => new DTOPeriodosR { PeriodoId = k.FirstOrDefault().PeriodoId, Descripcion = k.FirstOrDefault().Periodo.Descripcion, Carreras = k.GroupBy( l => l.CarreraId).OrderBy(l => l.FirstOrDefault().CarreraId) .Select(l => new DTOCarrerasR { CarreraId = l.FirstOrDefault().CarreraId, Descripcion = l.FirstOrDefault().Carrera.Descripcion, Materias = l.GroupBy(M => M.MateriaId).OrderBy(M => M.FirstOrDefault().MateriaId) .Select(M => new DTOMateriasR { MateriaId = M.FirstOrDefault().MateriaId, Descripcion = M.FirstOrDefault().Materia.Descripcion }).ToList() }).ToList() }).ToList(); } else if (k1.SistemaId == 0) { k1.Periodos = list.Where(o => !o.EsSabatino).GroupBy(k => k.PeriodoId).OrderBy(k => k.FirstOrDefault().PeriodoId).Select(k => new DTOPeriodosR { PeriodoId = k.FirstOrDefault().PeriodoId, Descripcion = k.FirstOrDefault().Periodo.Descripcion, Carreras = k.GroupBy( l => l.CarreraId).OrderBy(l => l.FirstOrDefault().CarreraId) .Select(l => new DTOCarrerasR { CarreraId = l.FirstOrDefault().CarreraId, Descripcion = l.FirstOrDefault().Carrera.Descripcion, Materias = l.GroupBy(M => M.MateriaId).OrderBy(M => M.FirstOrDefault().MateriaId) .Select(M => new DTOMateriasR { MateriaId = M.FirstOrDefault().MateriaId, Descripcion = M.FirstOrDefault().Materia.Descripcion }).ToList() }).ToList() }).ToList(); } }); } else { return(new DTODocenteReporte { DocenteId = 5, Nombre = db.Docente.Where(k => k.DocenteId == DocenteId2).FirstOrDefault().Nombre }); } #endregion return(objDocente); }