/// <summary> /// Message to recive a Confirmed Order , Calculate the price and let /// </summary> /// <param name="message"></param> /// <returns></returns> public async Task Consume(OrderConfirmed message, MessageContext context) { using (OrderDataContext dataContext = new OrderDataContext()) { Data.Model.Order order = dataContext.Orders.Include(p => p.Products).SingleOrDefault(p => p.Id == message.Id); if (order == null) { Exception ex = new Exception("Order not found"); ex.Data.Add("OrderId", message.Id); throw ex; } var calcualtePrice = new CalculatePrice() { Products = order.Products.Select(p => new Product() { ProductId = p.Id, Quantity = p.Quantity }).ToList() }; //Wait for resolve Notified bug in library ticket id #56487 for adding GUID in exchange //var calculatedPrice = await Bus.RequestAsync<CalculatePrice, MessageDirectory.Response.CalculatePrice>(calcualtePrice); //order.Amount = calculatedPrice.TotalAmount; //dataContext.SaveChanges(); var products = order.Products.Select(o => new Product() { ProductId = o.ProductId, Quantity = o.Quantity }).ToList(); var reqProductionInfos = new ProductInfo() { Products = products }; //var resultInfo = await Bus.RequestAsync<ProductInfo, MessageDirectory.Response.ProductInfo>(reqProductionInfos); OrderReadyToDeliver orderReady = new OrderReadyToDeliver() { Address = order.Address, Amount = order.Amount, City = order.City, CreateDate = order.CreateDate, DeliveryType = (DeliveryType)order.DeliveryType, Email = order.Email, PayedAmount = order.Amount, PhoneNumber = order.PhoneNumber, //ProductsToPrepare = resultInfo.Products.Select(p => new ProductToPrepare() //{ // ProductName = p.ProductName, // Quantity = p.Quantity //}).ToList() }; await Bus.PublishAsync(orderReady); } }
public static Data.Model.Order ToDataEntity(Business.Model.Order bOrder) { var offer = new Data.Model.Order { Id = bOrder.Id, Number = bOrder.Number, Date = bOrder.Date, Status = bOrder.Status, UserId = bOrder.UserId, BikeId = bOrder.Bike.Id }; return(offer); }