public JsonResult SignUpForBackInStockNotification(SignUpForNotificationInputModel model)
        {
            try
            {
                if (CatalogManager.CatalogContext == null || StorefrontContext.Current == null)
                {
                    throw new InvalidOperationException("Cannot be called without a valid catalog context.");
                }

                Assert.ArgumentNotNull(model, nameof(model));

                var result = this.CreateJsonResult();
                if (result.HasErrors)
                {
                    return(Json(result, JsonRequestBehavior.AllowGet));
                }

                var response = InventoryManager.VisitorSignupForStockNotification(model, string.Empty);
                result = new BaseApiModel(response.ServiceProviderResult);

                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new ErrorApiModel("GetCurrentUser", e), JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 2
0
        public JsonResult AddToWishList(AddToWishListInputModel model)
        {
            try
            {
                Assert.ArgumentNotNull(model, "model");

                var validationResult = new BaseApiModel();
                this.ValidateModel(validationResult);
                if (validationResult.HasErrors)
                {
                    return(this.Json(validationResult, JsonRequestBehavior.AllowGet));
                }

                var wishLists = new List <WishListHeader>();
                var response  = this.WishListManager.AddLinesToWishList(this.StorefrontContext.Current, Context.User.Name, model);
                var result    = new WishListsBaseApiModel(response.ServiceProviderResult);
                if (response.ServiceProviderResult.Success && response.Result != null)
                {
                    wishLists = this.WishListsHeaders(result);
                }

                result.Initialize(wishLists);
                return(this.Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Sitecore.Commerce.OpenIDConnectionClosedUnexpectedlyException e)
            {
                this.CleanNotAuthorizedSession();
                return(this.Json(new ErrorApiModel("Login", e), JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(this.Json(new ErrorApiModel("AddToWishList", e), JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 3
0
        public ActionResult UpdateLineItem(WishListLineInputModel model)
        {
            try
            {
                Assert.ArgumentNotNull(model, "model");

                var validationResult = new BaseApiModel();
                this.ValidateModel(validationResult);
                if (validationResult.HasErrors)
                {
                    return(this.Json(validationResult, JsonRequestBehavior.AllowGet));
                }

                var response = this.WishListManager.UpdateWishListLine(this.StorefrontContext.Current, Context.User.Name, model);
                var result   = new WishListBaseApiModel(response.ServiceProviderResult);
                if (response.ServiceProviderResult.Success && response.Result != null)
                {
                    this.WishList(model.WishListId, result);
                }

                return(this.Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Sitecore.Commerce.OpenIDConnectionClosedUnexpectedlyException e)
            {
                this.CleanNotAuthorizedSession();
                return(this.Json(new ErrorApiModel("Login", e), JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(this.Json(new ErrorApiModel("UpdateLineItem", e), JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 4
0
        public JsonResult AddWishListsToCart(List <WishListInputModel> models)
        {
            try
            {
                Assert.ArgumentNotNull(models, "models");

                var validationResult = new BaseApiModel();
                this.ValidateModel(validationResult);
                if (validationResult.HasErrors)
                {
                    return(this.Json(validationResult, JsonRequestBehavior.AllowGet));
                }

                var wishLists = new List <WishListHeader>();

                //// TODO: ADD ALL THE ITEMS ON EACH WISH LIST TO THE CART
                var result = new WishListsBaseApiModel();
                result.Initialize(wishLists);
                return(this.Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Sitecore.Commerce.OpenIDConnectionClosedUnexpectedlyException e)
            {
                this.CleanNotAuthorizedSession();
                return(this.Json(new ErrorApiModel("Login", e), JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(this.Json(new ErrorApiModel("AddWishListsToCart", e), JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 5
0
        public JsonResult GetWishList(WishListInputModel model)
        {
            try
            {
                Assert.ArgumentNotNull(model, "model");

                var validationResult = new BaseApiModel();
                this.ValidateModel(validationResult);
                if (validationResult.HasErrors)
                {
                    return(this.Json(validationResult, JsonRequestBehavior.AllowGet));
                }

                var userResponse = this.AccountManager.GetUser(Context.User.Name);
                var result       = new WishListBaseApiModel(userResponse.ServiceProviderResult);
                if (userResponse.ServiceProviderResult.Success && userResponse.Result != null)
                {
                    this.WishList(model.ExternalId, result);
                }

                return(this.Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Sitecore.Commerce.OpenIDConnectionClosedUnexpectedlyException e)
            {
                this.CleanNotAuthorizedSession();
                return(this.Json(new ErrorApiModel("Login", e), JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(this.Json(new ErrorApiModel("GetWishList", e), JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 6
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseOpenApi();
            app.UseSwaggerUi3();

            app.UseRouting();

            app.UseAuthentication();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            app.UseExceptionHandler(a => a.Run(async context =>
            {
                var exceptionHandlerPathFeature = context.Features.Get <IExceptionHandlerPathFeature>();
                var exception = exceptionHandlerPathFeature.Error;
                context.Response.StatusCode = 200;
                var message = new BaseApiModel {
                    Errors = new List <string> {
                        exception.GetMessage()
                    }
                };
                await context.Response.WriteAsync(JsonConvert.SerializeObject(message));
            }));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// The all cards.
        /// </summary>
        /// <param name="result">
        /// The result.
        /// </param>
        /// <param name="withDetails">
        /// The with details.
        /// </param>
        /// <returns>
        /// The <see cref="List"/>.
        /// </returns>
        private List <LoyaltyCard> AllCards(BaseApiModel result, bool withDetails)
        {
            var response = this.LoyaltyProgramManager.GetLoyaltyCards(this.StorefrontContext.Current, this.CommerceUserContext.Current.UserId, withDetails);
            var cards    = new List <LoyaltyCard>();

            if (response.ServiceProviderResult.Success && response.Result != null)
            {
                cards = response.Result.ToList();
            }

            result.SetErrors(response.ServiceProviderResult);
            return(cards);
        }
Ejemplo n.º 8
0
        private static BaseApiModel <TModelType> AuthenticateAndThrottle <TModelType>(this IRestClient client, IRestRequest request)
        {
            BaseApiModel <TModelType> responseObject = null;

            GlobalThrottle.Run(() =>
            {
                AuthorizeRequest(request);
                ThrottleRequest();

                var response   = client.Execute(request);
                responseObject = JsonConvert.DeserializeObject <BaseApiModel <TModelType> >(response.Content);
                AssignNewThrottle(responseObject);
            }, new CancellationToken());
            return(responseObject);
        }
        public JsonResult Setup()
        {
            try
            {
                var response = CartManager.TestSimulationSetUp(CommerceUserContext.Current.UserId);
                var result   = new BaseApiModel();

                if (!response)
                {
                    result.SetError("Test Simulation Failed!");
                }

                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new ErrorApiModel("Setup", e), JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 10
0
        private static void AssignNewThrottle <TModelType>(BaseApiModel <TModelType> response)
        {
            DateTime?nextAllowedTime = null;

            if (response.QuotaRemaining == 0)
            {
                nextAllowedTime = DateTime.UtcNow.Date.AddDays(1);
            }
            else if (response.BackOff.HasValue)
            {
                nextAllowedTime = DateTime.Now.AddSeconds(response.BackOff.Value + 2);
            }

            if (nextAllowedTime.HasValue)
            {
                lock (ThrottleLocker)
                    _nextAllowedRequestTime = nextAllowedTime.Value;
            }
        }
Ejemplo n.º 11
0
        public JsonResult Reorder(ReorderInputModel inputModel)
        {
            try
            {
                Assert.ArgumentNotNull(inputModel, nameof(inputModel));
                var validationResult = this.CreateJsonResult();
                if (validationResult.HasErrors)
                {
                    return(Json(validationResult, JsonRequestBehavior.AllowGet));
                }

                var response = OrderManager.Reorder(CommerceUserContext.Current.UserId, inputModel);
                var result   = new BaseApiModel(response.ServiceProviderResult);
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new ErrorApiModel("Reorder", e), JsonRequestBehavior.AllowGet));
            }
        }
        public JsonResult AddCartLines(IEnumerable <AddCartLineInputModel> inputModels)
        {
            try
            {
                Assert.ArgumentNotNull(inputModels, nameof(inputModels));

                var validationResult = this.CreateJsonResult();
                if (validationResult.HasErrors)
                {
                    return(Json(validationResult, JsonRequestBehavior.AllowGet));
                }

                var response = CartManager.AddLineItemsToCart(CommerceUserContext.Current.UserId, inputModels);
                var result   = new BaseApiModel(response.ServiceProviderResult);
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new ErrorApiModel("AddCartLines", e), JsonRequestBehavior.AllowGet));
            }
        }
Ejemplo n.º 13
0
 public ApiResponse(BaseApiModel response)
 {
     _response = response;
 }