public IActionResult Put([FromBody] PlanMEDTO model) { return(Ok(_service.Update(model))); }
public bool Update(PlanMEDTO model) { try { var socios = (from s in _context.SocioInternacional join ps in _context.ProyectoSocio on s equals ps.SocioInternacional where ps.ProyectoId == model.ProyectoId select s).ToList(); var plan = _context.PlanMonitoreoEvaluacion .Include(f => f.FuenteDato) .Include(f => f.FrecuenciaMedicion) .Include(n => n.NivelImpacto) .Include(d => d.PlanDesagregaciones) .Single(p => p.IndicadorId == model.IndicadorId && p.ProyectoCodigoProyecto == model.ProyectoId); plan.MetodologiaRecoleccion = model.Metodologia; plan.ValorLineaBase = model.LineaBase; plan.FuenteDato = _context.FuenteDato.Single(f => f.Id == model.FuenteDato.Id); plan.FrecuenciaMedicion = _context.FrecuenciaMedicion.Single(f => f.Id == model.FrecuenciaMedicion.Id); plan.NivelImpacto = _context.NivelImpacto.Single(n => n.Id == model.NivelImpacto.Id); foreach (var desagregado in plan.PlanDesagregaciones) { desagregado.PlanSocios = _context.PlanSocioDesagregacion .Where(p => p.PlanDesagregacionPlanMonitoreoEvaluacionProyectoCodigoProyecto == model.ProyectoId && p.PlanDesagregacionPlanMonitoreoEvaluacionIndicadorId == model.IndicadorId).ToList(); foreach (var planSocio in desagregado.PlanSocios) { _context.PlanSocioDesagregacion.Remove(planSocio); } desagregado.PlanSocios.Clear(); _context.SaveChanges(); } foreach (var planDes in plan.PlanDesagregaciones) { _context.PlanDesagregacion.Remove(planDes); } plan.PlanDesagregaciones.Clear(); _context.SaveChanges(); foreach (var dto in model.Desagregaciones) { plan.AddDesagregacion(_context.Desagregacion.Single(d => d.Id == dto.Id)); _context.SaveChanges(); } foreach (var des in plan.PlanDesagregaciones) { des.PlanSocios = _context.PlanSocioDesagregacion .Where(p => p.PlanDesagregacionPlanMonitoreoEvaluacionProyectoCodigoProyecto == model.ProyectoId && p.PlanDesagregacionPlanMonitoreoEvaluacionIndicadorId == model.IndicadorId).ToList(); foreach (var socio in socios) { des.AddPlanSocio(socio); } } _context.SaveChanges(); return(true); } catch (Exception e) { Console.WriteLine(e); return(false); } }