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 ActionResult HandleUnauthenticatedOrUnregisteredUser(LiveIdAuthResult result)
        {
            LearnPageModel learnPageModel = new LearnPageModel();

            if (result != null)
            {
                learnPageModel.LiveIdResult = result;
            }

            return(View("~/offers/earn/views/learn/learn.cshtml", learnPageModel));
        }
        /// <summary>
        /// enrolls the user registered card brand to the earn program
        /// defaults to mastercard
        /// </summary>
        /// <param name="ut">The user token</param>
        /// <returns>The view</returns>
        public async Task <ActionResult> Index(string ut)
        {
            if (string.IsNullOrWhiteSpace(ut))
            {
                Log.Error("MigrateController: invalid user token, redirecting to home page");
            }
            else
            {
                try
                {
                    LiveIdAuthResult liveIdAuthResult = HttpContext.Items["liveauthstate"] as LiveIdAuthResult;

                    if (liveIdAuthResult != null)
                    {
                        if (liveIdAuthResult.IsUserAuthenticated)
                        {
                            ViewBag.ProfileName   = liveIdAuthResult.ProfileName;
                            ViewBag.LoginHtmlLink = liveIdAuthResult.SignOutHtmlLink;
                        }
                        else
                        {
                            ViewBag.LoginHtmlLink = liveIdAuthResult.SignInHtmlLink;
                        }
                    }

                    var content = new { user_id = Cipher.Decrypt(ut, WebConfigurationManager.AppSettings["MigrateUserDecryptKey"]), card_brands = new[] { "MasterCard" }, reward_programs = new[] { "EarnBurn" } };

                    using (var handler = new WebRequestHandler())
                    {
                        X509Certificate2 cert = TryGetCertificate(CertThumbprint);
                        if (cert != null)
                        {
                            handler.ClientCertificates.Add(cert);

                            using (HttpClient client = new HttpClient(handler))
                            {
                                HttpResponseMessage response = await client.PutAsJsonAsync(WebConfigurationManager.AppSettings["MigrateUserUri"], content);

                                response.EnsureSuccessStatusCode();
                                Log.Info("MigrateController: user {0} enrolled successfully.", ut);
                                return(View("~/offers/earn/views/migrate/index.cshtml"));
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex, "MigrateController: Decrypting the token {0} failed.", ut);
                }
            }

            return(RedirectToRoute("Default"));
        }
Esempio n. 4
0
        public ActionResult Index()
        {
            LiveIdAuthResult liveIdAuthResult = HttpContext.Items["liveauthstate"] as LiveIdAuthResult;
            LearnPageModel   learnPageModel   = new LearnPageModel();

            if (liveIdAuthResult != null)
            {
                learnPageModel.LiveIdResult = liveIdAuthResult;
            }

            return(View("~/offers/earn/views/learn/learn.cshtml", learnPageModel));
        }
Esempio n. 5
0
        // TODO: Replace with a different auth model
        public ActionResult Index()
        {
            LiveIdAuthResult liveIdAuthResult = new LiveIdAuthResult();

            LearnPageModel learnPageModel = new LearnPageModel();

            if (liveIdAuthResult != null)
            {
                learnPageModel.LiveIdResult = liveIdAuthResult;
            }

            return(View("~/offers/earn/views/learn/learn.cshtml", learnPageModel));
        }
        public async Task <ActionResult> Index()
        {
            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";
                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;
                List <Deal>   topDeals         = DealService.GetTopDeals(state);

                if (deals != null)
                {
                    AccountsPageModel model = new AccountsPageModel
                    {
                        LocalDeals = deals,
                        TopDeals   = topDeals,
                        EarnTotal  = earnedAmount,
                        UserId     = userModel.UserId,
                        Page       = "places to earn"
                    };

                    return(View("~/offers/earn/views/account/places.cshtml", model));
                }
            }
            catch (Exception e)
            {
            }

            return(HandleServerError());
        }
Esempio n. 7
0
        public ActionResult Index()
        {
            LiveIdAuthResult liveIdAuthResult = HttpContext.Items["liveauthstate"] as LiveIdAuthResult;

            if (!User.Identity.IsAuthenticated)
            {
                LearnPageModel learnPageModel = new LearnPageModel();
                if (liveIdAuthResult != null)
                {
                    learnPageModel.LiveIdResult = liveIdAuthResult;
                }

                return(View("~/offers/earn/views/learn/learn.cshtml", learnPageModel));
            }

            return(Content(liveIdAuthResult.Anid));
        }
        public async Task <ActionResult> GiftCards()
        {
            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";
                string        revIpHeader      = HttpContext.Request.Headers["X-FD-RevIP"];
                UserModel     userModel        = new UserModel(User.Identity as ClaimsIdentity);
                string        secureToken      = HttpContext.Items["backendtoken"] as string;
                Task <string> earnedAmountTask = CommerceService.GetTotalEarnedAmount(userModel, secureToken);
                User          userInfo         = await UserService.GetUserInfo(secureToken);

                string earnedAmount = await earnedAmountTask;
                if (userInfo != null)
                {
                    AccountsPageModel pageModel = new AccountsPageModel
                    {
                        UserInfo  = userInfo,
                        EarnTotal = earnedAmount,
                        UserId    = userModel.UserId,
                        Page      = "GiftCards"
                    };

                    return(View("~/offers/earn/views/account/giftcards.cshtml", pageModel));
                }
            }
            catch (Exception e)
            {
            }

            return(HandleServerError());
        }
        public async Task <ActionResult> Referrals()
        {
            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;
                }

                UserModel     userModel        = new UserModel(User.Identity as ClaimsIdentity);
                string        secureToken      = HttpContext.Items["backendtoken"] as string;
                Task <string> earnedAmountTask = CommerceService.GetTotalEarnedAmount(userModel, secureToken);
                Task <string> referralCodeTask = CommerceService.LoadReferralCode(userModel, secureToken);
                Task <List <ReferralCodeReportDataContract> > referralReportTask = CommerceService.LoadReferralReport(userModel, secureToken);

                string earnedAmount = await earnedAmountTask;
                string referralCode = await referralCodeTask;
                List <ReferralCodeReportDataContract> referralReport = await referralReportTask;

                AccountsPageModel pageModel = new AccountsPageModel
                {
                    EarnTotal      = earnedAmount,
                    ReferralReport = referralReport,
                    ReferralCode   = referralCode,
                    Page           = "referrals",
                    UserId         = userModel.UserId
                };

                return(View("~/offers/earn/views/account/referrals.cshtml", pageModel));
            }
            catch (Exception e)
            {
            }

            return(HandleServerError());
        }
Esempio n. 10
0
        public async Task <ActionResult> Settings()
        {
            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;
                }

                UserModel userModel   = new UserModel(User.Identity as ClaimsIdentity);
                string    secureToken = HttpContext.Items["backendtoken"] as string;

                Task <V2GetCardsResponse> getCardsResponseTask = CommerceService.GetRegisteredCards(secureToken);
                Task <string>             earnedAmountTask     = CommerceService.GetTotalEarnedAmount(userModel, secureToken);
                User userInfo = await UserService.GetUserInfo(secureToken);

                string             earnedAmount     = await earnedAmountTask;
                V2GetCardsResponse getCardsResponse = await getCardsResponseTask;

                AccountsPageModel pageModel = new AccountsPageModel
                {
                    EarnTotal = earnedAmount,
                    Cards     = getCardsResponse.Cards,
                    UserInfo  = userInfo,
                    Page      = "settings",
                    UserId    = userModel.UserId
                };

                return(View("~/offers/earn/views/account/settings.cshtml", pageModel));
            }
            catch (Exception e)
            {
            }

            return(HandleServerError());
        }
Esempio n. 11
0
        public async Task <ActionResult> Index(bool debug = false, string step = "step1")
        {
            try
            {
                LiveIdAuthResult liveIdAuthResult = HttpContext.Items["liveauthstate"] as LiveIdAuthResult;
                ViewBag.CurrentStep = step;
                if (!User.Identity.IsAuthenticated)
                {
                    return(HandleUnauthenticatedUser(liveIdAuthResult));
                }

                UserModel userModel = new UserModel(User.Identity as ClaimsIdentity);
                ViewBag.UserId = userModel.UserId;
                string secureToken = HttpContext.Items["backendtoken"] as string;
                bool   status      = await CommerceService.IsUserRegisteredWithCardLink(userModel, secureToken);


                if (liveIdAuthResult != null)
                {
                    ViewBag.ProfileName     = liveIdAuthResult.ProfileName;
                    ViewBag.SignOutHtmlLink = liveIdAuthResult.SignOutHtmlLink;
                }

                if (debug)
                {
                    return(View("~/offers/earn/views/enroll/enroll.cshtml"));
                }

                if (status)
                {
                    return(HandleRegisteredUser());
                }

                return(View("~/offers/earn/views/enroll/enroll.cshtml"));
            }
            catch
            {
                return(HandleServerError());
            }
        }
Esempio n. 12
0
        private async Task <AuthorizeUserResult> AuthorizeUser(LiveIdAuthResult liveIdAuthResult)
        {
            AuthorizeUserResult authorizeResult = new AuthorizeUserResult();

            if (!User.Identity.IsAuthenticated)
            {
                authorizeResult.Result = HandleUnauthenticatedOrUnregisteredUser(liveIdAuthResult);
                return(authorizeResult);
            }

            UserModel userModel   = new UserModel(User.Identity as ClaimsIdentity);
            string    secureToken = HttpContext.Items["backendtoken"] as string;
            bool      status      = await CommerceService.IsUserRegisteredWithCardLink(userModel, secureToken);

            if (!status)
            {
                authorizeResult.Result = HandleUnauthenticatedOrUnregisteredUser(liveIdAuthResult);
                return(authorizeResult);
            }

            authorizeResult.Authorized = true;
            return(authorizeResult);
        }
Esempio n. 13
0
 private ActionResult HandleUnauthenticatedUser(LiveIdAuthResult result)
 {
     ViewBag.SignInHtmlLink = result.SignInHtmlLink;;
     return(View("~/offers/earn/views/enroll/enrollunauthenticated.cshtml"));
 }
Esempio n. 14
0
        public async Task <ActionResult> History()
        {
            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";
                string    revIpHeader = HttpContext.Request.Headers["X-FD-RevIP"];
                string    secureToken = HttpContext.Items["backendtoken"] as string;
                UserModel userModel   = new UserModel(User.Identity as ClaimsIdentity);
                GetEarnBurnTransactionHistoryResponse response = await CommerceService.GetTransactionHistory(userModel, secureToken);

                if (response != null && response.RedemptionHistory != null)
                {
                    AccountsPageModel pageModel = new AccountsPageModel
                    {
                        RedemptionHistory        = response.RedemptionHistory.Where(x => x.CreditStatus == "CreditGranted").ToList(),
                        EarnTotal                = response.CreditBalance,
                        PendingRedemptionHistory = response.RedemptionHistory.Where(x => x.CreditStatus == "AuthorizationReceived" || x.CreditStatus == "ClearingReceived" || x.CreditStatus == "StatementCreditRequested").ToList(),
                        UserId = userModel.UserId,
                        Page   = "history"
                    };

                    List <EarnBurnTransactionItemDataContract> removeList = new List <EarnBurnTransactionItemDataContract>();
                    if (pageModel.PendingRedemptionHistory.Count > 0)
                    {
                        foreach (EarnBurnTransactionItemDataContract item in pageModel.PendingRedemptionHistory)
                        {
                            List <EarnBurnTransactionItemDataContract> result = pageModel.RedemptionHistory.Where(x =>
                                                                                                                  x.CardBrand == item.CardBrand &&
                                                                                                                  x.EventDateTime == item.EventDateTime &&
                                                                                                                  x.RedemptionType == item.RedemptionType &&
                                                                                                                  x.MerchantName == item.MerchantName &&
                                                                                                                  x.LastFourDigits == item.LastFourDigits &&
                                                                                                                  x.EventAmount == item.EventAmount &&
                                                                                                                  x.DiscountAmount == item.DiscountAmount).ToList();

                            if (result != null && result.Count > 0)
                            {
                                removeList.AddRange(result);
                            }
                        }

                        if (removeList.Count > 0)
                        {
                            foreach (EarnBurnTransactionItemDataContract item in removeList)
                            {
                                pageModel.PendingRedemptionHistory.RemoveAll(x =>
                                                                             x.EventDateTime == item.EventDateTime &&
                                                                             x.EventAmount == item.EventAmount &&
                                                                             x.RedemptionType == item.RedemptionType &&
                                                                             x.DiscountAmount == item.DiscountAmount &&
                                                                             x.LastFourDigits == item.LastFourDigits &&
                                                                             x.CardBrand == item.CardBrand &&
                                                                             x.MerchantName == item.MerchantName);
                            }
                        }

                        if (pageModel.PendingRedemptionHistory != null && pageModel.PendingRedemptionHistory.Count > 0)
                        {
                            foreach (var pendingTransaction in pageModel.PendingRedemptionHistory)
                            {
                                if (pendingTransaction.MerchantName.Trim() == "Shell")
                                {
                                    pendingTransaction.DiscountAmount = "TBD";
                                    pendingTransaction.EventAmount    = "TBD";
                                }
                            }
                        }
                    }

                    return(View("~/offers/earn/views/account/history.cshtml", pageModel));
                }
            }
            catch (Exception e)
            {
            }

            return(HandleServerError());
        }