public async Task <ActionResult> GetArchivedScheduleVersionModal(int?id, int scheduleVersion = 1) { 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.GetUserProjectWithSchedule(id, scheduleVersion); if (viewModel == null) { return(HttpNotFound()); } // authorize user ApplicationUser user = await ReturnCurrentUserAsync(); if (viewModel.ApplicationUserID == user.Id) { return(PartialView("_ArchivedScheduleVersion.Modal.GanttContainer", viewModel)); } Danger(unauthorizedAccessMessage, true); return(RedirectToAction("Index")); }
// GET: UserProjects/Delete/5 public async Task <ActionResult> Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } // load project from db, confirm that it's not null UserProject userProject = await db.UserProjects.Where(p => p.ID == id).FirstOrDefaultAsync(); if (userProject == null) { return(HttpNotFound()); } // authorize user ApplicationUser user = await ReturnCurrentUserAsync(); if (userProject.ApplicationUserID == user.Id) { UserProjectViewModel viewModel = new UserProjectViewModel(); viewModel.InjectFrom(userProject); return(View(viewModel)); } Danger(unauthorizedAccessMessage, true); return(RedirectToAction("Index")); }
public async Task <ActionResult> Edit([Bind(Include = "ID,ApplicationUserID,Name,Description,Comments,CreatedAt,ModifiedAt,ProjectStatusID")] UserProjectViewModel viewModel) { if (ModelState.IsValid) { var userProject = db.UserProjects.Find(viewModel.ID); // authorize user ApplicationUser user = await ReturnCurrentUserAsync(); if (userProject.ApplicationUserID == user.Id) { userProject.InjectFrom(viewModel); userProject.ModifiedAt = DateTime.Now; db.Entry(userProject).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Details", new { id = viewModel.ID })); } else { Danger(unauthorizedAccessMessage, true); return(RedirectToAction("Index")); } } ViewBag.ProjectStatusID = new SelectList(await db.ProjectStatuses.ToListAsync(), "ID", "Description", viewModel.ProjectStatusID); return(View(viewModel)); }
// GET: UserProjects/Details/5 public async Task <ActionResult> Details(int?id) { 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.GetUserProjectWithSchedule(id, 1); // VersionNum = 1 for current schedule version if (viewModel == null) { return(HttpNotFound()); } // authorize user ApplicationUser user = await ReturnCurrentUserAsync(); if (viewModel.ApplicationUserID == user.Id) { return(View(viewModel)); } Danger(unauthorizedAccessMessage, true); return(RedirectToAction("Index")); }
public async Task <ActionResult> EditScheduleFS(UserProjectViewModel viewModel) { ProjectScheduleVersionsRepository repo = new ProjectScheduleVersionsRepository(); if (await repo.SaveClonedProjectScheduleVersion(viewModel.ProjectScheduleVersion)) { Success("Project schedule updated successfully.", true); return(RedirectToAction("Details", new { id = viewModel.ID })); } Warning("Update failed.", true); return(RedirectToAction("Details", new { id = viewModel.ID })); }
internal async Task <UserProjectViewModel> GetUserProject(int?id) { using (ApplicationDbContext db = new ApplicationDbContext()) { // load user project and populate view model var userProject = await db.UserProjects.Where(p => p.ID == id).Include(p => p.ProjectStatus).FirstOrDefaultAsync(); UserProjectViewModel viewModel = new UserProjectViewModel(); viewModel.InjectFrom(userProject); return(viewModel); } }
public ActionResult AssignTicketManagement(int?id) { if (!id.HasValue) { return(RedirectToAction(nameof(TicketController.Index))); } var ticket = AppHepler.GetTicketById(id); if (ticket == null) { return(RedirectToAction(nameof(TicketController.Index))); } var allDevs = DbContext.Users.Where(p => p.Roles.Any(b => b.RoleId == DbContext.Roles.Where(m => m.Name == "Developer").Select(n => n.Id).FirstOrDefault())) .Select(n => new UserProjectViewModel { Id = n.Id, UserName = n.UserName }).ToList(); var repeated = new UserProjectViewModel(); repeated = allDevs.Where(m => m.Id == ticket.AssigneeId).FirstOrDefault(); allDevs.Remove(repeated); var model = new AssignTicketViewModel(); model.MyUser = new UserProjectViewModel(); model.TicketId = ticket.Id; model.TicketTitle = ticket.Title; if (ticket.AssigneeId != null || ticket.Assignee != null) { model.MyUser.Id = ticket.AssigneeId; model.MyUser.UserName = ticket.Assignee.UserName; } else { model.MyUser.Id = "NoAssigneeId"; } model.Devs.AddRange(allDevs); return(View(model)); }
internal async Task <IEnumerable <UserProjectViewModel> > GetUserProjectList(string applicationUserID) { using (ApplicationDbContext db = new ApplicationDbContext()) { var userProjects = await db.UserProjects.Where(p => p.CreatedByUser.Id == applicationUserID).Include(p => p.ProjectStatus).ToListAsync(); List <UserProjectViewModel> viewModel = new List <UserProjectViewModel>(); foreach (UserProject p in userProjects) { UserProjectViewModel v = new UserProjectViewModel(); v.InjectFrom(p); viewModel.Add(v); } return(viewModel); } }
internal async Task <UserProjectViewModel> GetUserProjectWithSchedule(int?id, int versionNum) { using (ApplicationDbContext db = new ApplicationDbContext()) { // load user project and populate view model var userProject = await db.UserProjects.Where(p => p.ID == id).Include(p => p.ProjectStatus).FirstOrDefaultAsync(); UserProjectViewModel viewModel = new UserProjectViewModel(); viewModel.InjectFrom(userProject); // load project schedule and populate view model var projectSchedule = await db.ProjectScheduleVersions.Where(s => s.ProjectID == id && s.VersionNum == versionNum).FirstOrDefaultAsync(); viewModel.ProjectScheduleVersion = projectSchedule; return(viewModel); } }
// 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 })); }
public ActionResult AssignProjectManagement(int?id) { if (!id.HasValue) { return(RedirectToAction(nameof(ProjectController.Index))); } var allUsers = AppHepler.GetAllUsers().Select(n => new UserProjectViewModel { Id = n.Id, UserName = n.UserName }).ToList(); var project = AppHepler.GetProjectById(id); var repeated = new UserProjectViewModel(); foreach (var userRm in project.Users) { repeated = allUsers.Where(m => m.Id == userRm.Id).FirstOrDefault(); allUsers.Remove(repeated); } if (project == null) { return(RedirectToAction(nameof(ProjectController.Index))); } var model = new AssignProjectViewModel(); model.ProjectId = project.Id; model.ProjectName = project.Name; model.MyUsers.AddRange(project.Users .Select(n => new UserProjectViewModel { Id = n.Id, UserName = n.UserName }).ToList()); //if (model.UserNames.Any()) //{ // var listUserNames = model.UserNames.ToList(); // foreach (var un in listUserNames.ToList()) // { // var nameToRm = project.Users // .Where(p => p.UserName == un) // .Select(n => new UserProjectViewModel // { // Id = n.Id, // UserName = n.UserName // }).FirstOrDefault(); // if (nameToRm != null) // { // allUsers.Remove(nameToRm); // listUserNames.Remove(nameToRm.UserName); // } // } //} model.Users.AddRange(allUsers); return(View(model)); }