Esempio n. 1
0
        public async Task <Object[]> GetByComunidad(int id)
        {
            try
            {
                var entities = await _db.DbSetAvance.Include("Resultado.Metas").Include(e => e.Adjunto).Include(e => e.AvanceMiembros)
                               .Where(e => e.Resultado.Metas.idCP == id).OrderByDescending(e => e.FechaRegistro)
                               .AsNoTracking().ToListAsync();

                Object [] lista = new Object[entities.Count];
                AvanceMiembrosRepository avance = new AvanceMiembrosRepository();
                foreach (var obj in entities)
                {
                    lista[entities.IndexOf(obj)] = new { obj.AvanceId
                                                         , obj.idResultado
                                                         , obj.Descripcion
                                                         , resultado = new { obj.Resultado.ResultadoEsperado, obj.Resultado.FechaEsperada, obj.Resultado.ResultadoId, obj.Resultado.Metas.Metaid, obj.Resultado.Metas.Meta }
                                                         , obj.AdjuntoId
                                                         , obj.Adjunto
                                                         , obj.Comentario
                                                         , obj.FechaRegistro
                                                         , AvanceMiembros = await avance.GetByAvance(obj.AvanceId) };
                }
                return(lista);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
Esempio n. 2
0
        public async Task Update(Avance model)
        {
            try
            {
                var _model = await _db.DbSetAvance.FirstOrDefaultAsync(e => e.AvanceId == model.AvanceId);

                if (_model != null)
                {
                    if (model.AdjuntoId != null)
                    {
                        int id = Convert.ToInt32(model.AdjuntoId);
                        model.AdjuntoId = null;
                        _db.Entry(_model).CurrentValues.SetValues(model);
                        await _db.SaveChangesAsync();

                        await _adjuntoRepo.Delete(id);
                    }
                    if (model.Adjunto != null && model.AdjuntoId == null)
                    {
                        Adjunto key = await _adjuntoRepo.CreateAd(model.Adjunto);

                        model.AdjuntoId         = key.AdjuntoId;
                        model.Adjunto.AdjuntoId = key.AdjuntoId;
                    }
                    if (model.avances != null)
                    {
                        //Se eliminan los anteriores para crear un nuevo registro de los agregados
                        var Autores = await _db.DbSetAvanceMiembros.Where(e => e.AvanceId == model.AvanceId).
                                      Select(x => x.AvanceMiembroId).ToListAsync();

                        AvanceMiembrosRepository av = new AvanceMiembrosRepository();
                        foreach (var aut in Autores)
                        {
                            await av.Delete(aut);
                        }

                        //Ahora se crean los nuevos autores
                        foreach (var c in model.avances)
                        {
                            c.AvanceId      = model.AvanceId;
                            c.FechaRegistro = DateTime.Now;;
                            await av.Create(c);
                        }
                    }

                    _db.Entry(_model).CurrentValues.SetValues(model);
                    await _db.SaveChangesAsync();
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
Esempio n. 3
0
        public async Task <Avance> Create(Avance model)
        {
            try
            {
                _db.DbSetAvance.Add(model);
                await _db.SaveChangesAsync();

                if (model.avances != null)
                {
                    AvanceMiembrosRepository av = new AvanceMiembrosRepository();
                    foreach (var c in model.avances)
                    {
                        c.AvanceId      = model.AvanceId;
                        c.FechaRegistro = DateTime.Now;;
                        await av.Create(c);
                    }
                }
                return(model);
            }
            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);
            }
        }