public Task <IInventoryServiceCompletedMessage> PurchaseAsync(RealTimeInventory product, int purchaseQuantity) { var request = new PurchaseMessage(product.ProductId, purchaseQuantity); if (DontUseActorSystem) { return(PerformOperation(request, product.PurchaseAsync(TestInventoryStorage, request.ProductId, request.Update), TestInventoryStorage.ReadInventoryAsync(request.ProductId).Result.Result)); } return(inventoryActor.Ask <IInventoryServiceCompletedMessage>(request, GENERAL_WAIT_TIME)); }
private (ShippingDtoMessage Dto, DropCopyNumberMessage Proxy) CreateAsync(PurchaseMessage message, Settings settings = null) { settings = settings ?? Settings.Empty; var config = ConfigurationStub.Create(() => { return(settings); }); var bus = BusPublisherStub.Create(); var service = new PurchaseService(Db, bus, config, TenantAccessorStub.Create()); service.CreateAsync(message).Wait(); var drop = bus.Dequeue <DropCopyNumberMessage>(QueueNames.Library); var payload = bus.Dequeue <ShippingDtoMessage>(QueueNames.Bookstore); return(payload, drop); }
public async Task CreateAsync(PurchaseMessage message) { var numbersDropped = new List <DropCopyNumberMessage>(); var order = await _db.Orders .Include(x => x.Items) .ThenInclude(x => x.Book) .Include(x => x.Customer) .FirstOrDefaultAsync(x => x.Number == message.Number); if (order == null) { order = new Order { Number = message.Number, Status = StatusOrder.Opened, CreateDate = DateTime.UtcNow, Customer = await _db.Customers.FirstOrDefaultAsync(x => x.DocumentId == message.CustomerId) }; if (order.Customer == null) { order.Customer = new Customer { DocumentId = message.CustomerId, Name = message.CustomerName }; } order.Items = new List <OrderItem>(); foreach (var item in message.Items) { var orderItem = await GetItemAsync(_db, item); if (IntegrationWithLibrary.Get()) { numbersDropped.Add(new DropCopyNumberMessage() { Number = item.Number }); } order.Items.Add(orderItem); } await _db.AddAsync(order); } else { order.Items = new List <OrderItem>(); foreach (var item in message.Items) { var orderItem = await GetItemAsync(_db, item); if (IntegrationWithLibrary.Get()) { numbersDropped.Add(new DropCopyNumberMessage() { Number = item.Number }); } order.Items.Add(orderItem); } _db.Update(order); } await _db.SaveChangesAsync(); if (IntegrationWithLibrary.Get()) { await _bus.PublishAllAsync(QueueNames.Library, numbersDropped); } var dto = new ShippingDtoMessage { OrderId = order.Id }; await _bus.PublishAsync(QueueNames.Bookstore, dto); }
private void OnPurchaseMessage(PurchaseMessage obj) { //throw new NotImplementedException(); }