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