Exemplo n.º 1
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();
        }