public async Task <ActionResult> Restaurants(DealSortOrder sortBy = DealSortOrder.City, string sortOrder = "asc") { try { LiveIdAuthResult liveIdAuthResult = HttpContext.Items["liveauthstate"] as LiveIdAuthResult; AuthorizeUserResult userResult = await AuthorizeUser(liveIdAuthResult); if (!userResult.Authorized) { return(userResult.Result); } if (liveIdAuthResult != null) { ViewBag.ProfileName = liveIdAuthResult.ProfileName; ViewBag.SignOutHtmlLink = liveIdAuthResult.SignOutHtmlLink; } string state = (HttpContext.Items["state"] as string) ?? "wa"; if (state == "wa") { ViewBag.wa = "selected"; } else if (state == "az") { ViewBag.az = "selected"; } if (state == "ma") { ViewBag.ma = "selected"; } string revIpHeader = HttpContext.Request.Headers["X-FD-RevIP"]; Task <List <Deal> > dealTask = DealService.GetDeals(state); UserModel userModel = new UserModel(User.Identity as ClaimsIdentity); string secureToken = HttpContext.Items["backendtoken"] as string; Task <string> earnedAmountTask = CommerceService.GetTotalEarnedAmount(userModel, secureToken); string earnedAmount = await earnedAmountTask; List <Deal> deals = await dealTask; SortDealsBy(deals, sortBy, sortOrder); AccountsPageModel pageModel = new AccountsPageModel { LocalDeals = deals, SelectedState = state, EarnTotal = earnedAmount, SortBy = Enum.GetName(sortBy.GetType(), sortBy), SortOrder = sortOrder, Page = "restaurants", UserId = userModel.UserId }; return(View("~/offers/earn/views/account/restaurants.cshtml", pageModel)); } catch (Exception e) { } return(HandleServerError()); }
private void SortDealsBy(List <Deal> deals, DealSortOrder sort, string sortOrder) { deals.Sort(DealBusinessComparer.GetInstance(sort)); if (sortOrder == "dsc") { deals.Reverse(); } }
public static IComparer <Deal> GetInstance(DealSortOrder sortOrder) { switch (sortOrder) { case DealSortOrder.City: if (byCity == null) { byCity = new DealBusinessComparer(DealSortOrder.City); } return(byCity); case DealSortOrder.Zip: if (byZipcode == null) { byZipcode = new DealBusinessComparer(DealSortOrder.Zip); } return(byZipcode); case DealSortOrder.BusinessName: if (byName == null) { byName = new DealBusinessComparer(DealSortOrder.BusinessName); } return(byName); case DealSortOrder.Cuisine: if (byCuisine == null) { byCuisine = new DealBusinessComparer(DealSortOrder.Cuisine); } return(byCuisine); default: throw new InvalidOperationException("Unknown Sort Order"); } }
private DealBusinessComparer(DealSortOrder sortOrder) { this.sortOrder = sortOrder; }