Beispiel #1
0
 public ActionResult Create(Indicador indicador, string lvl)
 {
     if (ModelState.IsValid)
     {
         db.Indicadores.Add(indicador);
         db.SaveChanges();
         return RedirectToAction("Index", new { lvl = lvl });
     }
     FillViewBagCreate(indicador, ViewBag, lvl);
     return View(indicador);
 }
        private void FillViewBagCreate(Indicador indicador, dynamic ViewBag, string lvl, string returnController, int? areaId)
        {
            ApplicationUser usuario = (ApplicationUser)db.Users.FirstOrDefault(item => item.UserName == User.Identity.Name);
            int nivel = int.Parse(lvl);
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            int periodId = (int)Session["SelectedPeriod"];
            Area area;

            ViewBag.returnController = returnController;
            ViewBag.usuario = usuario;
            ViewBag.Nivel = lvl;
            ViewBag.Unidades = db.UnidadesDeMedida.ToList();
            ViewBag.Comportamiento = db.Comportamiento.ToList();
            ViewBag.Tipo = db.TipoIndicador.Where(item => item.Nivel.ID == nivel).ToList();
            ViewBag.Frecuencia = db.FrecuenciaMedicion.OrderBy(item => item.ID).ToList();
            // Areas
            if (usuario.TienePermiso(1)) // Administrador
            {
                ViewBag.Areas = db.Areas.Where(item => item.Nivel.ID == nivel).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;
            }
            // Procesos
            if (usuario.TienePermiso(1)) // Administrador
            {
                ViewBag.Procesos = db.Procesos.Where(item => item.Periodos.Any(p => p.ID == periodId)).ToList();
            }
            else if (usuario.TienePermiso(6) && usuario.TieneNivel(3)) // Lider Unidad Operativa y Nivel Unidad Operativa
            {
                List<Area> Areas = new List<Area>();
                IEnumerable<int> areasId = new List<int>();

                Areas.Add(usuario.UsuarioArea);
                Areas.AddRange(usuario.UsuarioArea.AreasHijas.ToList());
                areasId = from a in Areas
                          select a.ID;
                ViewBag.Procesos = db.Procesos.Where(item => areasId.Any(p => p == item.Area.ID) && item.Periodos.Any(p => p.ID == periodId)).ToList();
            }
            else
            {
                ViewBag.Procesos = db.Procesos.Where(item => item.Area.ID == usuario.UsuarioArea.ID && item.Periodos.Any(p => p.ID == periodId)).ToList();
            }
            // Proyectos
            if (usuario.TienePermiso(1)) // Administrador
            {
                ViewBag.Proyectos = db.Proyectos.Where(item => item.Periodos.Any(p => p.ID == periodId)).ToList();
            }
            else if (usuario.TienePermiso(6) && usuario.TieneNivel(3)) // Lider Unidad Operativa y Nivel Unidad Operativa
            {
                List<Area> Areas = new List<Area>();
                IEnumerable<int> areasId = new List<int>();

                Areas.Add(usuario.UsuarioArea);
                Areas.AddRange(usuario.UsuarioArea.AreasHijas.ToList());
                areasId = from a in Areas
                          select a.ID;
                ViewBag.Proyectos = db.Proyectos.Where(item => areasId.Any(p => p == item.Area.ID) && item.Periodos.Any(p => p.ID == periodId)).ToList();
            }
            else
            {
                ViewBag.Proyectos = db.Proyectos.Where(item => item.Area.ID == usuario.UsuarioArea.ID && item.Periodos.Any(p => p.ID == periodId)).ToList();
            }
            // Responsables
            if (usuario.TienePermiso(1)) // Administrador
            {
                ViewBag.Responsables = db.Users.ToList<ApplicationUser>();
            }
            else if (usuario.TienePermiso(6) && usuario.TieneNivel(3)) // Lider Unidad Operativa y Nivel Unidad Operativa
            {
                List<ApplicationUser> Responsables = new List<ApplicationUser>();
                List<Area> Areas = new List<Area>();
                IEnumerable<int> AreasIds = new List<int>();

                Areas.Add(usuario.UsuarioArea);
                Areas.AddRange(usuario.UsuarioArea.AreasHijas.ToList());
                AreasIds = from a in Areas
                           select a.ID;

                Responsables = db.Users.Where(user => AreasIds.Contains(user.UsuarioArea.ID)).ToList();
                ViewBag.Responsables = Responsables;
            }
            else
            {
                List<ApplicationUser> Responsables = new List<ApplicationUser>();

                Responsables.Add(usuario);
                ViewBag.Responsables = Responsables;
            }

            if (usuario.TienePermiso(1)) // Administrador
            {
                ViewBag.Objetivos = db.Objetivos.Where(item => item.Area.Nivel.ID == nivel && item.Periodos.Any(p => p.ID == periodId)).ToList();
            }
            else
            {
                ViewBag.Objetivos = db.Objetivos.Where(item => item.Area.ID == usuario.UsuarioArea.ID && item.Periodos.Any(p => p.ID == periodId)).ToList();
            }

            if (indicador != null)
            {
                DateTime inicio = indicador.FechaInicio;
                DateTime final = DateTime.Now;
                string frecuencia = indicador.Frecuencia.Nombre;

                switch (frecuencia)
                {
                    case "Semanal":
                        if (indicador.FechaInicio.DayOfWeek != DayOfWeek.Sunday)
                        {
                            inicio = indicador.FechaInicio.AddDays(7 - (int)indicador.FechaInicio.DayOfWeek);
                        }
                        break;
                    case "Mensual":
                    case "Bimestral":
                    case "Trimestral":
                    case "Semestral":
                        if (indicador.FechaInicio.Day != 1)
                        {
                            inicio = indicador.FechaInicio.AddDays(-(indicador.FechaInicio.Day - 1)).AddMonths(1);
                        }
                        break;
                    case "Anual":
                        if (indicador.FechaInicio.Day != 1 && indicador.FechaInicio.Month != 1)
                        {
                            inicio = indicador.FechaInicio.AddDays(-(indicador.FechaInicio.DayOfYear - 1)).AddYears(1);
                        }
                        break;
                }

                while (inicio <= DateTime.Now)
                {
                    switch (frecuencia)
                    {
                        case "Diario":
                            final = inicio;
                            break;
                        case "Semanal":
                            final = inicio.AddDays(6);
                            break;
                        case "Mensual":
                            final = inicio.AddMonths(1).AddDays(-1);
                            break;
                        case "Bimestral":
                            final = inicio.AddMonths(2).AddDays(-1);
                            break;
                        case "Trimestral":
                            final = inicio.AddMonths(3).AddDays(-1);
                            break;
                        case "Semestral":
                            final = inicio.AddMonths(6).AddDays(-1);
                            break;
                        case "Anual":
                            final = inicio.AddYears(1).AddDays(-1);
                            break;
                    }
                    if (final <= indicador.FechaFinal)
                    {
                        //todo: Revisar esta condición, la elimine porque daba error.
                        /*if (indicador.Metas.Where(item => item.FechaInicio == inicio && item.FechaFin == final).FirstOrDefault() == null)
                        {
                            indicador.Metas.Add(new MetaIndicador() { FechaInicio = inicio, FechaFin = final, Meta = 0, Resultado = 0, Cumplimiento = 0 });
                        }*/
                    }
                    inicio = final.AddDays(1);
                }
                if (indicador.Metas != null)
                {
                    var json = from a in indicador.Metas
                               select new {
                                    id = a.ID,
                                    inicio = a.FechaInicio.ToString("dd/MM/yyyy"),
                                    fin = a.FechaFin.ToString("dd/MM/yyyy"),
                                    meta = a.Meta,
                                    resultados = a.Resultado,
                                    metaCerrada = a.MetaCerrada,
                                    resultadoCerrado = a.ResultadoCerrado,
                                    cerrarMeta = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>",
                                    abrirMeta = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>",
                                    cerrarResultado = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>",
                                    abrirResultado = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>"
                               };

                    ViewBag.Metas = serializer.Serialize(json);
                }
                else
                {
                    ViewBag.Metas = serializer.Serialize(new object[] { });
                }
            }
            else
            {
                ViewBag.Metas = serializer.Serialize(new object[] { });
            }
            if (areaId == null)
            {
                if (usuario.TienePermiso(1) || (nivel == 1 && usuario.TienePermiso(3)) || usuario.TieneNivel(1)) // Administrador
                {
                    area = db.Areas.Where(item => item.Nivel.ID == nivel).First();
                }
                else if (usuario.TieneNivel(3) && usuario.TienePermiso(10))
                {
                    area = usuario.UsuarioArea.AreaPadre;
                }
                else
                {
                    area = usuario.UsuarioArea;
                }
                areaId = area.ID;
            }
            else
            {
                area = db.Areas.Where(item => item.Nivel.ID == nivel).FirstOrDefault(item => item.ID == areaId);
            }
            ViewBag.CurrentArea = area;
        }
Beispiel #3
0
        private void FillViewBagCreate(Indicador indicador, dynamic ViewBag, string lvl)
        {
            ApplicationUser usuario = (ApplicationUser)db.Users.FirstOrDefault(item => item.UserName == User.Identity.Name);
            int nivel = int.Parse(lvl);
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            ViewBag.usuario = usuario;
            ViewBag.Nivel = lvl;
            ViewBag.Unidades = db.UnidadesDeMedida.ToList();
            ViewBag.Comportamiento = db.Comportamiento.ToList();
            ViewBag.Tipo = db.TipoIndicador.Where(item => item.Nivel.ID == nivel).ToList();
            ViewBag.Frecuencia = db.FrecuenciaMedicion.OrderBy(item => item.ID).ToList();
            // Areas
            if (usuario.TienePermiso(1)) // Administrador
            {
                ViewBag.Areas = db.Areas.Where(item => item.Nivel.ID == nivel).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;
            }
            // Responsables
            if (usuario.TienePermiso(1)) // Administrador
            {
                ViewBag.Responsables = db.Users.ToList<ApplicationUser>();
            }
            else if (usuario.TienePermiso(6) && usuario.TieneNivel(3)) // Lider Unidad Operativa y Nivel Unidad Operativa
            {
                List<ApplicationUser> Responsables = new List<ApplicationUser>();
                List<Area> Areas = new List<Area>();
                IEnumerable<int> AreasIds = new List<int>();

                Areas.Add(usuario.UsuarioArea);
                Areas.AddRange(usuario.UsuarioArea.AreasHijas.ToList());
                AreasIds = from a in Areas
                           select a.ID;

                Responsables = db.Users.Where(user => AreasIds.Contains(user.UsuarioArea.ID)).ToList();
                ViewBag.Responsables = Responsables;
            }
            else
            {
                List<ApplicationUser> Responsables = new List<ApplicationUser>();

                Responsables.Add(usuario);
                ViewBag.Responsables = Responsables;
            }

            if (indicador != null)
            {
                if (indicador.Metas != null)
                {
                    var json = from a in indicador.Metas
                               select new {
                                    id = a.ID,
                                    inicio = a.FechaInicio.ToString("dd/MM/yyyy"),
                                    fin = a.FechaFin.ToString("dd/MM/yyyy"),
                                    meta = a.Meta,
                                    resultados = a.Resultado,
                                    metaCerrada = a.MetaCerrada,
                                    resultadoCerrado = a.ResultadoCerrado,
                                    cerrarMeta = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>",
                                    abrirMeta = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>",
                                    cerrarResultado = "<a href=\"javascript: $.noop();\" style=\"color:red\" class=\"fa fa-minus\"></a>"
                               };

                    ViewBag.Metas = serializer.Serialize(json);
                }
                else
                {
                    ViewBag.Metas = serializer.Serialize(new object[] { });
                }
            }
            else
            {
                ViewBag.Metas = serializer.Serialize(new object[] { });
            }
        }
Beispiel #4
0
 public ActionResult Edit(Indicador indicador, string lvl)
 {
     if (ModelState.IsValid)
     {
         Indicador tmp = db.Indicadores.Find(indicador.ID);
         tmp.Area = indicador.Area;
         tmp.Comportamiento = indicador.Comportamiento;
         tmp.Descripcion = indicador.Descripcion;
         tmp.FechaFinal = indicador.FechaFinal;
         tmp.FechaInicio = indicador.FechaInicio;
         tmp.Formula = indicador.Formula;
         tmp.Frecuencia = indicador.Frecuencia;
         tmp.FuenteInformacion = indicador.FuenteInformacion;
         tmp.Metas.Clear();
         tmp.Metas = indicador.Metas;
         tmp.Nombre = indicador.Nombre;
         tmp.Periodos.Clear();
         tmp.Periodos = indicador.Periodos;
         tmp.Responsable = indicador.Responsable;
         tmp.Tipo = indicador.Tipo;
         tmp.UmbralAmarillo = indicador.UmbralAmarillo;
         tmp.UmbralRojo = indicador.UmbralRojo;
         tmp.UmbralVerde = indicador.UmbralVerde;
         tmp.UnidadDeMedida = indicador.UnidadDeMedida;
         if (tmp.Metas != null)
         {
             tmp.Metas.ForEach(meta =>
             {
                 meta.Indicador = tmp;
                 //if (meta.ID == 0)
                 //{
                 //    db.Entry(meta).State = EntityState.Added;
                 //}
                 //else
                 //{
                 //    db.Entry(meta).State = EntityState.Modified;
                 //}
             });
         }
         db.Entry(tmp).State = EntityState.Modified;
         db.SaveChanges();
         return RedirectToAction("Index", new { lvl = lvl });
     }
     FillViewBagCreate(indicador, ViewBag, lvl);
     return View(indicador);
 }