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); } }
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); } }
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); } }