public bool IniciarSesionClick()
        {
            int miembroSecundarioId = registroMiembro.ObtenerId();

            if (miembroSecundarioId > 0)
            {
                ManejadorDeCelulas manejadorDeCelulas = new ManejadorDeCelulas();
                List <int>         celulasPermitidas  = manejadorDeCelulas.ObtenerCelulasPermitidasPorMiembroComoIds(SesionActual.Instance.UsuarioId);

                Miembro miembroSecundario = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Miembro where o.MiembroId == miembroSecundarioId && o.Borrado == false select o).SingleOrDefault();
                if (miembroSecundario != null && celulasPermitidas.Contains(miembroSecundario.CelulaId))
                {
                    Miembro miembroActual = ManejadorDeMiembros.ObtenerMiembroActual();
                    log.InfoFormat("El usuario {0} [{1}] iniciara sesion como {2} [{3}]", miembroActual.Email, miembroActual.MiembroId, miembroSecundario.Email, miembroSecundario.MiembroId);

                    this.RestablecerCacheDeSesion();
                    ManejadorDeMiembros manejadorDeMiembros = new ManejadorDeMiembros();
                    manejadorDeMiembros.IniciarSesion(miembroSecundario.Email, string.Empty, true);

                    return(true);
                }
                else
                {
                    X.Msg.Alert(Generales.nickNameDeLaApp, "Miembro inexistente o no pertenece a la red").Show();
                }
            }
            else
            {
                X.Msg.Alert(Generales.nickNameDeLaApp, "Es necesario establecer un miembro").Show();
            }
            return(false);
        }
        public static string ObtenerReporteGeneral(int celulaId)
        {
            if (celulaId > 0)
            {
                Stopwatch stopwatch = Stopwatch.StartNew();

                ManejadorDeCelulas manejadorDeCelulas = new ManejadorDeCelulas();

                List <int>    celulasInferioresrDirectas = manejadorDeCelulas.ObtenerRedInferiorDirecta(celulaId);
                List <Celula> celulasDirectas            = new List <Celula>()
                {
                    (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Celula where o.CelulaId == celulaId select o).SingleOrDefault()
                };
                celulasDirectas.AddRange((from o in SesionActual.Instance.getContexto <IglesiaEntities>().Celula where celulasInferioresrDirectas.Contains(o.CelulaId) select o));

                List <dynamic> resultadosAnuales = new List <dynamic>();

                foreach (Celula celula in celulasDirectas.OrderBy(o => o.Descripcion))
                {
                    resultadosAnuales.Add(ObtenerResultadosAnualesParaGanar(celula));
                }

                stopwatch.Stop();
                log.Info("Segundos para generar el reporte: " + stopwatch.Elapsed.TotalSeconds);

                return(resultadosAnuales.ToJson());
            }
            else
            {
                return((new { error = Resources.Literales.CelulaYFechaNecesarias }).ToJson());
            }
        }
        public void CargarControles()
        {
            ManejadorDeCelulas manejador = new ManejadorDeCelulas();

            cboCelula.DataSource = manejador.ObtenerCelulasPermitidasPorMiembroComoCelulas(SesionActual.Instance.UsuarioId);
            cboCelula.DataBind();
        }
        private void cargarDatosGenerales(int celulaId)
        {
            ManejadorDeCelulas manejadorCelulas = new ManejadorDeCelulas();
            Celula             celula           = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Celula where o.CelulaId == celulaId select o).SingleOrDefault();

            registroId.Text          = celula.CelulaId.ToString();
            registroDescripcion.Text = celula.Descripcion;
            registroRed.Text         = registroRed.Text = manejadorCelulas.ObtenerRedSuperior(celula, " > ");
            registroMunicipio.Text   = celula.UbicacionMunicipio.Descripcion;
            registroColonia.Text     = celula.Colonia;
            registroDireccion.Text   = celula.Direccion;
            registroDia.Text         = celula.DiaSemana.Descripcion;
            registroHora.Text        = celula.HoraDia.Descripcion;

            X.Call("cargarMapaDesdeDireccionEnPanel", gridDireccion.ClientID, celula.UbicacionMunicipio.UbicacionEstado.UbicacionPais.Descripcion, celula.UbicacionMunicipio.UbicacionEstado.Descripcion, celula.UbicacionMunicipio.Descripcion, celula.Colonia, celula.Direccion);

            StoreLideres.Cargar(from o in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaLider
                                where
                                o.CelulaId == celulaId &&
                                o.Borrado == false &&
                                o.Miembro.Borrado == false
                                orderby o.Miembro.Primer_Nombre, o.Miembro.Segundo_Nombre, o.Miembro.Apellido_Paterno, o.Miembro.Apellido_Materno, o.Miembro.Email
                                select new
            {
                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
            });
        }
        public void CargarControles()
        {
            ManejadorDeCelulas manejadorCelulas = new ManejadorDeCelulas();

            StoreCelulas.Cargar(manejadorCelulas.ObtenerCelulasPermitidasPorMiembroComoCelulas(SesionActual.Instance.UsuarioId));
            StoreEstadosCiviles.Cargar(EstadoCivil.Obtener());
            StoreGeneros.Cargar(Genero.Obtener());
        }
        /// <summary>
        /// Esta funcion se encarga de generar un arbol de las celulas disponibles para dicho usuario, incluidas a las cuales es lider, lider del lider y la misma que el usuario mismo asiste
        /// </summary>
        /// <param name="usuarioId"></param>
        /// <param name="mostrarCheckboxes"></param>
        /// <returns></returns>
        public Ext.Net.TreeNode GenerarArbolDeCelulas(int usuarioId, ThreeStateBool mostrarCheckboxes, bool expandido)
        {
            ManejadorDeCelulas manejadorCelulas = new ManejadorDeCelulas();

            List <Celula> celulasPermitidas = manejadorCelulas.ObtenerCelulasPermitidasPorMiembroComoCelulas(usuarioId);

            TreeData.TreeDataTableDataTable dt = new TreeData.TreeDataTableDataTable();

            //Agregamos la celula a la que el miembro asiste, aun y cuando sera de solo lectura; solamente si no existia ya en la lista de celulas permitidas (es decir, asiste y es lider a la vez)
            Miembro miembro = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Miembro where o.MiembroId == usuarioId select o).SingleOrDefault();

            if (!(celulasPermitidas.Any(o => o.CelulaId == miembro.CelulaId)))
            {
                dt.AddTreeDataTableRow(miembro.CelulaId.ToString(), string.Empty, miembro.Celula.Descripcion, atributoDeSoloLectura);
            }

            string celulaId;
            string miembroCelulaId;
            string atributoExtra;

            foreach (Celula c in celulasPermitidas)
            {
                celulaId = c.CelulaId.ToString();
                if (c.CelulaLider.Count > 0)
                {
                    CelulaLider celulaLider = c.CelulaLider.FirstOrDefault(o => o.Borrado == false && o.Miembro.Borrado == false);
                    if (celulaLider != null)
                    {
                        miembroCelulaId = celulaLider.Miembro.CelulaId.ToString();
                        miembroCelulaId = (celulaId.Equals(miembroCelulaId)) ? string.Empty : miembroCelulaId; //Evitamos un loop infinito al momento en que el miembro sea lider de la celula a la que asiste
                        atributoExtra   = (string.IsNullOrEmpty(miembroCelulaId)) ? atributoDeSoloLectura : string.Empty;
                        dt.AddTreeDataTableRow(celulaId, miembroCelulaId, c.Descripcion, atributoExtra);
                    }
                }
            }

            //Obtenemos las celulas sin "lideres"
            List <Celula> celulasSinLider = manejadorCelulas.ObtenerCelulasSinLideresComoCelulas();

            if (celulasSinLider.Count > 0)
            {
                int idNodoCelulasSinLideres = 9999999;
                dt.AddTreeDataTableRow(idNodoCelulasSinLideres.ToString(), miembro.CelulaId.ToString(), "Celulas sin Asignacion de Lider", atributoDeSoloLectura);
                foreach (Celula c in celulasSinLider)
                {
                    dt.AddTreeDataTableRow(c.CelulaId.ToString(), idNodoCelulasSinLideres.ToString(), c.Descripcion, string.Empty);
                }
            }

            Ext.Net.TreeNode navegacion = new Ext.Net.TreeNode("Celulas");
            navegacion.Expanded = expandido;
            if ((celulasPermitidas != null) && (celulasPermitidas.Count > 0))
            {
                generarNodos(navegacion, TreeBuilder.GenerateTree(miembro.CelulaId.ToString(), dt), mostrarCheckboxes, expandido); //La celula inicial es la celula a la que el usuario asiste
            }

            return(navegacion);
        }
        public void CargarControles()
        {
            ManejadorDeCelulas manejador = new ManejadorDeCelulas();

            StoreCelulas.DataSource = manejador.ObtenerCelulasPermitidasPorMiembroComoCelulas(SesionActual.Instance.UsuarioId);
            StoreCelulas.DataBind();

            DateTime now = DateTime.Now;
            DateTime primerDiaDelMesPasado = new DateTime(now.Year, now.Month, 1).AddMonths(-1);

            dtpFechaInicial.SelectedDate = primerDiaDelMesPasado;
            dtpFechaFinal.SelectedDate   = now;
        }
        public static string ObtenerBoletas(string sFechaInicial, string sFechaFinal)
        {
            DateTime fechaInicial;
            DateTime fechaFinal;

            if (DateTime.TryParse(sFechaInicial, out fechaInicial) == false || DateTime.TryParse(sFechaFinal, out fechaFinal) == false)
            {
                fechaInicial = DateTime.MinValue;
                fechaFinal   = DateTime.MinValue;
            }

            if ((fechaInicial.Year > 1900 && fechaFinal.Year > 1900))
            {
                ManejadorDeCelulas manejadorDeCelulas = new ManejadorDeCelulas();

                // Pre-cargamos todas las celulas/miembros/redes para usarlos al momento de "modificar" el resultado a mostrar al usuario
                List <Celula>  celulas  = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Celula where o.Borrado == false select o).ToList();
                List <Miembro> miembros = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Miembro where o.Borrado == false select o).ToList();
                Dictionary <Celula, List <int> > redes = manejadorDeCelulas.ObtenerRedes();

                var query = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().ConsolidacionBoleta
                             where o.Creacion >= fechaInicial && o.Creacion <= fechaFinal && o.Borrado == false
                             select new
                {
                    o.AsignadaACelulaId,
                    o.AsignadaAMiembroId,
                    o.BoletaEstatusId,
                    o.Creacion.Year,
                    o.Creacion.Month
                });

                String sinAsignacion = "(Sin Asignación)";

                // Executamos el query, y luego modificamos ciertos campos
                return(query.AsEnumerable().Select(o => new
                {
                    Red = o.AsignadaACelulaId.HasValue ? redes.Where(p => p.Key.CelulaId == o.AsignadaACelulaId || p.Value.Contains(o.AsignadaACelulaId.Value) == true).Select(p => p.Key.Descripcion).SingleOrDefault() ?? sinAsignacion : sinAsignacion,
                    Celula = o.AsignadaACelulaId.HasValue ? celulas.Where(p => p.CelulaId == o.AsignadaACelulaId).Select(p => p.Descripcion).SingleOrDefault() ?? sinAsignacion : sinAsignacion,
                    Miembro = o.AsignadaAMiembroId.HasValue ? miembros.Where(p => p.MiembroId == o.AsignadaAMiembroId).Select(p => p.NombreCompleto).SingleOrDefault() ?? sinAsignacion : sinAsignacion,
                    Estatus = ConsolidacionBoleta.Estatus.Lista().Where(x => x.Key == o.BoletaEstatusId).FirstOrDefault().Value.Split('-')[0].Trim(),
                    SubEstatus = ConsolidacionBoleta.Estatus.Lista().Where(x => x.Key == o.BoletaEstatusId).FirstOrDefault().Value.Split('-')[1].Trim(),
                    Año = o.Year,
                    Mes = o.Month + " - " + CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(o.Month).ToUpper()
                }).ToList().ToJson());
            }
            else
            {
                X.Msg.Alert(Generales.nickNameDeLaApp, "Es necesario seleccionar las fechas antes de continuar.").Show();
                return(string.Empty);
            }
        }
        public void BorrarCelulaPermanentementeClick()
        {
            int celulaSeleccionada;

            if (int.TryParse(cboCelula.SelectedItem.Value, out celulaSeleccionada))
            {
                ManejadorDeCelulas manejadorDeCelulas = new ManejadorDeCelulas();
                manejadorDeCelulas.BorrarCelulaPermanentemente(celulaSeleccionada);
                X.Msg.Alert(Generales.nickNameDeLaApp, "Celula borrarda permanentemente!").Show();
            }
            else
            {
                X.Msg.Alert(Generales.nickNameDeLaApp, Resources.Literales.CelulaNecesaria).Show();
            }
        }
        public string CargarClick()
        {
            string rtn;
            int    celulaSeleccionada;

            if (int.TryParse(cboCelula.SelectedItem.Value, out celulaSeleccionada))
            {
                int usuarioId = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaLider where ((o.CelulaId == celulaSeleccionada) && (o.Borrado == false)) select o.MiembroId).FirstOrDefault();
                ManejadorDeCelulas manejadorCelulasWeb = new ManejadorDeCelulas();
                rtn = this.GenerarArbolDeCelulas(usuarioId, ThreeStateBool.Undefined, false).Nodes.ToJson();
            }
            else
            {
                X.Msg.Alert(Generales.nickNameDeLaApp, Resources.Literales.CelulaYFechaNecesarias).Show();
                rtn = string.Empty;
            }
            return(rtn);
        }
        private void cargarDatosGenerales(Miembro miembro)
        {
            ManejadorDeCelulas manejadorCelulas = new ManejadorDeCelulas();

            registroId.Text                = miembro.MiembroId.ToString();
            registroNombre.Text            = miembro.Primer_Nombre + " " + miembro.Segundo_Nombre + " " + miembro.Apellido_Paterno + " " + miembro.Apellido_Materno;
            registroRed.Text               = manejadorCelulas.ObtenerRedSuperior(miembro.Celula, " > ");
            registroEmail.Text             = miembro.Email;
            registroMunicipio.Text         = miembro.UbicacionMunicipio.Descripcion;
            registroColonia.Text           = miembro.Colonia;
            registroDireccion.Text         = miembro.Direccion;
            registroEstadoCivil.Text       = miembro.EstadoCivil.Descripcion;
            registroFechaDeNacimiento.Text = string.Format("{0} ({1} años)", miembro.Fecha_Nacimiento.GetValueOrDefault(DateTime.Today).ToShortDateString(), ((DateTime.Today - miembro.Fecha_Nacimiento.GetValueOrDefault(DateTime.Today)).Days / 365).ToString());
            registroTelefonos.Text         = string.Format("{0} | {1} | {2}", miembro.Tel_Casa, miembro.Tel_Movil, miembro.Tel_Trabajo);
            registroComentario.Text        = miembro.Comentario;

            X.Call("cargarMapaDesdeDireccionEnPanel", gridDireccion.ClientID, miembro.UbicacionMunicipio.UbicacionEstado.UbicacionPais.Descripcion, miembro.UbicacionMunicipio.UbicacionEstado.Descripcion, miembro.UbicacionMunicipio.Descripcion, miembro.Colonia, miembro.Direccion);
            X.Call("cargarFoto", registroFoto.ClientID, miembro.MiembroId);
        }
        void ICatalogo.Buscar()
        {
            ManejadorDeCelulas manejadorCelulas = new ManejadorDeCelulas();

            List <int> idsDiasDeLaSemana    = filtroDiaDeLaSemana.ObtenerIds();
            List <int> idsHorasDelDia       = filtroHoraDelDia.ObtenerIds();
            List <int> idCategorias         = filtroCategoria.ObtenerIds();
            int        idMunicipio          = filtroMunicipio.ObtenerId();
            List <int> idsCelulasPermitidas = manejadorCelulas.ObtenerCelulasPermitidasPorMiembroComoIds(SesionActual.Instance.UsuarioId);
            List <int> idsCelulasSinLider   = manejadorCelulas.ObtenerCelulasSinLideresComoCelulas().Select(o => o.CelulaId).ToList <int>();

            StoreResultados.Cargar((
                                       from o in SesionActual.Instance.getContexto <IglesiaEntities>().Celula
                                       where
                                       ((o.CelulaId == (filtroId.Number > 0 ? filtroId.Number : o.CelulaId)) &&
                                        ((o.Descripcion.Contains(filtroDescripcion.Text)) || (o.Descripcion == null)) &&
                                        (idsDiasDeLaSemana.Contains(o.DiaSemanaId) || (idsDiasDeLaSemana.Count == 0)) &&
                                        (idsHorasDelDia.Contains(o.HoraDiaId) || (idsHorasDelDia.Count == 0)) &&
                                        (idCategorias.Contains(o.CategoriaId) || (idCategorias.Count == 0)) &&
                                        (o.UbicacionMunicipioId == (idMunicipio > 0 ? idMunicipio : o.UbicacionMunicipioId)) &&
                                        ((o.Colonia.Contains(filtroColonia.Text)) || (o.Colonia == null)) &&
                                        ((o.Direccion.Contains(filtroDireccion.Text)) || (o.Direccion == null)) &&
                                        (o.Borrado == false) &&                                                                 //Registros NO borrados
                                        (idsCelulasPermitidas.Contains(o.CelulaId) || idsCelulasSinLider.Contains(o.CelulaId))) //Dentro de las celulas permitidas para el usuario actual... o aquellas celulas sin lider asignado (para poderlas BORRAR)
                                       orderby
                                       o.Descripcion
                                       select new {
                Id = o.CelulaId,
                Descripcion = o.Descripcion,
                DiaSemanaDesc = o.DiaSemana.Descripcion,
                HoraDiaDesc = o.HoraDia.Descripcion,
                Municipio = o.UbicacionMunicipio.Descripcion,
                Colonia = o.Colonia,
                Direccion = o.Direccion,
                Categoria = o.CelulaCategoria.Descripcion,
                Coordenadas = o.Coordenadas,
                RowColor = idsCelulasSinLider.Contains(o.CelulaId) ? "red" : string.Empty
            }));
        }
Example #13
0
        public void CargarControles()
        {
            ManejadorDeCelulas manejador = new ManejadorDeCelulas();

            StoreCelulas.Cargar(manejador.ObtenerRedesPermitidasPorMiembro(SesionActual.Instance.UsuarioId));
        }
Example #14
0
        protected void cmdBuscarConcepto_Click(object sender, DirectEventArgs e)
        {
            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>();

            //Obtemenos todos los conceptos a buscar (separados por espacios)
            string[] conceptosABuscar = registroConceptoABuscar.Text.Trim().Split(' ');

            //Guarda los resultados obtenidos de las busquedas
            IQueryable <object> resultados = null;

            switch (tipoDeBusqueda)
            {
            case ManejadorDeBusquedas.TipoDeObjeto.Celula:
            {
                var busqueda = Celula.BuscarV1(conceptosABuscar, idsCelulasPermitidas.Union(idsCelulasSinLider).ToList <int>());         //Dentro de las celulas permitidas para el usuario actual... o aquellas celulas sin lider asignado (para poderlas ASGINAR)
                resultados = ((
                                  from o in SesionActual.Instance.getContexto <IglesiaEntities>().Celula.Where(busqueda)
                                  orderby
                                  o.Descripcion
                                  select new
                    {
                        Id = o.CelulaId,
                        Descripcion = o.Descripcion,
                        RowColor = idsCelulasSinLider.Contains(o.CelulaId) ? "red" : string.Empty
                    })).AsExpandable();
                break;
            }

            case ManejadorDeBusquedas.TipoDeObjeto.Miembro:
            {
                var busqueda = Miembro.BuscarV1(conceptosABuscar, idsCelulasPermitidas.ToList <int>());     //Dentro de las celulas permitidas para el usuario actual... o el mismo usuario actual
                resultados = ((
                                  from o in SesionActual.Instance.getContexto <IglesiaEntities>().Miembro.Where(busqueda)
                                  orderby
                                  o.Primer_Nombre, o.Segundo_Nombre, o.Apellido_Paterno, o.Apellido_Materno
                                  select new
                    {
                        Id = o.MiembroId,
                        Descripcion = o.Primer_Nombre + " " + o.Segundo_Nombre + " " + o.Apellido_Paterno + " " + o.Apellido_Materno + " (" + o.Email + ")"
                    })).AsExpandable();
                break;
            }
            }

            if (resultados != null)
            {
                int numeroDeResultadosMax = 75; //Es el numero maximo de resultados a regresar al cliente...
                int numeroDeResultados    = resultados.Count();
                if (numeroDeResultados > numeroDeResultadosMax)
                {
                    X.Msg.Alert(Generales.nickNameDeLaApp, string.Format(Resources.Literales.LimiteDeResultadosExcedido, numeroDeResultados, numeroDeResultadosMax)).Show();
                    numeroDeResultados = numeroDeResultadosMax;
                }
                StoreObjetosEncontrados.Cargar(resultados.Take(numeroDeResultadosMax));
                registroNumeroDeResultados.Text = string.Format("{0} Resultados", numeroDeResultados);
            }

            //Ponemos el foco el el grid...
            GridDeListadoDeObjetos.Focus();
        }
Example #15
0
 public List <Core.Modelos.Retornos.CelulaProxima> ObtenerCelulasProximas(double latitud, double longitud)
 {
     manejadorDeCelulas = new ManejadorDeCelulas();
     return(manejadorDeCelulas.ObtenerCelulasProximas(latitud, longitud, Convert.ToInt32(filtroKilometros.Number), filtroCategoria.ObtenerIds()));
 }
        private static dynamic ObtenerResultadosAnualesParaGanar(Celula celula)
        {
            dynamic rtn = new ExpandoObject();

            ManejadorDeCelulas manejadorDeCelulas = new ManejadorDeCelulas();
            List <int>         red = new List <int>()
            {
                celula.CelulaId
            };

            red.AddRange(manejadorDeCelulas.ObtenerRedInferior(celula.CelulaId));

            rtn.id             = celula.CelulaId;
            rtn.nombre         = celula.Descripcion;
            rtn.resultadoAnual = new List <dynamic>();

            DateTime fechaInicial = DateTime.Now.FirstMondayOfYear();
            DateTime fechaFinal   = fechaInicial.AddYears(1).AddDays(-1);

            List <Celula> totalCelulas = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().Celula
                                          where
                                          red.Contains(o.CelulaId) &&
                                          o.Creacion <= fechaFinal &&
                                          o.Borrado == false
                                          select o).ToList();

            List <CelulaMiembroAsistencia> totalAsistencias = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaMiembroAsistencia
                                                               where
                                                               red.Contains(o.CelulaId) &&
                                                               EntityFunctions.CreateDateTime(o.Anio, o.Mes, o.Dia, 0, 0, 0) > fechaInicial &&
                                                               EntityFunctions.CreateDateTime(o.Anio, o.Mes, o.Dia, 0, 0, 0) <= fechaFinal
                                                               select o).ToList();

            List <CelulaInvitadosAsistencia> totalInvitados = (from o in SesionActual.Instance.getContexto <IglesiaEntities>().CelulaInvitadosAsistencia
                                                               where
                                                               red.Contains(o.CelulaId) &&
                                                               EntityFunctions.CreateDateTime(o.Anio, o.Mes, o.Dia, 0, 0, 0) > fechaInicial &&
                                                               EntityFunctions.CreateDateTime(o.Anio, o.Mes, o.Dia, 0, 0, 0) <= fechaFinal
                                                               select o).ToList();

            DateTime fecha = fechaInicial;

            while (fecha < DateTime.Now)
            {
                dynamic resultadoSemanal = new ExpandoObject();

                DateTime fechaSiguiente = fecha.Date.AddDays(7);

                resultadoSemanal.semana = fecha.GetWeekNumber();

                resultadoSemanal.activas = (from o in totalCelulas
                                            where
                                            o.Creacion <= fechaSiguiente
                                            select o).Count();

                resultadoSemanal.realizadas = (from o in totalAsistencias
                                               where
                                               new DateTime(o.Anio, o.Mes, o.Dia, 0, 0, 0) > fecha &&
                                               new DateTime(o.Anio, o.Mes, o.Dia, 0, 0, 0) <= fechaSiguiente
                                               select o.CelulaId).Distinct().Count();


                resultadoSemanal.invitados = (from o in totalInvitados
                                              where
                                              new DateTime(o.Anio, o.Mes, o.Dia, 0, 0, 0) > fecha &&
                                              new DateTime(o.Anio, o.Mes, o.Dia, 0, 0, 0) <= fechaSiguiente
                                              select(int?) o.NumeroDeInvitados).Sum() ?? 0;

                resultadoSemanal.asistencia = (from o in totalAsistencias
                                               where
                                               new DateTime(o.Anio, o.Mes, o.Dia, 0, 0, 0) > fecha &&
                                               new DateTime(o.Anio, o.Mes, o.Dia, 0, 0, 0) <= fechaSiguiente
                                               select o).Count();

                // Agregamos el resultado semanal al resultado anual
                rtn.resultadoAnual.Add(resultadoSemanal);

                // Una semana mas
                fecha = fecha.AddDays(7);
            }

            return(rtn);
        }
        public ActionResult Index()
        {
            ManejadorDeCelulas             manejadorDeCelulas     = new ManejadorDeCelulas();
            ManejadorDeAsistenciasDeCelula manejadorDeAsistencias = new ManejadorDeAsistenciasDeCelula();

            List <RegistroBasico> celulas = manejadorDeCelulas.ObtenerCelulasPermitidasPorMiembro(SesionActual.Instance.UsuarioId);

            Celula         celulaPrincipal       = manejadorDeCelulas.ObtenerCelulaQueMiembroEsLider(SesionActual.Instance.UsuarioId);
            RegistroBasico celulaPreseleccionada = new RegistroBasico()
            {
                Id          = celulaPrincipal.CelulaId,
                Descripcion = celulaPrincipal.Descripcion
            };

            DateTime fechaPreseleccionada = manejadorDeAsistencias.ObtenerFechaDeSiguienteAsistencia(celulaPreseleccionada.Id);

            Core.Modelos.Retornos.AsistenciaDeCelulaPorMiembroSumarizada asistenciaPreseleccionada = manejadorDeAsistencias.ObtenerAsistencia(celulaPreseleccionada.Id, fechaPreseleccionada);

            List <RegistroBasico> dias = new List <RegistroBasico>();

            for (int i = 1; i <= 31; i++)
            {
                string descripcion;
                try
                {
                    DateTime d = new DateTime(fechaPreseleccionada.Year, fechaPreseleccionada.Month, i);
                    descripcion = i.ToString().PadLeft(2, '0') + " - " + CultureInfo.CurrentCulture.TextInfo.ToTitleCase(CultureInfo.CurrentUICulture.DateTimeFormat.DayNames[(int)(new DateTime(fechaPreseleccionada.Year, fechaPreseleccionada.Month, i)).DayOfWeek]);
                }
                catch (Exception)
                {
                    descripcion = i.ToString();
                }

                RegistroBasico dia = new RegistroBasico();
                dia.Id          = i;
                dia.Descripcion = descripcion;
                dias.Add(dia);
            }

            List <RegistroBasico> meses = new List <RegistroBasico>();

            for (int i = 1; i < 13; i++)
            {
                RegistroBasico mes = new RegistroBasico();
                mes.Id          = i;
                mes.Descripcion = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(CultureInfo.CurrentUICulture.DateTimeFormat.MonthNames[i - 1]);
                meses.Add(mes);
            }

            List <RegistroBasico> anios = new List <RegistroBasico>();

            for (int i = 2011; i <= 2015; i++)
            {
                RegistroBasico anio = new RegistroBasico();
                anio.Id          = i;
                anio.Descripcion = i.ToString();
                anios.Add(anio);
            }

            ViewBag.CelulasPermitidas = new SelectList(celulas, "Id", "Descripcion", celulaPreseleccionada.Id);
            ViewBag.Dias              = new SelectList(dias, "Id", "Descripcion", fechaPreseleccionada.Day);
            ViewBag.Meses             = new SelectList(meses, "Id", "Descripcion", fechaPreseleccionada.Month);
            ViewBag.Anios             = new SelectList(anios, "Id", "Descripcion", fechaPreseleccionada.Year);
            ViewBag.NumeroDeInvitados = 0;
            ViewBag.Asistencia        = this.RenderPartialView("_Asistencia", asistenciaPreseleccionada.Asistencias);

            return(View());
        }
        public void BuscarMiembros()
        {
            ManejadorDeCelulas manejadorCelulas = new ManejadorDeCelulas();
            int usuarioId = SesionActual.Instance.UsuarioId;

            List <int> idsCelulas                      = filtroCelula.ObtenerIds();
            List <int> idGeneros                       = filtroGenero.ObtenerIds();
            List <int> idsEstadosCiviles               = filtroEstadoCivil.ObtenerIds();
            int        idMunicipio                     = filtroMunicipio.ObtenerId();
            List <int> idsCelulasPermitidas            = manejadorCelulas.ObtenerCelulasPermitidasPorMiembroComoIds(usuarioId);
            List <int> idsCelulasSinLider              = manejadorCelulas.ObtenerCelulasSinLideresComoIds();
            List <int> idsCelulasEliminadasConMiembros = manejadorCelulas.ObtenerCelulasEliminadasConMiembrosComoIds();
            bool       registrosBorrados               = filtroBorrado.Checked;
            bool       registrosSinCelula              = filtroSinCelula.Checked;
            int?       conyugeId                       = filtroConyuge.ObtenerId(true);

            //Guarda los resultados obtenidos de las busquedas
            IQueryable <object> resultados = null;

            switch (tipoDeMiembro)
            {
            case TipoDeMiembroABuscar.Miembro:
            {
                resultados = (
                    from o in SesionActual.Instance.getContexto <IglesiaEntities>().Miembro
                    where
                    ((o.MiembroId == (filtroId.Number > 0 ? filtroId.Number : o.MiembroId)) &&
                     ((o.Primer_Nombre.Contains(filtroPrimerNombre.Text)) || (o.Primer_Nombre == null)) &&
                     ((o.Segundo_Nombre.Contains(filtroSegundoNombre.Text)) || (o.Segundo_Nombre == null)) &&
                     ((o.Apellido_Paterno.Contains(filtroApellidoPaterno.Text)) || (o.Apellido_Paterno == null)) &&
                     ((o.Apellido_Materno.Contains(filtroApellidoMaterno.Text)) || (o.Apellido_Materno == null)) &&
                     ((o.Email.Contains(filtroEmail.Text)) || (o.Email == null)) &&
                     (idsCelulas.Contains(o.CelulaId) || (idsCelulas.Count == 0)) &&
                     (idGeneros.Contains(o.GeneroId) || (idGeneros.Count == 0)) &&
                     (idsEstadosCiviles.Contains(o.EstadoCivilId) || (idsEstadosCiviles.Count == 0)) &&
                     (o.UbicacionMunicipioId == (idMunicipio > 0 ? idMunicipio : o.UbicacionMunicipioId)) &&
                     ((o.Colonia.Contains(filtroColonia.Text)) || (o.Colonia == null)) &&
                     ((o.Direccion.Contains(filtroDireccion.Text)) || (o.Direccion == null)) &&
                     (((o.Tel_Casa.Contains(filtroTel.Text)) || (o.Tel_Casa == null)) ||
                      ((o.Tel_Movil.Contains(filtroTel.Text)) || (o.Tel_Movil == null)) ||
                      ((o.Tel_Trabajo.Contains(filtroTel.Text)) || (o.Tel_Trabajo == null))) &&
                     (o.Fecha_Nacimiento == (filtroFechaDeNacimiento.SelectedDate > DateTime.MinValue ? filtroFechaDeNacimiento.SelectedDate : o.Fecha_Nacimiento)) &&
                     ((o.ConyugeId == conyugeId) || (conyugeId == null)) &&
                     (o.Borrado == registrosBorrados) &&
                     (((idsCelulasPermitidas.Contains(o.CelulaId)) && !registrosSinCelula) ||                                                        //Dentro de las celulas permitidas para el usuario actual
                      ((idsCelulasSinLider.Contains(o.CelulaId)) || (idsCelulasEliminadasConMiembros.Contains(o.CelulaId)) && registrosSinCelula) || //Dentro de los usuarios cuya celula no tiene lider
                      ((mostrarUsuarioActual) && (o.MiembroId == usuarioId))))                                                                       //El mismo usuario actual...
                    orderby o.Primer_Nombre ascending, o.Apellido_Paterno ascending
                    select new
                    {
                        GUID = o.MiembroId,
                        Id = o.MiembroId,
                        PrimerNombre = o.Primer_Nombre,
                        SegundoNombre = o.Segundo_Nombre,
                        ApellidoPaterno = o.Apellido_Paterno,
                        ApellidoMaterno = o.Apellido_Materno,
                        Email = o.Email,
                        Celula = (idsCelulasEliminadasConMiembros.Contains(o.CelulaId) ? string.Empty : o.Celula.Descripcion),
                        EstadoCivil = o.EstadoCivil.Descripcion,
                        Municipio = o.UbicacionMunicipio.Descripcion,
                        Colonia = o.Colonia,
                        TelCasa = o.Tel_Casa,
                        TelMovil = o.Tel_Movil,
                        TelTrabajo = o.Tel_Trabajo,
                        Nacimiento = o.Fecha_Nacimiento,
                        AsisteIglesia = o.AsisteIglesia,
                        Genero = o.Genero.Descripcion,
                        RowColor = (idsCelulasSinLider.Contains(o.CelulaId) || idsCelulasEliminadasConMiembros.Contains(o.CelulaId)) ? "red" : string.Empty
                    });
                break;
            }

            case TipoDeMiembroABuscar.ServidorCoordinador:
            {
                resultados = (
                    from o in SesionActual.Instance.getContexto <IglesiaEntities>().ServidorCoordinador
                    where
                    ((o.Miembro.MiembroId == (filtroId.Number > 0 ? filtroId.Number : o.Miembro.MiembroId)) &&
                     ((o.Miembro.Primer_Nombre.Contains(filtroPrimerNombre.Text)) || (o.Miembro.Primer_Nombre == null)) &&
                     ((o.Miembro.Segundo_Nombre.Contains(filtroSegundoNombre.Text)) || (o.Miembro.Segundo_Nombre == null)) &&
                     ((o.Miembro.Apellido_Paterno.Contains(filtroApellidoPaterno.Text)) || (o.Miembro.Apellido_Paterno == null)) &&
                     ((o.Miembro.Apellido_Materno.Contains(filtroApellidoMaterno.Text)) || (o.Miembro.Apellido_Materno == null)) &&
                     ((o.Miembro.Email.Contains(filtroEmail.Text)) || (o.Miembro.Email == null)) &&
                     (idsCelulas.Contains(o.Miembro.CelulaId) || (idsCelulas.Count == 0)) &&
                     (idGeneros.Contains(o.Miembro.GeneroId) || (idGeneros.Count == 0)) &&
                     (idsEstadosCiviles.Contains(o.Miembro.EstadoCivilId) || (idsEstadosCiviles.Count == 0)) &&
                     (o.Miembro.UbicacionMunicipioId == (idMunicipio > 0 ? idMunicipio : o.Miembro.UbicacionMunicipioId)) &&
                     ((o.Miembro.Colonia.Contains(filtroColonia.Text)) || (o.Miembro.Colonia == null)) &&
                     ((o.Miembro.Direccion.Contains(filtroDireccion.Text)) || (o.Miembro.Direccion == null)) &&
                     (((o.Miembro.Tel_Casa.Contains(filtroTel.Text)) || (o.Miembro.Tel_Casa == null)) ||
                      ((o.Miembro.Tel_Movil.Contains(filtroTel.Text)) || (o.Miembro.Tel_Movil == null)) ||
                      ((o.Miembro.Tel_Trabajo.Contains(filtroTel.Text)) || (o.Miembro.Tel_Trabajo == null))) &&
                     (o.Miembro.Fecha_Nacimiento == (filtroFechaDeNacimiento.SelectedDate > DateTime.MinValue ? filtroFechaDeNacimiento.SelectedDate : o.Miembro.Fecha_Nacimiento)) &&
                     (o.Miembro.Borrado == registrosBorrados) && //Registros NO borrados
                     (o.Borrado == false))                       //Registros NO borrados
                    orderby o.Miembro.Primer_Nombre ascending, o.Miembro.Apellido_Paterno ascending
                    select new
                    {
                        GUID = o.Id,
                        Id = o.Miembro.MiembroId,
                        PrimerNombre = o.Miembro.Primer_Nombre,
                        SegundoNombre = o.Miembro.Segundo_Nombre,
                        ApellidoPaterno = o.Miembro.Apellido_Paterno,
                        ApellidoMaterno = o.Miembro.Apellido_Materno,
                        Email = o.Miembro.Email,
                        Celula = o.Miembro.Celula.Descripcion,
                        EstadoCivil = o.Miembro.EstadoCivil.Descripcion,
                        Municipio = o.Miembro.UbicacionMunicipio.Descripcion,
                        Colonia = o.Miembro.Colonia,
                        TelCasa = o.Miembro.Tel_Casa,
                        TelMovil = o.Miembro.Tel_Movil,
                        TelTrabajo = o.Miembro.Tel_Trabajo,
                        Nacimiento = o.Miembro.Fecha_Nacimiento,
                        AsisteIglesia = o.Miembro.AsisteIglesia,
                        Genero = o.Miembro.Genero.Descripcion
                    });
                break;
            }

            case TipoDeMiembroABuscar.ServidorCapitan:
            {
                resultados = (
                    from o in SesionActual.Instance.getContexto <IglesiaEntities>().ServidorCapitan
                    where
                    ((o.Miembro.MiembroId == (filtroId.Number > 0 ? filtroId.Number : o.Miembro.MiembroId)) &&
                     ((o.Miembro.Primer_Nombre.Contains(filtroPrimerNombre.Text)) || (o.Miembro.Primer_Nombre == null)) &&
                     ((o.Miembro.Segundo_Nombre.Contains(filtroSegundoNombre.Text)) || (o.Miembro.Segundo_Nombre == null)) &&
                     ((o.Miembro.Apellido_Paterno.Contains(filtroApellidoPaterno.Text)) || (o.Miembro.Apellido_Paterno == null)) &&
                     ((o.Miembro.Apellido_Materno.Contains(filtroApellidoMaterno.Text)) || (o.Miembro.Apellido_Materno == null)) &&
                     ((o.Miembro.Email.Contains(filtroEmail.Text)) || (o.Miembro.Email == null)) &&
                     (idsCelulas.Contains(o.Miembro.CelulaId) || (idsCelulas.Count == 0)) &&
                     (idGeneros.Contains(o.Miembro.GeneroId) || (idGeneros.Count == 0)) &&
                     (idsEstadosCiviles.Contains(o.Miembro.EstadoCivilId) || (idsEstadosCiviles.Count == 0)) &&
                     (o.Miembro.UbicacionMunicipioId == (idMunicipio > 0 ? idMunicipio : o.Miembro.UbicacionMunicipioId)) &&
                     ((o.Miembro.Colonia.Contains(filtroColonia.Text)) || (o.Miembro.Colonia == null)) &&
                     ((o.Miembro.Direccion.Contains(filtroDireccion.Text)) || (o.Miembro.Direccion == null)) &&
                     (((o.Miembro.Tel_Casa.Contains(filtroTel.Text)) || (o.Miembro.Tel_Casa == null)) ||
                      ((o.Miembro.Tel_Movil.Contains(filtroTel.Text)) || (o.Miembro.Tel_Movil == null)) ||
                      ((o.Miembro.Tel_Trabajo.Contains(filtroTel.Text)) || (o.Miembro.Tel_Trabajo == null))) &&
                     (o.Miembro.Fecha_Nacimiento == (filtroFechaDeNacimiento.SelectedDate > DateTime.MinValue ? filtroFechaDeNacimiento.SelectedDate : o.Miembro.Fecha_Nacimiento)) &&
                     (o.Miembro.Borrado == registrosBorrados) && //Registros NO borrados
                     (o.Borrado == false))                       //Registros NO borrados
                    orderby o.Miembro.Primer_Nombre ascending, o.Miembro.Apellido_Paterno ascending
                    select new
                    {
                        GUID = o.Id,
                        Id = o.Miembro.MiembroId,
                        PrimerNombre = o.Miembro.Primer_Nombre,
                        SegundoNombre = o.Miembro.Segundo_Nombre,
                        ApellidoPaterno = o.Miembro.Apellido_Paterno,
                        ApellidoMaterno = o.Miembro.Apellido_Materno,
                        Email = o.Miembro.Email,
                        Celula = o.Miembro.Celula.Descripcion,
                        EstadoCivil = o.Miembro.EstadoCivil.Descripcion,
                        Municipio = o.Miembro.UbicacionMunicipio.Descripcion,
                        Colonia = o.Miembro.Colonia,
                        TelCasa = o.Miembro.Tel_Casa,
                        TelMovil = o.Miembro.Tel_Movil,
                        TelTrabajo = o.Miembro.Tel_Trabajo,
                        Nacimiento = o.Miembro.Fecha_Nacimiento,
                        AsisteIglesia = o.Miembro.AsisteIglesia,
                        Genero = o.Miembro.Genero.Descripcion
                    });
                break;
            }

            case TipoDeMiembroABuscar.AlabanzaMiembro:
            {
                resultados = (
                    from o in SesionActual.Instance.getContexto <IglesiaEntities>().AlabanzaMiembro
                    where
                    ((o.Miembro.MiembroId == (filtroId.Number > 0 ? filtroId.Number : o.Miembro.MiembroId)) &&
                     ((o.Miembro.Primer_Nombre.Contains(filtroPrimerNombre.Text)) || (o.Miembro.Primer_Nombre == null)) &&
                     ((o.Miembro.Segundo_Nombre.Contains(filtroSegundoNombre.Text)) || (o.Miembro.Segundo_Nombre == null)) &&
                     ((o.Miembro.Apellido_Paterno.Contains(filtroApellidoPaterno.Text)) || (o.Miembro.Apellido_Paterno == null)) &&
                     ((o.Miembro.Apellido_Materno.Contains(filtroApellidoMaterno.Text)) || (o.Miembro.Apellido_Materno == null)) &&
                     ((o.Miembro.Email.Contains(filtroEmail.Text)) || (o.Miembro.Email == null)) &&
                     (idsCelulas.Contains(o.Miembro.CelulaId) || (idsCelulas.Count == 0)) &&
                     (idGeneros.Contains(o.Miembro.GeneroId) || (idGeneros.Count == 0)) &&
                     (idsEstadosCiviles.Contains(o.Miembro.EstadoCivilId) || (idsEstadosCiviles.Count == 0)) &&
                     (o.Miembro.UbicacionMunicipioId == (idMunicipio > 0 ? idMunicipio : o.Miembro.UbicacionMunicipioId)) &&
                     ((o.Miembro.Colonia.Contains(filtroColonia.Text)) || (o.Miembro.Colonia == null)) &&
                     ((o.Miembro.Direccion.Contains(filtroDireccion.Text)) || (o.Miembro.Direccion == null)) &&
                     (((o.Miembro.Tel_Casa.Contains(filtroTel.Text)) || (o.Miembro.Tel_Casa == null)) ||
                      ((o.Miembro.Tel_Movil.Contains(filtroTel.Text)) || (o.Miembro.Tel_Movil == null)) ||
                      ((o.Miembro.Tel_Trabajo.Contains(filtroTel.Text)) || (o.Miembro.Tel_Trabajo == null))) &&
                     (o.Miembro.Fecha_Nacimiento == (filtroFechaDeNacimiento.SelectedDate > DateTime.MinValue ? filtroFechaDeNacimiento.SelectedDate : o.Miembro.Fecha_Nacimiento)) &&
                     (o.Miembro.Borrado == registrosBorrados) && //Registros NO borrados
                     (o.Borrado == false))                       //Registros NO borrados
                    orderby o.Miembro.Primer_Nombre ascending, o.Miembro.Apellido_Paterno ascending
                    select new
                    {
                        GUID = o.Id,
                        Id = o.Miembro.MiembroId,
                        PrimerNombre = o.Miembro.Primer_Nombre,
                        SegundoNombre = o.Miembro.Segundo_Nombre,
                        ApellidoPaterno = o.Miembro.Apellido_Paterno,
                        ApellidoMaterno = o.Miembro.Apellido_Materno,
                        Email = o.Miembro.Email,
                        Celula = o.Miembro.Celula.Descripcion,
                        EstadoCivil = o.Miembro.EstadoCivil.Descripcion,
                        Municipio = o.Miembro.UbicacionMunicipio.Descripcion,
                        Colonia = o.Miembro.Colonia,
                        TelCasa = o.Miembro.Tel_Casa,
                        TelMovil = o.Miembro.Tel_Movil,
                        TelTrabajo = o.Miembro.Tel_Trabajo,
                        Nacimiento = o.Miembro.Fecha_Nacimiento,
                        AsisteIglesia = o.Miembro.AsisteIglesia,
                        Genero = o.Miembro.Genero.Descripcion
                    });
                break;
            }
            }

            if (resultados != null)
            {
                //int numeroDeResultadosMax = 75; //Es el numero maximo de resultados a regresar al cliente...
                //int numeroDeResultados = resultados.Count();
                //if (numeroDeResultados > numeroDeResultadosMax) { X.Msg.Alert(Generales.nickNameDeLaApp, string.Format(Resources.Literales.LimiteDeResultadosExcedido, numeroDeResultados, numeroDeResultadosMax)).Show(); }
                //StoreResultados.Cargar(resultados.Take(numeroDeResultadosMax));
                StoreResultados.Cargar(resultados);
            }
        }
        private void mostrarAnunciosYAlertas()
        {
            ManejadorDeCelulas manejadorCelulas  = new ManejadorDeCelulas();
            int             miembroId            = SesionActual.Instance.UsuarioId;
            List <int>      idsCelulasPermitidas = manejadorCelulas.ObtenerCelulasPermitidasPorMiembroComoIds(SesionActual.Instance.UsuarioId);
            DateTime        fechaInicioDeSemana  = DateTime.Now.GetFirstDateOfWeek();
            DateTime        fechaFinDeSemana     = DateTime.Now.GetLastDateOfWeek();
            IglesiaEntities contexto             = SesionActual.Instance.getContexto <IglesiaEntities>();

            // Obtenemos las boletas de consolidacion sin reportes en esta semana
            int numDeBoletasSinReporteSemanal = (from o in contexto.ConsolidacionBoleta
                                                 where
                                                 o.Borrado == false &&
                                                 o.BoletaEstatusId > 100 &&
                                                 o.AsignadaACelulaId != null &&
                                                 idsCelulasPermitidas.Contains(o.AsignadaACelulaId.Value) &&
                                                 !contexto.ConsolidacionBoletaReporte.Any(t =>
                                                                                          t.Borrado == false &&
                                                                                          t.ConsolidacionBoletaId == o.Id &&
                                                                                          t.Creacion >= fechaInicioDeSemana &&
                                                                                          t.Creacion <= fechaFinDeSemana)
                                                 select o).Count();

            if (numDeBoletasSinReporteSemanal > 0)
            {
                generarAlerta(string.Format("Tienes {0} boleta(s) de consolidación sin reportar esta semana!", numDeBoletasSinReporteSemanal));
            }

            // Obtenemos las celulas directas que no tienen asistencia registrada esta semana
            int numDeCelulasSinAsistenciaSemanal = (from o in contexto.Celula
                                                    where
                                                    o.Borrado == false &&
                                                    contexto.CelulaLider.Any(t =>
                                                                             t.Borrado == false &&
                                                                             t.CelulaId == o.CelulaId &&
                                                                             t.MiembroId == miembroId
                                                                             ) &&
                                                    !contexto.CelulaMiembroAsistencia.Any(t =>
                                                                                          t.CelulaId == o.CelulaId &&
                                                                                          t.Dia >= fechaInicioDeSemana.Day &&
                                                                                          t.Mes >= fechaInicioDeSemana.Month &&
                                                                                          t.Anio >= fechaInicioDeSemana.Year &&
                                                                                          t.Dia <= fechaFinDeSemana.Day &&
                                                                                          t.Mes <= fechaFinDeSemana.Month &&
                                                                                          t.Anio <= fechaFinDeSemana.Year
                                                                                          ) &&
                                                    !contexto.CelulaCancelacionAsistencia.Any(t =>
                                                                                              t.CelulaId == o.CelulaId &&
                                                                                              t.Dia >= fechaInicioDeSemana.Day &&
                                                                                              t.Mes >= fechaInicioDeSemana.Month &&
                                                                                              t.Anio >= fechaInicioDeSemana.Year &&
                                                                                              t.Dia <= fechaFinDeSemana.Day &&
                                                                                              t.Mes <= fechaFinDeSemana.Month &&
                                                                                              t.Anio <= fechaFinDeSemana.Year
                                                                                              )
                                                    select o).Count();

            if (numDeCelulasSinAsistenciaSemanal > 0)
            {
                generarAlerta("Esta semana no has registrado asistencia en todas tus células!");
            }
        }