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; }
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[] { }); } }
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); }