public ActionResult CreateSketch(EditSketchViewModel viewModel, bool returnToProject, bool startNewSketch, bool duplicateSketch) { if (viewModel != null && viewModel.ProjectId != null && viewModel.DimensionId != null && ModelState.IsValid) { // Since an action is being executed after the session expires (and going to the Index page after that), // this check is necessary to prevent a NullReferenceException if (System.Web.HttpContext.Current.Session["userId"] != null) { viewModel.UserId = (int)System.Web.HttpContext.Current.Session["userId"]; bool hasMultipleRequests = ViewData.ContainsKey("MultipleRequests"); int sketchId = -1; if (!hasMultipleRequests) { sketchId = Repository.Create(viewModel.ToDomainModel()); GlobalHost.ConnectionManager.GetHubContext <MorphologicalChartHub>().Clients.All.refresh(); } if (sketchId > 0 || hasMultipleRequests) { if (returnToProject) { return(RedirectToAction("EditProject", "Project", new { ProjectId = viewModel.ProjectId.Value })); } else if (startNewSketch) { return(RedirectToAction("EditSketch", new { ProjectId = viewModel.ProjectId, DimensionId = viewModel.DimensionId })); } else if (duplicateSketch) { return(EditSketch(viewModel.ProjectId, viewModel.DimensionId, null)); } else { return(EditSketch(viewModel.ProjectId, viewModel.DimensionId, viewModel.SketchId)); } } } else { return(RedirectToAction("Index", "Security")); } } return(View("Error")); }
public ActionResult UpdateSketch(EditSketchViewModel viewModel, bool returnToProject, bool startNewSketch, bool duplicateSketch) { if (viewModel != null && viewModel.ProjectId != null && viewModel.SketchId != null && ModelState.IsValid) { if (!ViewData.ContainsKey("MultipleRequests")) { try { Repository.Update(viewModel.ToDomainModel()); } catch (EntityAlreadyDeletedException ex) { ModelState.AddModelError("Title", ex.Message); return(RedirectToAction("EditSketch", new { viewModel.ProjectId, viewModel.DimensionId, viewModel.SketchId })); } GlobalHost.ConnectionManager.GetHubContext <MorphologicalChartHub>().Clients.All.refresh(); } if (returnToProject) { return(RedirectToAction("EditProject", "Project", new { ProjectId = viewModel.ProjectId.Value })); } if (startNewSketch) { return(RedirectToAction("EditSketch", new { ProjectId = viewModel.ProjectId, DimensionId = viewModel.DimensionId })); } if (duplicateSketch) { return(EditSketch(viewModel.ProjectId, viewModel.DimensionId, null)); } return(EditSketch(viewModel.ProjectId, viewModel.DimensionId, viewModel.SketchId)); } return(View("Error")); }
public ActionResult EditSketch(int?projectId, int?dimensionId, int?sketchId) { if (projectId != null && dimensionId != null) { // Since an action is being executed after the session expires (and going to the Index page after that), // this check is necessary to prevent a NullReferenceException if (System.Web.HttpContext.Current.Session["userId"] != null) { ViewBag.UserId = (int)System.Web.HttpContext.Current.Session["userId"]; ViewBag.UserIsAdmin = (bool)System.Web.HttpContext.Current.Session["userIsAdmin"]; EditSketchViewModel viewModel; if (sketchId != null) { Sketch sketch = Repository.Get(sketchId.Value).SingleOrDefault(); if (sketch == null) { // If a previous action caused the model to be invalid (like a failed update or creation), return the view so that it can display the errors if (!ModelState.IsValid) { viewModel = new EditSketchViewModel { ProjectId = projectId, DimensionId = dimensionId } } ; else { return(View("Error")); } } else { viewModel = new EditSketchViewModel(sketch); } } else { // TODO: Avoid loading the entire dimension with its sketches only to get the sketches count IDimensionRepository dimensionRepository = new DimensionRepository(new DatabaseContext()); Dimension dimension = dimensionRepository.Get(dimensionId.Value).SingleOrDefault(); if (dimension == null || dimension.Sketches == null) { return(View("Error")); } viewModel = new EditSketchViewModel { ProjectId = projectId, DimensionId = dimensionId, Position = dimension.Sketches.Count + 1 }; } return(View("EditSketch", viewModel)); } return(RedirectToAction("Index", "Security")); } return(View("Error")); }