// 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)); }
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); }