/// <summary> /// Funcionalidad para crear Sprint. /// </summary> /// <param name="proyecto"> Cadena con la nombre del Proyecto al que pertenece el sprint a crear.</param> /// <returns>Modelo con la informacion del sprint</returns> // GET: Crear public ActionResult Crear(string proyecto) { if (!revisarPermisos("Crear Proyectos")) { //despliega mensaje en caso de no poder crear un usuario this.AddToastMessage("Acceso Denegado", "No tienes permiso para crear sprints!", ToastType.Warning); return(RedirectToAction("Index", "Home")); } //se revisa que el proyecto exista if (String.IsNullOrEmpty(proyecto)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (baseDatos.Proyectos.Find(proyecto) != null) { var model = new SprintModelo(); model.proyecto = proyecto; ViewBag.modulos = new MultiSelectList(baseDatos.Modulos.Where(m => m.proyecto == proyecto).ToList(), "numero", "nombre"); return(View(model)); } else { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } }
/// <summary> /// Funcionalidad para consultar informacion del Sprint. /// </summary> /// <param name="proyecto"> Cadena con la nombre del Proyecto al que pertenece el sprint.</param> /// <param name="sprint"> Cadena con el numero de Sprint a consultar.</param> /// <returns>Modelo con la informacion del Sprint a consultar</returns> // GET: Detalles public ActionResult Detalles(string proyecto, string sprint) { if (!revisarPermisos("Consultar Detalles de Sprints")) { //despliega mensaje en caso de no poder crear un usuario this.AddToastMessage("Acceso Denegado", "No tienes permiso para consultar detalles de sprints!", ToastType.Warning); return(RedirectToAction("Index", "Home")); } //se revisa que el proyecto y el sprint existan if (String.IsNullOrEmpty(proyecto)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (String.IsNullOrEmpty(sprint)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var proy = baseDatos.Proyectos.Find(proyecto); if (proy == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var spr = baseDatos.Sprints.Find(proyecto, Int32.Parse(sprint)); if (spr == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var model = new SprintModelo(); //se actualiza la informacion dle modelo model.proyecto = proyecto; model.numero = sprint; model.fechaInicio = spr.fechaInicio.ToString("dd/MM/yyyy"); model.fechaFinal = spr.fechaFinal.ToString("dd/MM/yyyy"); //se carga la lista de modulos asociados int sprint_numero = Int32.Parse(sprint); ViewBag.listamodulos = new MultiSelectList(baseDatos.Modulos.Where(m => m.proyecto == proyecto).ToList(), "numero", "nombre"); model.modulos = new List <string>(); var listaDeModulosSprint = baseDatos.Sprint_Modulos.Where(m => m.sprint == sprint_numero && m.proyecto == proyecto).ToList(); //se agregan los modulos al modelo foreach (var modulo in listaDeModulosSprint) { model.modulos.Add(modulo.modulo.ToString()); } return(View(model)); }
public ActionResult Detalles(SprintModelo model) { if (ModelState.IsValid) { //se obtiene la informacion del modelo var sprint = new Sprint(); sprint.numero = Int32.Parse(model.numero); sprint.proyecto = model.proyecto; sprint.fechaInicio = DateTime.ParseExact(model.fechaInicio, "dd/MM/yyyy", CultureInfo.InvariantCulture); sprint.fechaFinal = DateTime.ParseExact(model.fechaFinal, "dd/MM/yyyy", CultureInfo.InvariantCulture); baseDatos.Entry(sprint).State = System.Data.Entity.EntityState.Modified; //se eliminan los modulos viejos en caso de haber efectuado cambios var modulosViejos = baseDatos.Sprint_Modulos.Where(m => m.sprint == sprint.numero && m.proyecto == model.proyecto); if (modulosViejos.Count() > 0) { foreach (var modulo in modulosViejos) { baseDatos.Entry(modulo).State = System.Data.Entity.EntityState.Deleted; } } //se agregan las nuevas relaciones de sprint con modulo if (model.modulos != null && model.modulos.Count() > 0) { foreach (var modulo in model.modulos) { var sprint_modulo = new Sprint_Modulos(); sprint_modulo.proyecto = sprint.proyecto; sprint_modulo.sprint = sprint.numero; sprint_modulo.modulo = Int32.Parse(modulo); sprint.Sprint_Modulos.Add(sprint_modulo); baseDatos.Entry(sprint_modulo).State = System.Data.Entity.EntityState.Added; baseDatos.Entry(sprint).State = System.Data.Entity.EntityState.Modified; } } baseDatos.SaveChanges(); this.AddToastMessage("Sprint Modificado", "El sprint " + model.numero + " se ha modificado correctamente.", ToastType.Success); return(RedirectToAction("Detalles", "Sprint", new { proyecto = model.proyecto, sprint = model.numero })); } return(View(model)); }
public async Task <ActionResult> Crear(SprintModelo model) { if (ModelState.IsValid) { //se carga la informacion del sprint del modelo var sprint = new Sprint(); sprint.numero = Int32.Parse(model.numero); sprint.proyecto = model.proyecto; sprint.fechaInicio = DateTime.ParseExact(model.fechaInicio, "MM/dd/yyyy", CultureInfo.InvariantCulture); sprint.fechaFinal = DateTime.ParseExact(model.fechaFinal, "MM/dd/yyyy", CultureInfo.InvariantCulture); if (sprint.fechaInicio > sprint.fechaFinal) { this.AddToastMessage("Error", "La fecha de inicio debe ser antes de la fecha final", ToastType.Warning); return(RedirectToAction("Crear", "Sprint", new { proyecto = model.proyecto })); } //se crea las relaciones de sprint con modulo if (model.modulos != null && model.modulos.Count() > 0) { foreach (var modulo in model.modulos) { var sprint_modulo = new Sprint_Modulos(); sprint_modulo.proyecto = sprint.proyecto; sprint_modulo.sprint = sprint.numero; sprint_modulo.modulo = Int32.Parse(modulo); sprint.Sprint_Modulos.Add(sprint_modulo); } } baseDatos.Sprints.Add(sprint); baseDatos.SaveChanges(); updateSprintPoints(sprint.proyecto, sprint.numero); this.AddToastMessage("Sprint Creado", "El sprint " + model.numero + " se ha creado y asignado correctamente" + " al proyecto " + model.proyecto + ".", ToastType.Success); return(RedirectToAction("Crear", "Sprint", new { proyecto = model.proyecto })); } ViewBag.Proyectos = new SelectList(baseDatos.Proyectos.ToList(), "nombre", "nombre"); ViewBag.modulos = baseDatos.Modulos.Where(m => m.proyecto == model.proyecto).ToList(); return(View(model)); }
public ActionResult Borrar(SprintModelo model) { if (ModelState.IsValid) { int sprint_numero = Int32.Parse(model.numero); var modulosViejos = baseDatos.Sprint_Modulos.Where(m => m.sprint == sprint_numero && m.proyecto == model.proyecto).ToList(); if (modulosViejos.Count() > 0) { foreach (var modulo in modulosViejos) { baseDatos.Entry(modulo).State = System.Data.Entity.EntityState.Deleted; } } var sprint = baseDatos.Sprints.Find(model.proyecto, sprint_numero); baseDatos.Entry(sprint).State = System.Data.Entity.EntityState.Deleted; baseDatos.SaveChanges(); this.AddToastMessage("Sprint Eliminado", "El sprint " + model.numero + " se ha eliminado correctamente.", ToastType.Success); return(RedirectToAction("Informacion", "Proyectos", new { id = model.proyecto })); } return(View(model)); }