// GET: TicketAttachment/Create public ActionResult Create(Guid?ticketId) { if (!ticketId.HasValue || !TicketRepository.DoesTicketExist(ticketId.Value)) { return(RedirectToAction(nameof(Index))); } Ticket foundTicket = TicketRepository.GetTicket(ticketId.Value) ?? throw new Exception("This shouldn't happen"); string userId = User.Identity.GetUserId(); if (TicketRepository.CanUserEditTicket(userId, foundTicket.Id)) { return(View(TicketAttachmentCreateViewModel.CreateNewViewModel(foundTicket))); } else { return(RedirectToAction(nameof(HomeController.UnauthorizedRequest), "Home", new { error = $"You don't have the appropriate permissions to add a attachment to this ticket ({foundTicket.Title})" })); } }
public ActionResult Edit(TicketEditViewModel formData) { if (formData?.Id == null || formData.Id == Guid.Empty || formData?.ProjectId == null) { return(RedirectToAction(nameof(Index))); } try { string userId = User.Identity.GetUserId(); Ticket foundTicket = TicketRepository.GetTicket(formData.Id); if (foundTicket == null) { return(RedirectToAction(nameof(HomeController.UnauthorizedRequest), "Home", new { error = $"Ticket wasn't found" })); } bool canEdit = TicketRepository.CanUserEditTicket(userId, foundTicket.Id); if (!canEdit) { return(RedirectToAction(nameof(HomeController.UnauthorizedRequest), "Home", new { error = $"You don't have the permissions to edit \"{foundTicket.Title}\"" })); } // Generate link to ticket details when sending a email string callBackUrl = Url.Action(nameof(Details), "Ticket", new { id = foundTicket.Id }, Request.Url.Scheme); //TicketRepository.AssignedNewDeveloper += TicketRepository_AssignedNewDeveloper; (_, bool wasChanged) = TicketRepository.EditExistingTicket(foundTicket, formData, userId, callBackUrl); if (!wasChanged) { throw new Exception("Ticket was not edited"); } DbContext.SaveChanges(); return(RedirectToAction(nameof(Details), new { Id = formData.Id })); } catch (Exception e) { ModelState.AddModelError("", e.Message); // TODO: Remove after project completion (on staging phase) TicketEditViewModel model = GenerateTicketEditViewModel(formData.Id); if (model == null) { return(RedirectToAction(nameof(Index))); } return(View(nameof(Edit), model)); } }