private Cart GetCart(string cartId, CommerceContext commerceContext, string baseUrl) { var shopName = commerceContext.CurrentShopName(); var shopperId = commerceContext.CurrentShopperId(); var customerId = commerceContext.CurrentCustomerId(); var environment = commerceContext.Environment.Name; var url = string.Format(Constants.Settings.EndpointUrl, baseUrl, cartId); var client = new HttpClient(); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(Constants.Settings.AppJson)); client.DefaultRequestHeaders.Add(Constants.Settings.ShopName, shopName); client.DefaultRequestHeaders.Add(Constants.Settings.ShopperId, shopperId); client.DefaultRequestHeaders.Add(Constants.Settings.Language, "en-US"); client.DefaultRequestHeaders.Add(Constants.Settings.Environment, environment); client.DefaultRequestHeaders.Add(Constants.Settings.CustomerId, customerId); client.DefaultRequestHeaders.Add(Constants.Settings.Currency, commerceContext.CurrentCurrency()); client.DefaultRequestHeaders.Add(Constants.Settings.Roles, Constants.Settings.CartRoles); try { var cart = new Cart(); var response = client.GetAsync(url).Result; if (response != null) { var task = response.Content.ReadAsStreamAsync().ContinueWith(t => { var stream = t.Result; using (var reader = new StreamReader(stream)) { var responseValue = reader.ReadToEnd(); cart = JsonConvert.DeserializeObject <Cart>(responseValue); } }); task.Wait(); } client.Dispose(); return(cart); } catch (Exception ex) { Console.WriteLine(ex.Message); client.Dispose(); return(null); } }
/// <summary> /// The process of the command /// </summary> /// <param name="commerceContext"> /// The commerce context /// </param> /// <param name="cartId"></param> /// <returns> /// The <see cref="Task"/>. /// </returns> public async Task <Cart> Process(CommerceContext commerceContext, string cartId) { using (var activity = CommandActivity.Start(commerceContext, this)) { var arg = new ResolveCartArgument(commerceContext.CurrentShopName(), cartId, commerceContext.CurrentShopperId()); var cart = await _getCartPipeline.Run(arg, commerceContext.GetPipelineContextOptions()); var cartComponent = cart.GetComponent <TestSimulationComponent>(); cartComponent.Status = true; var persistEntityArgument = await this._persistEntityPipeline.Run(new PersistEntityArgument(cart), commerceContext.GetPipelineContextOptions()); return(cart); } }
public bool Evaluate(IRuleExecutionContext context) { //itemId = ID to check in purchase order history //itemInCartItemId = Item in cart to check in order history to give discount //If customer has purchased itemId and has not purchased itemInCartItemId this rule returns true string itemId = this.TargetItemId.Yield(context); string itemInCartItemId = this.CurrentItemInCartId.Yield(context); bool valid = false; CommerceContext commerceContext = context.Fact <CommerceContext>((string)null); if (commerceContext == null || !commerceContext.CurrentUserIsRegistered() || string.IsNullOrEmpty(itemId)) { return(false); } //UPDATED TO USE CURRENTSHOPPERID VS EMPTY CURRENTCUSTOMERID string listName = string.Format(commerceContext.GetPolicy <KnownOrderListsPolicy>().CustomerOrders, (object)commerceContext.CurrentShopperId()); CommerceList <Order> result = Task.Run <CommerceList <Order> >((Func <Task <CommerceList <Order> > >)(() => this._getEntitFindEntitiesInListCommand.Process <Order>(commerceContext, listName, 0, int.MaxValue))).Result; List <Order> source = result != null?result.Items.ToList <Order>() : (List <Order>)null; if (source == null || !source.Any <Order>()) { return(false); } if (!this.MatchesAnItem(context)) { if ( source.Any <Order>( (Func <Order, bool>)( o => o.Lines.Any <CartLineComponent>( (Func <CartLineComponent, bool>)( l => l.ItemId.StartsWith(itemId, StringComparison.OrdinalIgnoreCase) ))))) { valid = source.Where <Order>( (Func <Order, bool>)( o => o.Lines.Where <CartLineComponent>( (Func <CartLineComponent, bool>)( l => l.ItemId.Contains(itemInCartItemId) )).FirstOrDefault() != null)).FirstOrDefault() == null; return(valid); } } if (source.Any <Order>( (Func <Order, bool>)( o => o.Lines.Any <CartLineComponent>( (Func <CartLineComponent, bool>)( l => l.ItemId.Equals(itemId) ))))) { valid = source.Where <Order>( (Func <Order, bool>)( o => o.Lines.Where <CartLineComponent>( (Func <CartLineComponent, bool>)( l => !l.ItemId.Equals(itemInCartItemId, StringComparison.OrdinalIgnoreCase) )).FirstOrDefault() == null)).FirstOrDefault() == null; return(valid); } return(valid); }
public virtual async Task <WishList> Process(CommerceContext commerceContext, string wishListId, bool secureResult = true) { using (CommandActivity.Start(commerceContext, this)) { var context = commerceContext.GetPipelineContextOptions(); var resolveWishListArgument = new ResolveWishListArgument(commerceContext.CurrentShopName(), wishListId, commerceContext.CurrentShopperId()); var objects = commerceContext.GetObjects <WishList>(); if (objects.Any(p => p.Id == wishListId)) { commerceContext.Logger.LogTrace(string.Format("GetWishListCommand.AlreadyLoaded: WishListId={0}", wishListId), Array.Empty <object>()); return(objects.FirstOrDefault(p => p.Id == wishListId)); } commerceContext.Logger.LogTrace(string.Format("GetWishListCommand.LoadingWishList: WishListId={0}", wishListId), Array.Empty <object>()); var wishList = await _pipeline.Run(resolveWishListArgument, context); commerceContext.Logger.LogTrace(string.Format("GetWishListCommand.WishListLoaded: WishListId={0}", wishListId), Array.Empty <object>()); return(wishList); } }