private ShippingDto CreateShippingAsync(ShippingDtoMessage message) { var bus = BusPublisherStub.Create(); var service = new ProcessDtoService(Db, bus); service.CreateShippingAsync(message).Wait(); return(bus.DequeueExchange <ShippingDto>(ExchangeNames.DTO)); }
protected override async Task InternalRunAsync(IServiceProvider provider) { List <Order> orders = null; using (var context = provider.GetService <DbBookstore>()) { orders = await context.Orders.ToListAsync(); } foreach (var order in orders) { var message = new ShippingDtoMessage() { OrderId = order.Id }; var bus = provider.GetService <IBusPublisher>(); await bus.PublishAsync(QueueNames.Bookstore, message); } }
public async Task CreateShippingAsync(ShippingDtoMessage message) { var order = await _db.Orders .Include(x => x.Items) .Include(x => x.Customer) .FirstOrDefaultAsync(x => x.Id == message.OrderId); var dto = new ShippingDto { Id = order.Id, Number = order.Number, Status = order.Status, CreateDate = order.CreateDate, Customer = new ShippingDto.CustomerDetail() { Id = order.Customer.Id, Name = order.Customer.Name, Address = order.Customer.Address } }; foreach (var item in order.Items) { var itemDto = new ShippingDto.OrderItemDetail() { Id = item.Id, Name = item.Name, Price = item.Price, Quantity = item.Quantity, Total = item.Total }; dto.Items.Add(itemDto); } await _bus.PublishAsync(ExchangeNames.DTO, dto); }
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); }