Exemplo n.º 1
0
        // 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})" }));
            }
        }
Exemplo n.º 2
0
        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));
            }
        }