public List <Modelos.Retornos.LideresDeCelulaPorRed> ObtenerLideresDeCelulaPorRed(int celulaId)
        {
            ManejadorDeCelulas manejador = new ManejadorDeCelulas();
            List <int>         celulas   = manejador.ObtenerRedInferior(celulaId);

            celulas.Add(celulaId); //Agregamos la celula actual para incluir sus lideres

            return((
                       from o in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaLider
                       where
                       o.Borrado == false &&
                       o.Miembro.Borrado == false &&
                       celulas.Contains(o.CelulaId)
                       orderby o.Celula.Descripcion
                       select new Modelos.Retornos.LideresDeCelulaPorRed
            {
                Id = o.MiembroId,
                Nombre = o.Miembro.Primer_Nombre + " " + o.Miembro.Segundo_Nombre + " " + o.Miembro.Apellido_Paterno + " " + o.Miembro.Apellido_Materno,
                Email = o.Miembro.Email,
                TelMovil = o.Miembro.Tel_Movil,
                TelCasa = o.Miembro.Tel_Casa,
                TelTrabajo = o.Miembro.Tel_Trabajo,
                CelulaId = o.CelulaId,
                Celula = o.Celula.Descripcion,
                Genero = o.Miembro.Genero.Descripcion
            }).ToList <Modelos.Retornos.LideresDeCelulaPorRed>());
        }
        public List <RegistroBasico> ObtenerLiderazgoIndirectoPorMiembro(Miembro miembro)
        {
            ManejadorDeCelulas manejadorDeCelulas = new ManejadorDeCelulas();
            List <int>         red = new List <int>();

            foreach (RegistroBasico celula in ObtenerLiderazgoDirectoPorMiembro(miembro))
            {
                red.AddRange(manejadorDeCelulas.ObtenerRedInferior(celula.Id));
            }

            return((from o in SesionActual.Instance.getContexto <IglesiaEntities>().Celula
                    where
                    red.Contains(o.CelulaId) && o.Borrado == false
                    select new RegistroBasico
            {
                Id = o.CelulaId,
                Descripcion = o.Descripcion
            }).ToList <RegistroBasico>());
        }
        /// <summary>
        /// Obtiene una cadena que tiene todas celulas "padres" a partir de la celula definida como parametro de entrada
        /// </summary>
        /// <param name="celula"></param>
        /// <param name="separador"></param>
        /// <returns></returns>
        public string ObtenerRedSuperior(Celula celula, string separador)
        {
            separador = string.Format(" {0} ", separador.Trim());
            System.Text.StringBuilder rtn       = new System.Text.StringBuilder(1024);
            ManejadorDeCelulas        manejador = new ManejadorDeCelulas();

            List <Celula> red = manejador.ObtenerRedSuperior(celula);

            foreach (Celula c in red)
            {
                rtn.AppendFormat("{0} [{1}]", c.Descripcion, c.CelulaId);

                if (c != red.Last())
                {
                    rtn.Append(separador);
                }
            }

            return(rtn.ToString());
        }
        public IEnumerable <object> Buscar(TipoDeObjeto tipoDeObjeto, string[] conceptosABuscar)
        {
            ManejadorDeCelulas manejadorCelulas = new ManejadorDeCelulas();
            int        usuarioId            = SesionActual.Instance.UsuarioId;
            List <int> idsCelulasPermitidas = manejadorCelulas.ObtenerCelulasPermitidasPorMiembroComoIds(usuarioId);
            List <int> idsCelulasSinLider   = manejadorCelulas.ObtenerCelulasSinLideresComoCelulas().Select(o => o.CelulaId).ToList <int>();

            switch (tipoDeObjeto)
            {
            case TipoDeObjeto.Celula:
            {
                return(Celula.Buscar(conceptosABuscar, idsCelulasPermitidas.Union(idsCelulasSinLider).ToList <int>()).Select(o => new {
                        Id = o.CelulaId,
                        Descripcion = o.Descripcion,
                        RowColor = idsCelulasSinLider.Contains(o.CelulaId) ? "red" : string.Empty
                    }));
            }

            case TipoDeObjeto.Miembro:
            {
                return(Miembro.Buscar(conceptosABuscar, idsCelulasPermitidas.ToList <int>()).Select(o => new
                    {
                        Id = o.MiembroId,
                        Descripcion = o.Primer_Nombre + " " + o.Segundo_Nombre + " " + o.Apellido_Paterno + " " + o.Apellido_Materno + " (" + o.Email + ")"
                    }));
            }

            case TipoDeObjeto.AlabanzaMiembro:
            {
                return(AlabanzaMiembro.Buscar(conceptosABuscar).Select(o => new
                    {
                        Id = o.Id,
                        Descripcion = o.Miembro.Primer_Nombre + " " + o.Miembro.Segundo_Nombre + " " + o.Miembro.Apellido_Paterno + " " + o.Miembro.Apellido_Materno + " (" + o.Miembro.Email + ")"
                    }));
            }

            default: {
                return(new List <EntityObject>());
            }
            }
        }
Exemplo n.º 5
0
        public List <UltimasAsistenciasPorCelula> ObtenerUltimasAsistenciasPorCelula(int celulaId)
        {
            List <UltimasAsistenciasPorCelula> asistencias = new List <UltimasAsistenciasPorCelula>();

            ManejadorDeCelulas manejadorDeCelulas = new ManejadorDeCelulas();
            List <int>         celulas            = manejadorDeCelulas.ObtenerRedInferior(celulaId);

            celulas.Add(celulaId); //Agregamos la celula actual para incluir sus lideres

            ManejadorDeAsistenciasDeCelula manejadorDeAsistenciasDeCelula = new ManejadorDeAsistenciasDeCelula();

            foreach (int celula in celulas)
            {
                Celula c = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Celula where o.CelulaId == celula select o).SingleOrDefault();
                asistencias.Add(new UltimasAsistenciasPorCelula
                {
                    Id          = c.CelulaId,
                    Descripcion = c.Descripcion,
                    Fecha       = manejadorDeAsistenciasDeCelula.ObtenerFechaDeUltimaAsistencia(c.CelulaId)
                });
            }

            return(asistencias);
        }
        public Modelos.Retornos.InformacionGeneralPorRed ObtenerInformacionGeneralPorRed(int celulaId)
        {
            string cacheKey = MethodInfo.GetCurrentMethod().Name + "_" + celulaId;

            Modelos.Retornos.InformacionGeneralPorRed reporte = Cache.Instance.Obtener <Modelos.Retornos.InformacionGeneralPorRed>(cacheKey);

            if (reporte == null)
            {
                ManejadorDeCelulas manejadorDeCelulas = new ManejadorDeCelulas();
                List <int>         red = new List <int>()
                {
                    celulaId
                };
                red.AddRange(manejadorDeCelulas.ObtenerRedInferior(celulaId));

                // Queries

                IEnumerable <Miembro> miembros = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Miembro
                                                  where
                                                  (o.CelulaId == celulaId || red.Contains(o.CelulaId)) &&
                                                  o.Borrado == false
                                                  select o);

                IEnumerable <CelulaLider> lideres = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaLider where o.Borrado == false && o.Miembro.Borrado == false && (red.Contains(o.CelulaId) && o.CelulaId != celulaId) select o);

                IEnumerable <Miembro> estacas = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Miembro
                                                 join p in SesionActual.Instance.getContexto <IglesiaEntities>().MiembroPaso on o.MiembroId equals p.MiembroId
                                                 where
                                                 (o.CelulaId == celulaId || red.Contains(o.CelulaId)) &&
                                                 p.PasoId == 9 &&
                                                 !lideres.Select(x => x.MiembroId).Contains(o.MiembroId) &&
                                                 o.Borrado == false &&
                                                 p.Borrado == false
                                                 select o);

                IEnumerable <Miembro> folis = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Miembro
                                               join p in SesionActual.Instance.getContexto <IglesiaEntities>().MiembroPaso on o.MiembroId equals p.MiembroId
                                               where
                                               (o.CelulaId == celulaId || red.Contains(o.CelulaId)) &&
                                               p.PasoId == 6 &&
                                               !lideres.Select(x => x.MiembroId).Contains(o.MiembroId) &&
                                               !estacas.Select(x => x.MiembroId).Contains(o.MiembroId) &&
                                               o.Borrado == false &&
                                               p.Borrado == false
                                               select o);

                int cantidadDeMiembrosHombres = miembros.Where(o => o.GeneroId == 1).Count();
                int cantidadDeMiembrosMujeres = miembros.Where(o => o.GeneroId == 2).Count();
                int CantidadDeMiembrosQueAsistenIglesiaHombres = miembros.Where(o => o.GeneroId == 1 && o.AsisteIglesia == true).Count();
                int CantidadDeMiembrosQueAsistenIglesiaMujeres = miembros.Where(o => o.GeneroId == 2 && o.AsisteIglesia == true).Count();

                reporte = new Modelos.Retornos.InformacionGeneralPorRed();
                reporte.CantidadDeCelulas                          = red.Count - 1;
                reporte.CantidadDeLideresDeCelula                  = lideres.Count();
                reporte.CantidadDeEstacas                          = estacas.Count();
                reporte.CantidadDeFolis                            = folis.Count();
                reporte.CantidadDeMiembros                         = cantidadDeMiembrosHombres + cantidadDeMiembrosMujeres;
                reporte.CantidadDeMiembrosHombres                  = cantidadDeMiembrosHombres;
                reporte.CantidadDeMiembrosMujeres                  = cantidadDeMiembrosMujeres;
                reporte.CantidadDeMiembrosQueAsistenIglesia        = CantidadDeMiembrosQueAsistenIglesiaHombres + CantidadDeMiembrosQueAsistenIglesiaMujeres;
                reporte.CantidadDeMiembrosQueAsistenIglesiaHombres = CantidadDeMiembrosQueAsistenIglesiaHombres;
                reporte.CantidadDeMiembrosQueAsistenIglesiaMujeres = CantidadDeMiembrosQueAsistenIglesiaMujeres;

                Cache.Instance.Guardar(cacheKey, reporte, 2);
            }

            return(reporte);
        }