// GET: Tickets/Details/5
        public ActionResult Details(int?id)
        {
            TicketDetailsVM ticketDetailsVM = new TicketDetailsVM();

            ticketDetailsVM.Histories = db.TicketHistories.Where(th => th.TicketId == id).ToList();

            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Ticket ticket = db.Tickets.Find(id);

            if (ticket == null)
            {
                return(HttpNotFound());
            }
            return(View(ticket));
        }
示例#2
0
        // GET: Tickets/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Ticket ticket = db.Tickets.Find(id);

            if (ticket == null)
            {
                return(HttpNotFound());
            }

            var             userId        = User.Identity.GetUserId();
            TicketDetailsVM ticketDetails = new TicketDetailsVM();

            if (ticket.DeveloperId != null)
            {
                ticketDetails.Developer = db.Users.Find(ticket.DeveloperId).FullName;
            }


            if (ticket.Project.ProjectManagerId != null)
            {
                ticketDetails.ProjectManager = db.Users.Find(ticket.Project.ProjectManagerId).FullName;
            }


            ticketDetails.TicketPriority    = db.TicketPriorities.Find(ticket.TicketPriorityId).Name;
            ticketDetails.TicketStatus      = db.TicketStatuses.Find(ticket.TicketStatusId).Name;
            ticketDetails.TicketType        = db.TicketTypes.Find(ticket.TicketTypeId).Name;
            ticketDetails.ProjectName       = db.Projects.Find(ticket.ProjectId).Name;
            ticketDetails.Submitter         = db.Users.Find(ticket.SubmitterId).FullName;
            ticketDetails.Ticket            = ticket;
            ticketDetails.TicketHistory     = db.TicketHistories.Where(t => t.TicketId == ticket.Id).OrderByDescending(d => d.ChangedOn).ToList();
            ticketDetails.ticketAttachments = db.TicketAttachments.Where(t => t.TicketId == ticket.Id).ToList();



            if (User.IsInRole("Admin"))
            {
                return(View(ticketDetails));
            }

            if (User.IsInRole("ProjectManager"))
            {
                if (ticket.Project.ProjectManagerId == userId)
                {
                    return(View(ticketDetails));
                }
                TempData["Alert"] = "You can only view tickets for your assigned projects";
                return(RedirectToAction("Index", "Tickets", TempData));
            }

            if (User.IsInRole("Developer"))
            {
                if (ticket.DeveloperId == userId)
                {
                    return(View(ticketDetails));
                }
                TempData["Alert"] = "You can only view tickets you've been assigned";
                return(RedirectToAction("Index", "Tickets", TempData));
            }

            if (User.IsInRole("Submitter"))
            {
                if (ticket.SubmitterId == userId)
                {
                    return(View(ticketDetails));
                }
                TempData["Alert"] = "You can only view tickets you've created";
                return(RedirectToAction("Index", "Tickets", TempData));
            }

            TempData["Alert"] = "You don't have access to ticket details";
            return(RedirectToAction("Index", "Tickets", TempData));
        }