Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        private void SortDealsBy(List <Deal> deals, DealSortOrder sort, string sortOrder)
        {
            deals.Sort(DealBusinessComparer.GetInstance(sort));

            if (sortOrder == "dsc")
            {
                deals.Reverse();
            }
        }
Ejemplo n.º 3
0
        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");
            }
        }
Ejemplo n.º 4
0
 private DealBusinessComparer(DealSortOrder sortOrder)
 {
     this.sortOrder = sortOrder;
 }