Example #1
0
        public ActionResult Edit(Proyecto proyecto, int? areaId, int? tipoId)
        {
            if (ModelState.IsValid)
            {

                Proyecto tmp_proyecto = db.Proyectos.Find(proyecto.ID);
                List<int> tempIdList = new List<int>();

                // Equipo
                db.Entry(tmp_proyecto).Collection(item => item.Equipo).Load();

                tempIdList = proyecto.Equipo.Select(q => q.ID).ToList();
                var delEquipo = tmp_proyecto.Equipo.Where(q => !tempIdList.Contains(q.ID)).ToList();
                foreach (var equipo in delEquipo)
                {
                    //tmp_proyecto.Hitos.Remove(hito);
                    db.Entry(equipo).State = EntityState.Deleted;
                }
                foreach (var equipo in tmp_proyecto.Equipo)
                {
                    db.Entry(equipo).CurrentValues.SetValues(proyecto.Equipo.Where(item => item.ID == equipo.ID).First());
                    db.Entry(equipo).State = EntityState.Modified;
                }
                tempIdList = tmp_proyecto.Equipo.Select(q => q.ID).ToList();
                var addEquipo = proyecto.Equipo.Where(q => !tempIdList.Contains(q.ID));
                foreach (var equipo in addEquipo)
                {
                    equipo.Proyecto = tmp_proyecto;
                    tmp_proyecto.Equipo.Add(equipo);
                }

                // Hitos
                db.Entry(tmp_proyecto).Collection(item => item.Hitos).Load();

                tempIdList = proyecto.Hitos.Select(q => q.ID).ToList();
                var delHitos = tmp_proyecto.Hitos.Where(q => !tempIdList.Contains(q.ID)).ToList();
                foreach (var hito in delHitos)
                {
                    //tmp_proyecto.Hitos.Remove(hito);
                    db.Entry(hito).State = EntityState.Deleted;
                }
                foreach (var hito in tmp_proyecto.Hitos)
                {
                    db.Entry(hito).CurrentValues.SetValues(proyecto.Hitos.Where(item => item.ID == hito.ID).First());
                    db.Entry(hito).State = EntityState.Modified;
                }
                tempIdList = tmp_proyecto.Hitos.Select(q => q.ID).ToList();
                var addHitos = proyecto.Hitos.Where(q => !tempIdList.Contains(q.ID));
                foreach (var hito in addHitos)
                {
                    hito.Proyecto = tmp_proyecto;
                    tmp_proyecto.Hitos.Add(hito);
                }

                // Presupuesto
                db.Entry(tmp_proyecto).Collection(item => item.Presupuesto).Load();

                tempIdList = proyecto.Presupuesto.Select(q => q.ID).ToList();
                var delPres = tmp_proyecto.Presupuesto.Where(q => !tempIdList.Contains(q.ID)).ToList();
                foreach (var item in delPres)
                {
                    //tmp_proyecto.Presupuesto.Remove(item);
                    db.Entry(item).State = EntityState.Deleted;
                }
                foreach (var item in tmp_proyecto.Presupuesto)
                {
                    db.Entry(item).CurrentValues.SetValues(proyecto.Presupuesto.Where(i => i.ID == item.ID).First());
                    db.Entry(item).State = EntityState.Modified;
                }
                tempIdList = tmp_proyecto.Presupuesto.Select(q => q.ID).ToList();
                var addPres = proyecto.Presupuesto.Where(q => !tempIdList.Contains(q.ID));
                foreach (var item in addPres)
                {
                    item.Proyecto = tmp_proyecto;
                    tmp_proyecto.Presupuesto.Add(item);
                }

                // Resumen Ejecutivo
                db.Entry(tmp_proyecto).Collection(item => item.ResumenEjecutivo).Load();

                tempIdList = proyecto.ResumenEjecutivo.Select(q => q.ID).ToList();
                //var delRes = tmp_proyecto.ResumenEjecutivo.Where(q => !tempIdList.Contains(q.ID)).ToList();

                var delRes = tmp_proyecto.ResumenEjecutivo.Where(q =>
                    Int32.Parse((q.Año.ToString("d4") + q.Mes.ToString("d2")))
                    <
                    Int32.Parse((proyecto.FechaInicio.Year.ToString("d4") + proyecto.FechaInicio.Month.ToString("d2")))
                    ||
                    Int32.Parse((q.Año.ToString("d4") + q.Mes.ToString("d2")))
                    >
                    Int32.Parse((proyecto.FechaFinal.Year.ToString("d4") + proyecto.FechaFinal.Month.ToString("d2")))
                    ).ToList();

                foreach (var item in tmp_proyecto.ResumenEjecutivo)
                {
                    db.Entry(item).CurrentValues.SetValues(proyecto.ResumenEjecutivo.Where(i => i.ID == item.ID).First());
                    db.Entry(item).State = EntityState.Modified;
                }
                tempIdList = tmp_proyecto.ResumenEjecutivo.Select(q => q.ID).ToList();
                var addRes = proyecto.ResumenEjecutivo.Where(q => !tempIdList.Contains(q.ID));
                foreach (var item in addRes)
                {
                    item.Proyecto = tmp_proyecto;
                    tmp_proyecto.ResumenEjecutivo.Add(item);
                }

                foreach (var item in delRes)
                {
                    //tmp_proyecto.ResumenEjecutivo.Remove(item);

                    if (item.Resumen == null || item.Resumen.Length <0) {

                        db.Entry(item).State = EntityState.Deleted;
                    }
                }

                // Proyecto
                tmp_proyecto.Estado = proyecto.Estado;
                tmp_proyecto.Area = proyecto.Area;

                tempIdList = tmp_proyecto.Periodos.Select(q => q.ID).ToList();

                foreach (var item in tempIdList)
                {
                    Proyecto tmp_proyecto2 = db.Proyectos.Find(proyecto.ID);
                    Periodo tmp_periodo = db.Periodos.Find(item);
                    tmp_proyecto2.Periodos.Remove(tmp_periodo);
                }

                tmp_proyecto.Periodos = proyecto.Periodos;

                var update_proyecto = db.Entry(tmp_proyecto);
                update_proyecto.CurrentValues.SetValues(proyecto);
                db.SaveChanges();
                //return RedirectToAction("Index", new { areaId = areaId, tipoId = tipoId });
                return RedirectToAction("Index", new { areaId = areaId });
            }
            FillViewBag(proyecto, areaId, tipoId);
            return View(proyecto);
        }
Example #2
0
        public void FillViewBagProyecto(Proyecto proyecto, int? areaId, int? tipoId)
        {
            ApplicationUser usuario = (ApplicationUser)db.Users.FirstOrDefault(item => item.UserName == User.Identity.Name);
            int periodId = (int)Session["SelectedPeriod"];
            Periodo period = db.Periodos.Find(periodId);
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            TipoProyecto tipo;

            ViewBag.usuario = usuario;
            ViewBag.PeriodoSeleccionado = period;
            ViewBag.TipoProyecto = db.TipoProyecto.ToList();
            ViewBag.Fases = db.FasesProyecto.ToList();
            ViewBag.areaId = areaId;
            // Areas
            if (areaId != null)
            {
                ViewBag.Areas = db.Areas.Where(item => item.ID == areaId).ToList();
            }
            else if (usuario.TienePermiso(1)) // Administrador
            {
                ViewBag.Areas = db.Areas.Where(item => item.Nivel.ID == 3).OrderBy(item => item.AreaPadre.ID).ToList();
            }
            else if (usuario.TienePermiso(6) && usuario.TieneNivel(3)) // Lider Unidad Operativa y Nivel Unidad Operativa
            {
                List<Area> Areas = new List<Area>();

                Areas.Add(usuario.UsuarioArea);
                Areas.AddRange(usuario.UsuarioArea.AreasHijas.ToList());
                ViewBag.Areas = Areas.OrderBy(item => item.AreaPadre.ID);
            }
            else
            {
                List<Area> Areas = new List<Area>();

                Areas.Add(usuario.UsuarioArea);
                ViewBag.Areas = Areas;
            }
            // Tipos
            if (tipoId == null)
            {
                tipo = db.TipoProyecto.FirstOrDefault();
                tipoId = tipo.ID;
            }
            else
            {
                tipo = db.TipoProyecto.Find(tipoId);
            }
            ViewBag.CurrentTipo = tipo;
            // Proyecto
            List<ResumenEjecutivo> resumen = new List<ResumenEjecutivo>();

            for (var i = 1; i <= 12; i++)
            {
                resumen.Add(new ResumenEjecutivo()
                {
                    Mes = i,
                    Resumen = "",
                    Cerrado = DateTime.Now.Month == i ? false : true
                });
            }
            var resumen_json = from a in resumen
                               select new
                               {
                                   id = a.ID,
                                   mesId = a.Mes,
                                   mes = getMonthName(a.Mes),
                                   resumen = a.Resumen,
                                   mesCerrado = a.Cerrado,
                                   mesActual = DateTime.Now.Month
                               };
            ViewBag.Equipo = serializer.Serialize(new object[] { });
            ViewBag.Hitos = serializer.Serialize(new object[] { });
            ViewBag.Presupuesto = serializer.Serialize(new object[] { });
            ViewBag.Resumen = serializer.Serialize(resumen_json);
            if (proyecto != null)
            {
                if (proyecto.Equipo != null)
                {
                    var json_equipo = from a in proyecto.Equipo
                                      select new
                                      {
                                          id = a.ID,
                                          nombre = a.Nombre,
                                          rol = a.Rol,
                                          Eliminar = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>"
                                      };
                    ViewBag.Equipo = serializer.Serialize(json_equipo);
                }
                if (proyecto.Hitos != null)
                {
                    var json_hitos = from a in proyecto.Hitos
                                     select new
                                     {
                                         id = a.ID,
                                         nombre = a.Nombre,
                                         faseId = a.Fase.ID.ToString(),
                                         fase = a.Fase.Nombre,
                                         fechacompromiso = a.FechaCompromiso.ToString("dd/MM/yyyy"),
                                         fechareal = a.FechaReal != null ? ((DateTime)a.FechaReal).ToString("dd/MM/yyyy") : "",
                                         ponderacion = a.Ponderacion,
                                         acumulado = a.Acumulado,
                                         status = "",
                                         Editar = "<a href=\"javascript: $.noop();\" style=\"color:green\" class=\"fa fa-edit\" data-toggle=\"modal\" data-target=\"#EditarHito\"></a>",
                                         Eliminar = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>"
                                     };
                    ViewBag.Hitos = serializer.Serialize(json_hitos);
                }
                if (proyecto.Presupuesto != null)
                {
                    var json_prespuesto = from a in proyecto.Presupuesto
                                          select new
                                          {
                                              id = a.ID,
                                              mesId = a.Mes,
                                              mes = getMonthName(a.Mes),
                                              planeado = a.Planeado,
                                              asignado = a.Asignado,
                                              ejercido = a.Ejercido,
                                              Editar = "<a href=\"javascript: $.noop();\" style=\"color:green\" class=\"fa fa-edit\" data-toggle=\"modal\" data-target=\"#EditarPresupuesto\"></a>",
                                              Eliminar = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>",
                                              presupuestoAsignadoCerrado = a.PresupuestoAsignadoCerrado,
                                              presupuestoEjercidoCerrado = a.PresupuestoEjercidoCerrado
                                          };
                    ViewBag.Presupuesto = serializer.Serialize(json_prespuesto);
                }
                if (proyecto.ResumenEjecutivo != null)
                {
                    var json_resumen = from a in proyecto.ResumenEjecutivo
                                       select new
                                       {
                                           id = a.ID,
                                           mesId = a.Mes,
                                           mes = getMonthName(a.Mes),
                                           resumen = a.Resumen,
                                           mesCerrado = a.Cerrado,
                                           mesActual = DateTime.Now.Month
                                       };
                    ViewBag.Resumen = serializer.Serialize(json_resumen);
                }
            }
        }
Example #3
0
 public ActionResult Create(Proyecto proyecto, int? areaId, int? tipoId)
 {
     if (ModelState.IsValid)
     {
         db.Proyectos.Add(proyecto);
         db.SaveChanges();
         return RedirectToAction("Index", new { areaId = areaId });
         //return RedirectToAction("Index", new { areaId = areaId, tipoId = tipoId });
     }
     FillViewBag(proyecto, areaId, tipoId);
     return View(proyecto);
 }