public ActionResult Edit(string ticketIdentifier) { if (string.IsNullOrWhiteSpace(ticketIdentifier)) { TempData.AddDangerToast("We were unable to locate a ticket with this identifier."); return(RedirectToAction("Index", "Projects")); } Ticket ticket = db.Tickets.ToList().FirstOrDefault(t => t.GetTicketIdentifier() == ticketIdentifier); if (ticket == null) { TempData.AddDangerToast("We were unable to locate a ticket with this identifier."); return(RedirectToAction("Index", "Projects")); } if (!_permissionsHelper.CanEditTicket(User, ticket.Id)) { TempData.AddDangerToast("You are not allowed to view this resource / perform this action."); return(RedirectToAction("Index", "Home")); } ProjectWorkflow parentProjWorkflow = ticket.ParentProject.ActiveWorkflow; List <ApplicationUser> solvers = null; if (_permissionsHelper.IsProjectManager(User, ticket.ParentProjectId) || User.IsInRole("ServerAdmin")) { solvers = ticket.ParentProject.GetSolverMembers(); } List <TicketStatus> availStatuses = null; if ((_permissionsHelper.IsUserStaff(User) && parentProjWorkflow.CanStaffSetStatusOnInteract) || (_permissionsHelper.IsTicketOwner(User, ticket.Id) && parentProjWorkflow.CanTicketOwnerSetStatusOnInteract)) { availStatuses = parentProjWorkflow.GetAvailableStatuses(ticket.Id, User, db); } var viewModel = new EditTicketViewModel() { ParentProject = ticket.ParentProject, Reporter = db.Users.Find(User.Identity.GetUserId()), PrioritySelections = db.TicketPriorityTypes.ToDictionary(tp => tp.Name, tp => tp.Id), AvailableTicketTypes = db.TicketTypes.ToList(), AvailableStatuses = availStatuses, CurrentTicket = ticket, AvailableSolvers = solvers }; return(View(viewModel)); }
public ActionResult Show(string ticketIdentifier) { if (string.IsNullOrWhiteSpace(ticketIdentifier)) { TempData.AddDangerToast("You must provide the ticket identifier to display. Please try again."); return(RedirectToAction("Index", "Tickets")); } Ticket ticket = db.Tickets.ToList().FirstOrDefault(t => t.GetTicketIdentifier() == ticketIdentifier); if (ticket == null) { TempData.AddDangerToast("We were unable to locate this ticket. Please try again."); return(RedirectToAction("Index", "Tickets")); } if (!_permissionsHelper.CanViewTicket(User, ticket.Id)) { TempData.AddDangerToast("You are not allowed to view this resource."); return(RedirectToAction("Index", "Tickets")); } ProjectWorkflow parentProjWorkflow = ticket.ParentProject.ActiveWorkflow; List <ApplicationUser> solvers = null; if (User.Identity.GetUserId() == ticket.ParentProject.ProjectManagerId || User.IsInRole("ServerAdmin")) { solvers = ticket.ParentProject.GetSolverMembers(); } List <TicketStatus> availStatuses = null; if (ticket.Permissions(User).CanUpdateTicketStatus) { availStatuses = parentProjWorkflow.GetAvailableStatuses(ticket.Id, User, db); } var viewModel = new EditTicketViewModel() { ParentProject = ticket.ParentProject, Reporter = ticket.Reporter, PrioritySelections = db.TicketPriorityTypes.ToDictionary(tp => tp.Name, tp => tp.Id), AvailableTicketTypes = db.TicketTypes.ToList(), CurrentTicket = ticket, AvailableSolvers = solvers, AvailableStatuses = availStatuses }; return(View(viewModel)); }