public async Task <Object> GetAll()
        {
            try
            {
                ExpertosRepository _expertoRepo = new ExpertosRepository();
                List <object>      informacion  = new List <object>();

                var entities = await _db.DbSetComunidades
                               .Include(e => e.CategoriaCP)
                               .Include(e => e.Adjunto)
                               .AsNoTracking().ToListAsync();


                foreach (var item in entities)
                {
                    Comunidad com = new Comunidad();

                    if (item.Adjunto == null)
                    {
                        com.Adjunto64 = null;
                    }
                    else
                    {
                        String file    = string.Empty;
                        var    archivo = item.Adjunto.RutaCompleta;
                        try
                        {
                            Byte[] bytes = File.ReadAllBytes(archivo);
                            file          = Convert.ToBase64String(bytes);
                            com.Adjunto64 = file;
                        }
                        catch (Exception e)
                        {
                            com.Adjunto64 = null;
                        }
                    }


                    com.Descripcion   = item.Descripcion;
                    com.Mision        = item.Mision;
                    com.Estado        = item.Estado;
                    com.ComunidadId   = item.ComunidadId;
                    com.TipoAcceso    = item.TipoAcceso;
                    com.FechaRegistro = item.FechaRegistro;

                    int numMiembros = _db.DbSetMiembros.Count(x => x.idCP == item.ComunidadId && x.estado == true);
                    int expertos    = _cr.Expertos.Count(x => x.ComunidadId == item.ComunidadId);
                    int numDocs     = _db.DbSetDocumentos.Count(x => x.idComunidadCP == item.ComunidadId);
                    int numSitios   = _db.DbSetSitioInteres.Count(x => x.idCP == item.ComunidadId);
                    var resultado   = new { comunidad = com, noMiembros = numMiembros, noExpertos = expertos, noDocumentos = numDocs, noSitios = numSitios };

                    informacion.Add(resultado);
                }
                return(informacion);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
Esempio n. 2
0
 public ExpertosController()
 {
     _expertoRepo = new ExpertosRepository();
 }
        public async Task <Object> GetMisComunidades(string clave)
        {
            try
            {
                //int numDocumentosCargados = _db.DbSetDocumentos.Count();
                //if (numDocumentosCargados == 0)
                //{
                //    CargaDatosSIGCOE2 documentos = new CargaDatosSIGCOE2();
                //    await documentos.cargaDocumentos();
                //}


                ExpertosRepository _expertoRepo = new ExpertosRepository();

                List <int> listComunidad = await _db.DbSetMiembros.Where(e => e.idPersonas == clave).Select(e => e.idCP).ToListAsync();

                var entities = await _db.DbSetComunidades.Where(e => listComunidad.Contains(e.ComunidadId) && e.Estado == true).Include(e => e.Adjunto).AsNoTracking().ToListAsync();

                List <object> lista = new List <object>();

                foreach (var item in entities)
                {
                    Comunidad com = new Comunidad();
                    if (item.Adjunto == null)
                    {
                        com.Adjunto64 = null;
                    }
                    else
                    {
                        String file    = string.Empty;
                        var    archivo = item.Adjunto.RutaCompleta;
                        try
                        {
                            Byte[] bytes = File.ReadAllBytes(archivo);
                            file          = Convert.ToBase64String(bytes);
                            com.Adjunto64 = file;
                        }
                        catch (Exception e)
                        {
                            com.Adjunto64 = null;
                        }
                    }

                    com.Descripcion   = item.Descripcion;
                    com.Mision        = item.Mision;
                    com.Estado        = item.Estado;
                    com.ComunidadId   = item.ComunidadId;
                    com.TipoAcceso    = item.TipoAcceso;
                    com.FechaRegistro = item.FechaRegistro;

                    int numMiembros = _db.DbSetMiembros.Count(x => x.idCP == item.ComunidadId && x.estado == true);
                    //var expertos = await _expertoRepo.expertosEnComunidad(item.ComunidadId);
                    int expertos  = _cr.Expertos.Count(x => x.ComunidadId == item.ComunidadId);
                    int numDocs   = _db.DbSetDocumentos.Count(x => x.idComunidadCP == item.ComunidadId);
                    int numSitios = _db.DbSetSitioInteres.Count(x => x.idCP == item.ComunidadId);

                    var resultado = new { comunidad = com, noMiembros = numMiembros, noExpertos = expertos, noDocumentos = numDocs, noSitios = numSitios };

                    lista.Add(resultado);
                }

                return(lista);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        public async Task <Object> GetInformes2()
        {
            ExpertosRepository _expertoRepo = new ExpertosRepository();

            List <object> informacion = new List <object>();
            List <object> listaMiembros;

            try
            {
                var entities = await _db.DbSetComunidades.Where(e => e.Estado == true).Include(e => e.CategoriaCP).AsNoTracking().ToListAsync();

                var resultado = new Object();

                string soloNombres = "";

                foreach (var item in entities)
                {
                    listaMiembros = new List <object>();

                    //var expertos = await _expertoRepo.expertosEnComunidad(item.ComunidadId);
                    int expertos  = _cr.Expertos.Count(x => x.ComunidadId == item.ComunidadId);
                    int numDocs   = _db.DbSetDocumentos.Count(x => x.idComunidadCP == item.ComunidadId);
                    int numSitios = _db.DbSetSitioInteres.Count(x => x.idCP == item.ComunidadId);
                    int preguntas = _db.DbSetPreguntas.Count(x => x.idCP == item.ComunidadId);
                    int posts     = _db.DbSetPost.Count(x => x.idComunidad == item.ComunidadId);

                    var miembros = await _db.DbSetMiembros.Where(m => m.idCP == item.ComunidadId && m.estado == true).AsNoTracking().ToListAsync();

                    var lider        = miembros.Where(t => t.rolId == 3).DefaultIfEmpty();
                    var secretario   = miembros.Where(t => t.rolId == 4).DefaultIfEmpty();
                    var solomiembros = miembros.Where(t => t.rolId == 2 && t.estado == true).ToList();

                    foreach (var m in solomiembros)
                    {
                        listaMiembros.Add(m.idPersonas + " " + m.nombrePersona);
                        soloNombres = soloNombres + m.nombrePersona + ",";
                    }



                    var resultados = await _db.DbSetAvance.Include("Resultado.Metas").Include(e => e.AvanceMiembros).Where(e => e.Resultado.Metas.idCP == item.ComunidadId).AsNoTracking().ToListAsync();

                    AvanceMiembrosRepository avance = new AvanceMiembrosRepository();
                    Object[] lista = new Object[resultados.Count];

                    int contadorCompromisos = 0;
                    int contadorTerminados  = 0;

                    foreach (var obj in resultados)
                    {
                        lista[resultados.IndexOf(obj)] = new
                        {
                            obj.Descripcion,
                            resultado = new { obj.Resultado.ResultadoEsperado, obj.Resultado.FechaEsperada },
                            obj.Comentario,
                            obj.Resultado.Metas.Meta
                        };


                        if (obj.Descripcion == "100")
                        {
                            contadorTerminados = contadorTerminados + 1;
                        }

                        contadorCompromisos++;
                    }


                    resultado = new
                    {
                        comunidad     = item.Descripcion,
                        mision        = item.Mision,
                        fecha         = item.FechaRegistro,
                        categoria     = item.CategoriaCP.Nombre,
                        noMiembros    = miembros.Count,
                        noExpertos    = expertos,
                        noDocumentos  = numDocs,
                        noSitios      = numSitios,
                        noPreguntas   = preguntas,
                        noPosts       = posts,
                        lider         = lider,
                        secretario    = secretario,
                        soloMiembros  = listaMiembros,
                        soloNombres   = soloNombres,
                        idCategoria   = item.idCategoria,
                        avance        = lista,
                        noCompromisos = contadorCompromisos,
                        comTerminados = contadorTerminados
                    };

                    informacion.Add(resultado);

                    listaMiembros = null;
                    soloNombres   = "";
                }


                return(informacion);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }