// GET: UserProjects/EditScheduleFS/5 public async Task <ActionResult> EditScheduleFS(int?id, bool deleteAbandonedSchedule = false) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } // load project from db, confirm that it's not null UserProjectsRepository repo = new UserProjectsRepository(); UserProjectViewModel viewModel = await repo.GetUserProject(id); if (viewModel == null) { return(HttpNotFound()); } // authorize user ApplicationUser user = await ReturnCurrentUserAsync(); if (viewModel.ApplicationUserID == user.Id) { ProjectScheduleVersionsRepository scheduleRepo = new ProjectScheduleVersionsRepository(); Tuple <ProjectScheduleVersion, bool> newSchedule = await scheduleRepo.CloneProjectScheduleVersionForEdit(viewModel.ID); if (deleteAbandonedSchedule) { return(RedirectToAction("RemoveProjectScheduleVersion", new { id = newSchedule.Item1.ID })); } viewModel.ProjectScheduleVersion = newSchedule.Item1; viewModel.FullScreen = true; viewModel.ReadOnly = false; viewModel.AbandonedSchedule = newSchedule.Item2; return(View(viewModel)); } else { Danger(unauthorizedAccessMessage, true); return(RedirectToAction("Index")); } }
public async Task <ActionResult> RemoveProjectScheduleVersion(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } // load schedule from db, confirm that it's not null ProjectScheduleVersionsRepository schedulesRepo = new ProjectScheduleVersionsRepository(); var schedule = await schedulesRepo.FindProjectScheduleVersion(id.Value); if (schedule == null) { return(HttpNotFound()); } // load project from db, confirm that it's not null UserProjectsRepository projectsRepo = new UserProjectsRepository(); UserProjectViewModel project = await projectsRepo.GetUserProject(schedule.ProjectID); if (project == null) { return(HttpNotFound()); } // authorize user ApplicationUser user = await ReturnCurrentUserAsync(); if (project.ApplicationUserID == user.Id) { if (await schedulesRepo.RemoveProjectScheduleVersion(id.Value)) { return(RedirectToAction("EditScheduleFS", new { id = project.ID })); } } Danger("Error: Unable to abandon unsaved changes."); return(RedirectToAction("Details", new { id = project.ID })); }