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)); } }
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)); } }
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)); } }
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)); } }
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)); } }
// 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)); })); }
/// <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); }
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)); } }
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; } }
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)); } }
public ApiResponse(BaseApiModel response) { _response = response; }