private void Apply(ChangedOrderItemStateEvent e) { var logger = EngineContext.Current.Resolve <ILogger>(); logger.InsertLog(LogLevel.Information, "Apply ChangedOrderItemQuantity", String.Format("OrderItemGuid = {0}, ProductId = {1}, State = {2}", e.OrderItemGuid, e.ProductId, e.State)); var item = _orderItems.Find(i => i.OrderItemGuid == e.OrderItemGuid); if (item != null) { item.State = e.State; } else { throw new Exception(String.Format("No have order item '{0}' in order.", e.OrderItemGuid)); } }
public async Task Handle(ChangedOrderItemStateEvent message, CancellationToken token) { var order = _currentOrderService.GetOrderByGuid(message.Id); order.Version = message.Version; order.UpdatedOnUtc = message.TimeStamp.UtcDateTime; _currentOrderService.UpdateOrder(order); var item = _currentOrderService.GetOrderItemByGuid(message.OrderItemGuid); item.StateId = message.State; item.UpdatedOnUtc = message.TimeStamp.UtcDateTime; _currentOrderService.UpdateOrderItem(item); // fill in model values from the entity var notifyModel = order.ToNotifyChangedOrderItemModel(); var product = _productService.GetProductById(item.ProductId); var orderItemModel = new InStoreOrderItemListRowViewModel() { Id = item.Id, AggregateId = item.AggregateId, ProductId = item.ProductId, Quantity = item.Quantity, OldQuantity = item.Quantity, Version = item.Version, ProductName = product.Name, ProductPrice = product.Price }; notifyModel.UpdatedOnUtc = _dateTimeHelper.ConvertToUserTime(order.UpdatedOnUtc, DateTimeKind.Utc).ToString("dd/MM HH:mm:ss"); notifyModel.ChangedOrderItem = orderItemModel; await this._clientNotificationService.NotifyChangedOrderItemQuantityEvent(notifyModel); //return Task.CompletedTask; }