Example #1
0
 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);
            }
        }