public async Task ExecuteAsync(CartItemAdded evt) { var cartProjection = await Repository.RetrieveAsync <CartProjection>(evt.AggregateId.ToString()); cartProjection.Products.Add(evt.Adapt <CartProjection.CartProduct>()); cartProjection.CartTotal = CalculateCartTotal(cartProjection); await Repository.UpsertAsync(cartProjection, evt); }
private void AddItemsToCartInSession(CartItemAdded item) { var cart = GetCartInSession(); cart.Add(item); HttpContext.Session.SetString(CARDKEY, JsonConvert.SerializeObject(cart)); }
public async Task <IActionResult> AddToCard(CartViewModel cartViewModel) { var cartItemAdded = new CartItemAdded() { UserName = USER, ProductName = cartViewModel.Product }; await SendOnlyBus.SendAsync(cartItemAdded, ORDERSAGASERVICENAME); AddItemsToCartInSession(cartItemAdded); var cartItems = GetCartInSession(); cartViewModel.CartItemsAdded = cartItems; return(View("Index", cartViewModel)); }
public async Task HandleCommandAsync(IBus bus, CartItemAdded message, ILogger log) { var productsList = new List <string>(); if (Data.PartitionKey == null) { this.Data.PartitionKey = PARTITION_KEY; this.Data.RowKey = message.UserName; this.Data.UserName = message.UserName; } else { productsList = await this.LoadBlobPropertyAsync <List <string> >(Data.Products); } productsList.Add(message.ProductName); Data.Products = await this.WriteBlobPropertyAsync(productsList); }
public Task HandleCommandAsync(IBus bus, CartItemAdded message, TraceWriter log) { var productsList = new List <string>(); if (Data.PartitionKey == null) { this.Data.PartitionKey = PARTITION_KEY; this.Data.RowKey = message.UserName; this.Data.Products = bus.Serializer.Serialize(productsList); this.Data.UserName = message.UserName; } else { productsList = JsonConvert.DeserializeObject <List <string> >(this.Data.Products); } productsList.Add(message.ProductName); this.Data.Products = JsonConvert.SerializeObject(productsList); return(Task.CompletedTask); }
public override async Task <Cart> Run(Cart arg, CommercePipelineExecutionContext context) { var policy = context.GetPolicy <Policies.AbandonCartsPolicy>(); var data = new CartItemAdded { UserId = arg.Id, Timestamp = DateTime.UtcNow, }; using (var client = new WebClient()) { client.Headers["content-type"] = "application/json"; var stringData = JsonConvert.SerializeObject(data); var bytes = Encoding.UTF8.GetBytes(stringData); var response = await client.UploadDataTaskAsync(policy.AddItemUrl, bytes); var responseText = Encoding.UTF8.GetString(response); } return(await Task.FromResult(arg)); }
// We take actions internally on an event here private void OnCartItemAdded(CartItemAdded evt) { _cartItems.Add(new CartItem(evt.Sku, evt.Name, evt.SalePrice, evt.Quantity)); }
public async Task <SagaData> LookForInstanceAsync(CartItemAdded message) { return(await SagaPersistence.GetSagaDataAsync <OrderSagaData>(PARTITION_KEY, message.UserName)); }