コード例 #1
0
        // GET: Tickets
        public ActionResult Index()
        {
            var userId = User.Identity.GetUserId();
            TicketIndexViewModel model    = new TicketIndexViewModel();
            UserRolesHelper      urHelper = new UserRolesHelper();

            var alltickets = db.Tickets.Include(t => t.AssignedUser)
                             .Include(t => t.CreatorUser)
                             .Include(t => t.Project)
                             .Include(t => t.TicketPriority)
                             .Include(t => t.TicketStatus)
                             .Include(t => t.TicketType);

            model.AdminTickets = alltickets.ToList();


            if (User.IsInRole("ProjectManager"))
            {
                var tickets = db.Projects.Where(p => p.PMID == userId).SelectMany(p => p.Tickets)
                              .Include(t => t.AssignedUser)
                              .Include(t => t.CreatorUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);
                model.PMTickets  = tickets.ToList();
                ViewBag.PMAmount = model.PMTickets.Count();
            }

            if (User.IsInRole("Developer"))
            {
                var tickets = db.Tickets.Where(t => t.AssignedUserId == userId)
                              .Include(t => t.AssignedUser)
                              .Include(t => t.CreatorUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);

                model.DevTickets  = tickets.ToList();
                ViewBag.DevAmount = model.DevTickets.Count();
            }

            if (User.IsInRole("Submitter"))
            {
                var tickets = db.Tickets.Where(t => t.CreatorUserId == userId)
                              .Include(t => t.AssignedUser)
                              .Include(t => t.CreatorUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);

                model.SubTickets  = tickets.ToList();
                ViewBag.SubAmount = model.SubTickets.Count();
            }


            return(View(model));
        }
コード例 #2
0
        public ActionResult DevProjIndex()
        {
            //find the id of the current user
            string devUserId = User.Identity.GetUserId();

            TicketIndexViewModel model = new TicketIndexViewModel();
            //use roles helper to check for the roles
            ProjectsHelper phelper = new ProjectsHelper();
            //user ProjectsHelper to get a list of projects the dev is on.
            List <Project> devProjects = phelper.ListUserProjects(devUserId).ToList();

            //use linq with selectmany to get all tickets on each project.
            if (devProjects.Count() == 0)
            {
                return(RedirectToAction("Index"));
            }
            var devProjTickets = devProjects.SelectMany(t => t.Tickets).AsQueryable();

            {
                var tickets = devProjTickets.Include(t => t.AssignedToUser)
                              .Include(t => t.OwnerUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);
                //tickets = tickets.Where(t => t.Project.Id == phelper.ListUserProjects(devUserId).id;

                model.DevTickets = tickets.ToList();
            }


            return(View(model));
        }
コード例 #3
0
 public ActionResult Index(TicketIndexViewModel vm)
 {
     if (vm.IsValid)
     {
         Session["TicketViewModel"] = vm;
         if (User == null || !User.Identity.IsAuthenticated)
         {
             return(RedirectToAction("Login"));
         }
         var holder = new UserProfile()
         {
             ID = Convert.ToInt32(Membership.GetUser().ProviderUserKey)//error wordt opgevangen in de view, dit is een vs fout, als je je aanmeld, stopt met debuggen en opnieuw start ben je nog aangemeld maar geef dit een error.
         };
         if (new Ticket()
         {
             Amount = vm.Amount,
             Type = vm.TicketType,
             TicketHolderProfile = holder
         }.Insert())
         {
             Festival.SingleFestival.Tickets = Ticket.GetTickets();
             return(RedirectToAction("Index"));
         }
     }
     return(View("Index"));
 }
コード例 #4
0
        public ActionResult UserTicketsIndex()
        {
            //find the id of the current user
            var userId = User.Identity.GetUserId();

            TicketIndexViewModel model = new TicketIndexViewModel();
            //use roles helper to check for the roles
            UserRolesHelper helper = new UserRolesHelper();


            if (User.IsInRole("Admin"))
            {
                var tickets = db.Tickets.Include(t => t.AssignedToUser)
                              .Include(t => t.OwnerUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);
                model.AdminTickets = tickets.ToList();
            }
            if (User.IsInRole("Developer"))
            {
                var tickets = db.Tickets.Include(t => t.AssignedToUser)
                              .Include(t => t.OwnerUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType)
                              //.Include(t => t.ProjectId)
                ;
                tickets          = tickets.Where(s => s.AssignedToUserId == userId);
                model.DevTickets = tickets.ToList();
            }
            if (User.IsInRole("ProjectManager"))
            {
                var tickets = db.Tickets.Include(t => t.AssignedToUser)
                              .Include(t => t.OwnerUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);
                tickets         = tickets.Where(s => s.Project.PMID == userId);
                model.PMTickets = tickets.ToList();
            }
            if (User.IsInRole("Submitter"))
            {
                var tickets = db.Tickets.Include(t => t.AssignedToUser)
                              .Include(t => t.OwnerUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);
                tickets          = tickets.Where(s => s.OwnerUserId == userId);
                model.SubTickets = tickets.ToList();
            }


            return(View(model));
        }
コード例 #5
0
        // GET: Tickets
        public ActionResult Index()
        {
            var userId = User.Identity.GetUserId();
            TicketIndexViewModel model  = new TicketIndexViewModel();
            UserRolesHelper      helper = new UserRolesHelper();

            if (User.IsInRole("Admin"))
            {
                var tickets = db.Tickets.Include(t => t.AssignedToUser)
                              .Include(t => t.OwnerUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);
                model.AdminTickets = tickets.ToList();
            }

            if (User.IsInRole("ProjectManager"))
            {
                var proj   = db.Projects;
                var myproj = proj.Where(p => p.PMID == userId);
                var tkts   = myproj.SelectMany(t => t.Tickets);

                tkts.Include(t => t.AssignedToUser)
                .Include(t => t.OwnerUser)
                .Include(t => t.Project)
                .Include(t => t.TicketPriority)
                .Include(t => t.TicketStatus)
                .Include(t => t.TicketType);
                model.PMTickets = tkts.ToList();
            }

            if (User.IsInRole("Developer"))
            {
                var tickets = db.Tickets.Where(t => t.AssignedToUserId == userId)
                              .Include(t => t.AssignedToUser)
                              .Include(t => t.OwnerUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);
                model.DevTickets = tickets.ToList();
            }

            if (User.IsInRole("Submitter"))
            {
                var tickets = db.Tickets.Where(t => t.OwnerUserId == userId)
                              .Include(t => t.AssignedToUser)
                              .Include(t => t.OwnerUser)
                              .Include(t => t.Project)
                              .Include(t => t.TicketPriority)
                              .Include(t => t.TicketStatus)
                              .Include(t => t.TicketType);
                model.SubTickets = tickets.ToList();
            }

            return(View(model));
        }
コード例 #6
0
        //
        // GET: /Tickets/

        public PartialViewResult Reserveer()
        {
            ViewBag.Type = new SelectList(TicketType.GetTypes().Where(type => type.AvailableTickets > 0), "ID", "Name");

            TicketIndexViewModel vm = null;

            if (Session["TicketViewModel"] != null)
            {
                vm = (TicketIndexViewModel)Session["TicketViewModel"];
            }
            else
            {
                vm = new TicketIndexViewModel();
            }
            return(PartialView("ReserveerPartial", vm));
        }
コード例 #7
0
        // GET: Tickets
        public ActionResult Index()
        {
            TicketIndexViewModel model = new TicketIndexViewModel();
            var tickets    = db.Tickets;
            var myTickets  = new List <Ticket>();
            var devTickets = new List <Ticket>();

            if (User.IsInRole("Admin"))
            {
                myTickets = tickets.ToList();
            }
            else if (User.IsInRole("ProjectManager"))
            {
                var userId = User.Identity.GetUserId();

                var projects = db.Projects.Where(t => t.ProjectManagerId == userId).ToList();

                myTickets = projects.SelectMany(t => t.Tickets).ToList();
            }
            else if (User.IsInRole("Developer"))
            {
                var userId = User.Identity.GetUserId();

                var user = db.Users.Find(userId);

                var projects = user.Projects.ToList();

                myTickets = projects.SelectMany(t => t.Tickets).ToList();

                devTickets = db.Tickets.Where(t => t.AssignedToUserId == userId).ToList();
            }
            else if (User.IsInRole("Submitter"))
            {
                var userId = User.Identity.GetUserId();

                var user = db.Users.Find(userId);

                myTickets = db.Tickets.Where(t => t.OwnerUserId == userId).ToList();
            }
            model.MyTickets       = myTickets;
            model.AssignedTickets = devTickets;

            return(View(model));
        }
コード例 #8
0
        public static ProjectDetailsViewModel CreateNewViewModel(string currentUserId, Domain.Project project, ApplicationDbContext dbContext)
        {
            if (project == null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            try
            {
                return(new ProjectDetailsViewModel()
                {
                    Id = project.Id == null ? throw new ArgumentNullException() : project.Id,
                    Name = string.IsNullOrWhiteSpace(project.Name) ? throw new ArgumentNullException() : project.Name,
                    Users = project.Users?.Select(user => HelperUserViewModel.CreateNewViewModel(user, dbContext)).ToList() ?? throw new ArgumentNullException(),
                    TicketCount = project.Tickets?.Count ?? 0,
                    Tickets = project.Tickets?.Select(ticket => TicketIndexViewModel.CreateNewViewModel(currentUserId, ticket)).ToList() ?? new List <TicketIndexViewModel>(),
                    DateCreated = project.DateCreated == null ? throw new ArgumentNullException() : project.DateCreated,
                    DateUpdated = project.DateUpdated,
                    CurrentUserId = currentUserId,
                });
            }
コード例 #9
0
        public IActionResult Index(string SortBy)
        {
            if (!Request.Cookies.ContainsKey("CurrentProject"))
            {
                return(RedirectToAction("Index", "Project"));
            }
            TicketIndexViewModel ticketIndexViewModel = new TicketIndexViewModel();

            ticketIndexViewModel.Tickets = from t in _db.Ticket
                                           join u in _db.Users
                                           on t.AssignedTo equals u.Id into tu
                                           from u in tu.DefaultIfEmpty()
                                           where t.ProjectID == int.Parse(Request.Cookies["CurrentProject"])
                                           select new ListTicketViewModel
            {
                Id       = t.Id,
                Name     = t.Name,
                Reported = t.ReportedDate.ToShortDateString(),
                Assigned = u.FirstName + " " + u.LastName,
                Due      = t.DueDate.ToShortDateString(),
                Priority = t.Priority,
                Status   = t.Status
            };

            // Set switch logic for view
            ViewData["Name"]       = String.IsNullOrEmpty(SortBy) ? "name_desc" : "";
            ViewData["Priority"]   = SortBy == "priority" ? "priority_desc" : "priority";
            ViewData["Reported"]   = SortBy == "reported" ? "reported_desc" : "reported";
            ViewData["Assignment"] = SortBy == "assignment" ? "assignment_desc" : "assignment";
            ViewData["Due"]        = SortBy == "due" ? "due_desc" : "due";
            ViewData["Status"]     = SortBy == "status" ? "status_desc" : "status";
            ViewData["LastSort"]   = String.IsNullOrEmpty(SortBy) ? "name" : SortBy;

            // Sort data
            switch (SortBy)
            {
            case "name_desc":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Name);
                break;

            case "priority":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Priority);
                break;

            case "priority_desc":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Priority);
                break;

            case "reported":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Reported);
                break;

            case "reported_desc":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Reported);
                break;

            case "assignment":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Assigned);
                break;

            case "assignment_desc":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Assigned);
                break;

            case "due":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Due);
                break;

            case "due_desc":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Due);
                break;

            case "status":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Status);
                break;

            case "status_desc":
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Status);
                break;

            default:
                ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Name);
                break;
            }
            return(View(ticketIndexViewModel));
        }
コード例 #10
0
        public static HomeIndexViewModel CreateNewViewModel(
            ApplicationUser applicationUser,
            ApplicationDbContext dbContext,
            int latestProjectIntakeLimit        = 3,
            int latestCreatedTicketIntakeLimit  = 3,
            int latestAssignedTicketIntakeLimit = 3)
        {
            if (applicationUser == null)
            {
                throw new ArgumentNullException(nameof(applicationUser));
            }

            List <IdentityRole> roles             = new UserRoleRepository(dbContext).GetUserRoles(applicationUser.Id);
            ProjectRepository   projectRepository = new ProjectRepository(dbContext);

            List <ProjectIndexViewModel> latestProjects = projectRepository
                                                          .GetUserProjects(applicationUser.Id)?
                                                          .ToList()
                                                          .OrderByDescending(project => project?.DateUpdated ?? project.DateCreated)
                                                          .Take(latestProjectIntakeLimit)
                                                          .Select(project => ProjectIndexViewModel.CreateNewViewModel(project))
                                                          .ToList() ?? new List <ProjectIndexViewModel>();

            int numberOfCreatedTickets  = 0;
            int numberOfAssignedTickets = 0;

            List <TicketIndexViewModel> latestCreatedTickets;
            List <TicketIndexViewModel> latestAssignedTickets;

            if (roles.Any(role => role.Name == nameof(UserRolesEnum.Submitter)))
            {
                //! get created tickets (Submitter)
                numberOfCreatedTickets = applicationUser.CreatedTickets?.Count ?? 0;
                latestCreatedTickets   = applicationUser.CreatedTickets?
                                         .OrderByDescending(ticket => ticket?.DateUpdated ?? ticket.DateCreated)
                                         .Take(latestCreatedTicketIntakeLimit)
                                         .Select(ticket => TicketIndexViewModel.CreateNewViewModel(applicationUser.Id, ticket))
                                         .ToList() ?? new List <TicketIndexViewModel>();
            }
            else
            {
                //! if not (Submitter)
                latestCreatedTickets = new List <TicketIndexViewModel>();
            }

            if (roles.Any(role => role.Name == nameof(UserRolesEnum.Developer)))
            {
                //! get assigned tickets (Developer)
                numberOfAssignedTickets = applicationUser.AssignedTickets?.Count ?? 0;
                latestAssignedTickets   = applicationUser.AssignedTickets?
                                          .OrderByDescending(ticket => ticket?.DateUpdated ?? ticket.DateCreated)
                                          .Take(latestAssignedTicketIntakeLimit)
                                          .Select(ticket => TicketIndexViewModel.CreateNewViewModel(applicationUser.Id, ticket))
                                          .ToList() ?? new List <TicketIndexViewModel>();
            }
            else
            {
                //! if not (Developer)
                latestAssignedTickets = new List <TicketIndexViewModel>();
            }

            TicketRepository ticketRepository = new TicketRepository(dbContext);

            try
            {
                return(new HomeIndexViewModel()
                {
                    UserId = string.IsNullOrWhiteSpace(applicationUser.Id) ? throw new ArgumentNullException() : applicationUser.Id,
                    DisplayName = string.IsNullOrWhiteSpace(applicationUser.DisplayName) ? throw new ArgumentNullException() : applicationUser.DisplayName,
                    Email = string.IsNullOrWhiteSpace(applicationUser.Email) ? throw new ArgumentNullException() : applicationUser.Email,
                    TotalProjectCount = projectRepository.GetUserProjects(applicationUser.Id)?.Count() ?? 0,
                    LatestProjects = latestProjects?.Any() ?? false ? latestProjects : new List <ProjectIndexViewModel>(),
                    Roles = (roles?.Any() ?? false) ? roles : new List <IdentityRole>(),
                    TotalCreatedTicketCount = numberOfCreatedTickets,
                    TotalAssignedTicketCount = numberOfAssignedTickets,
                    LatestCreatedTickets = latestCreatedTickets,
                    LatestAssignedTickets = latestAssignedTickets,
                    AllProjectCount = projectRepository.GetAllProjects().Count(),

                    //! NOTE: This depends on the table primary keys matching with the enum int value
                    AllOpenTicketsCount = ticketRepository.GetAllTickets().Count(ticket => ticket.StatusId == (int)TicketStatusesEnum.Open),
                    AllResovledTicketsCount = ticketRepository.GetAllTickets().Count(ticket => ticket.StatusId == (int)TicketStatusesEnum.Resolved),
                    AllRejectedTicketsCount = ticketRepository.GetAllTickets().Count(ticket => ticket.StatusId == (int)TicketStatusesEnum.Rejected),
                });
            }
コード例 #11
0
        public ActionResult Index(string whatTickets = "", string error = "")
        {
            string          userId      = User.Identity.GetUserId();
            ApplicationUser currentUser = UserRepository.GetUserById(userId);

            if (!string.IsNullOrWhiteSpace(error))
            {
                ModelState.AddModelError("", error);
            }

            if (currentUser == null)
            {
                return(RedirectToAction(nameof(HomeController.Index), new { controller = "Home" }));
            }

            List <TicketIndexViewModel> model;

            if (!string.IsNullOrWhiteSpace(whatTickets))
            {
                const string assigned = "Assigned";
                const string created  = "Created";
                if (whatTickets.ToLower() == assigned.ToLower())
                {
                    ViewBag.whatTickets = assigned;
                    model = TicketRepository.GetUserAssignedTickets(userId)
                            .ToList()
                            //.Where(ticket => TicketRepository.CanUserViewTicket(userId, ticket.Id)) // shouldn't need to check, if the user is assigned to the ticket
                            .Select(ticket => TicketIndexViewModel.CreateNewViewModel(userId, ticket))
                            .ToList();
                }
                else if (whatTickets.ToLower() == created.ToLower())
                {
                    ViewBag.whatTickets = created;
                    model = TicketRepository.GetUserCreatedTickets(userId)
                            .ToList()
                            //.Where(ticket => TicketRepository.CanUserViewTicket(userId, ticket.Id)) // shouldn't need to check, if the user created the ticket
                            .Select(ticket => TicketIndexViewModel.CreateNewViewModel(userId, ticket))
                            .ToList();
                }
                else //if (whatTickets.ToLower() == "all") // defaults to this else block { ... }
                {
                    model = TicketRepository.GetAllTickets()
                            .ToList()
                            .Where(ticket => TicketRepository.CanUserViewTicket(userId, ticket.Id))
                            .Select(ticket =>
                    {
                        bool isWatching = TicketNotificationRepository.IsUserSubscribedToTicket(userId, ticket.Id);
                        return(TicketIndexViewModel.CreateNewViewModel(userId, ticket, isWatching));
                    }).ToList();
                }
            }
            else
            {
                model = TicketRepository.GetAllTickets()
                        .ToList()
                        .Where(ticket => TicketRepository.CanUserViewTicket(userId, ticket.Id))
                        .Select(ticket =>
                {
                    bool isWatching = TicketNotificationRepository.IsUserSubscribedToTicket(userId, ticket.Id);
                    return(TicketIndexViewModel.CreateNewViewModel(userId, ticket, isWatching));
                }).ToList();
            }

            return(View(model));
        }
コード例 #12
0
        // GET: Tickets
        public ActionResult Index()
        {
            var model = new TicketIndexViewModel();

            return(View(model));
        }