// GET: Projects/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            TempData["InProjectsPage"] = true;
            if (id == null)
            {
                return(NotFound());
            }

            var vm = new ProjectTicketsViewModel();

            var project = await _context.Projects
                          .Include(p => p.ProjectUsers)
                          .ThenInclude(pu => pu.User)
                          .FirstOrDefaultAsync(m => m.Id == id);

            if (project == null)
            {
                return(NotFound());
            }

            var tickets = await _context.Tickets
                          .Include(t => t.TicketPriority)
                          .Include(t => t.TicketStatus)
                          .Include(t => t.TicketType)
                          .Include(t => t.Attachments)
                          .Include(t => t.Histories)
                          .Where(t => t.ProjectId == id.Value)
                          .ToListAsync();

            vm.Project = project;
            vm.Tickets = tickets;
            return(View(vm));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Dashboard(int?page)
        {
            var viewModel = new ProjectTicketsViewModel();
            var model     = new List <Ticket>();
            var userId    = _userManager.GetUserId(User);

            if (page == null)
            {
                viewModel.Page = 1;
            }
            else
            {
                viewModel.Page = (int)page;
            }
            var skip = 5 * (viewModel.Page - 1);

            if (User.IsInRole("Admin"))
            {
                model = _context.Tickets
                        //.Include(u => u.User)
                        .Include(t => t.DeveloperUser)
                        .Include(t => t.OwnerUser)
                        .Include(t => t.Project)
                        .Include(t => t.TicketPriority)
                        .Include(t => t.TicketStatus)
                        .Include(t => t.TicketType)
                        .OrderByDescending(t => t.Created)
                        .Skip(skip)
                        .Take(5)
                        .ToList();
                viewModel.Remainder = _context.Tickets.Skip(skip + 5).Count();
            }
            else if (User.IsInRole("ProjectManager"))
            {
                model = _context.Tickets
                        .Where(t => t.DeveloperUserId == userId)
                        .Include(t => t.OwnerUser)
                        .Include(t => t.Project)
                        .Include(t => t.TicketPriority)
                        .Include(t => t.TicketStatus)
                        .Include(t => t.TicketType)
                        .OrderByDescending(t => t.Created)
                        .ToList();


                var projectIds   = new List <int>();
                var userProjects = _context.ProjectUsers.Where(pu => pu.UserId == userId).ToList();

                foreach (var record in userProjects)
                {
                    projectIds.Add(record.ProjectId);
                }
                foreach (var id in projectIds)
                {
                    var tickets = _context.Tickets.Where(t => t.ProjectId == id)
                                  .Include(t => t.DeveloperUser)
                                  .Include(t => t.OwnerUser)
                                  .Include(t => t.Project)
                                  .Include(t => t.TicketPriority)
                                  .Include(t => t.TicketStatus)
                                  .Include(t => t.TicketType)
                                  .OrderByDescending(t => t.Created)
                                  .ToList();

                    model.AddRange(tickets);
                    viewModel.Remainder = model.Skip(skip + 5).Count();
                    model.OrderByDescending(t => t.Created).Skip(skip).Take(5);
                }
            }
            else if (User.IsInRole("Developer"))
            {
                model = _context.Tickets
                        .Where(t => t.DeveloperUserId == userId)
                        .Include(t => t.OwnerUser)
                        .Include(t => t.Project)
                        .Include(t => t.TicketPriority)
                        .Include(t => t.TicketStatus)
                        .Include(t => t.TicketType)
                        .OrderByDescending(t => t.Created)
                        .Skip(skip)
                        .Take(5)
                        .ToList();
                viewModel.Remainder = _context.Tickets.Where(t => t.DeveloperUserId == userId).Skip(skip + 5).Count();
            }
            else if (User.IsInRole("Submitter"))
            {
                model = _context.Tickets
                        .Where(t => t.OwnerUserId == userId)
                        .Include(t => t.OwnerUser)
                        .Include(t => t.Project)
                        .Include(t => t.TicketPriority)
                        .Include(t => t.TicketStatus)
                        .Include(t => t.TicketType)
                        .OrderByDescending(t => t.Created)
                        .Skip(skip)
                        .Take(5)
                        .ToList();
                viewModel.Remainder = _context.Tickets.Where(t => t.OwnerUserId == userId).Skip(skip + 5).Count();
            }
            else if (User.IsInRole("NewUser"))
            {
                model = _context.Tickets
                        .Where(t => t.OwnerUserId == userId)
                        .Include(t => t.OwnerUser)
                        .Include(t => t.Project)
                        .Include(t => t.TicketPriority)
                        .Include(t => t.TicketStatus)
                        .Include(t => t.TicketType)
                        .OrderByDescending(t => t.Created)
                        .Skip(skip)
                        .Take(5)
                        .ToList();
                viewModel.Remainder = _context.Tickets.Where(t => t.OwnerUserId == userId).Skip(skip + 5).Count();
            }
            else
            {
                return(NotFound());
            }

            ViewData["DeveloperUserId"] = new SelectList(_context.Users, "Id", "FullName");
            //ViewData["OwnerUserId"] = new SelectList(_context.Users, "Id", "FullName");
            ViewData["ProjectId"]        = new SelectList(_context.Projects, "Id", "Name");
            ViewData["TicketPriorityId"] = new SelectList(_context.TicketPriorities, "Id", "Name");
            ViewData["TicketStatusId"]   = new SelectList(_context.TicketStatuses, "Id", "Name");
            ViewData["TicketTypeId"]     = new SelectList(_context.TicketTypes, "Id", "Name");
            viewModel.Tickets            = model;
            var projects = _context.Projects.ToList();

            viewModel.Projects = projects;
            return(View(viewModel));

            //var vm = new ProjectTicketsViewModel
            //{
            //    Tickets = _context.Tickets.ToList(),
            //    Projects = _context.Projects.ToList()
            //};
            //return View(vm);
        }