private ActionResult ReturnCategoryView(int? id, int? ticketsPage) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var category = this.Data.Categories.GetById((int)id); if (category == null) { return new HttpStatusCodeResult(HttpStatusCode.NotFound); } var pageIndex = ticketsPage.GetValueOrDefault(1); var ticketsList = this.Data.Tickets.All() .Where(t => t.CategoryId == category.Id) .AsEnumerable() .Select(t => new TicketSummaryViewModel { Id = t.Id, Title = t.Title, CategoryName = t.Category.Name, AuthorName = t.Author.UserName, Priority = t.Priority, Status = t.Status }) .OrderByDescending(t => t.SearchRelevance) .ThenByDescending(t => t.Id); var pagedTicketsList = ticketsList .Skip((pageIndex - 1) * Properties.Settings.Default.TicketsPageSize) .Take(Properties.Settings.Default.TicketsPageSize); var pagesCount = (int)Math.Ceiling((double)ticketsList.Count() / Properties.Settings.Default.TicketsPageSize); var ticketsViewModel = new TicketsFilterableViewModel { TicketsList = pagedTicketsList, PagesCount = pagesCount, TotalRecordsCount = ticketsList.Count() }; var viewModel = new CategoryDetailsViewModel { Id = category.Id, Name = category.Name, Tickets = ticketsViewModel }; return View(viewModel); }
public ActionResult Index(TicketFilter filter, int? page) { var pageIndex = page.GetValueOrDefault(1); var filteredTicketsList = this.ApplyFilter(filter) .AsEnumerable() .Select(t => new TicketSummaryViewModel { Id = t.Id, Title = t.Title, CategoryName = t.Category.Name, AuthorName = t.Author.UserName, Priority = t.Priority, Status = t.Status, SearchRelevance = Helpers.Filter.CalcualteFilterTicketRelevance(t, filter.Q) }) .Where(t => t.SearchRelevance > 0 && t.Status != TicketStatus.Closed && t.Status != TicketStatus.Duplicate) .OrderByDescending(t => t.SearchRelevance) .ThenByDescending(t => t.Id); var pagedTicketsList = filteredTicketsList .Skip((pageIndex - 1) * Properties.Settings.Default.TicketsPageSize) .Take(Properties.Settings.Default.TicketsPageSize); var pagesCount = (int)Math.Ceiling((double)filteredTicketsList.Count() / Properties.Settings.Default.TicketsPageSize); var categoriesList = this.GetFilterList(t => new SelectListItem { Value = t.CategoryId.ToString(), Text = t.Category.Name }); var prioritiesList = this.GetFilterList(t => new SelectListItem { Value = t.Priority.ToString(), Text = t.Priority.ToString() }); var statusesList = this.GetFilterList(t => new SelectListItem { Value = t.Status.ToString(), Text = t.Status.ToString() }); var authorsList = this.GetFilterList(t => new SelectListItem { Value = t.AuthorId.ToString(), Text = t.Author.UserName.ToString() }); var titlesList = this.GetFilterList(t => new SelectListItem { Value = t.Title.ToString(), Text = t.Title.ToString() }); var viewModel = new TicketsFilterableViewModel { TicketsList = pagedTicketsList, Filter = filter, PagesCount = pagesCount, TotalRecordsCount = filteredTicketsList.Count(), MetaData = new TicketsMetaDataViewModel { CategoriesList = categoriesList, PrioritiesList = prioritiesList, StatusesList = statusesList, AuthorsList = authorsList, TitlesList = titlesList } }; return View(viewModel); }