public async Task Handle(OrderProcessedIntegrationEvent result) { var orderStatus = await _stateStore.GetStateAsync <OrderStatus>(result.OrderId.ToString()); if (orderStatus != null && orderStatus.Status != "Processed") { throw new Exception("Could not process order due to invalid status - " + orderStatus.Status); } var facesData = result.Faces; var rootFolder = AppContext.BaseDirectory; Console.WriteLine("Root Directory is - " + rootFolder); if (facesData.Count < 1) { await Console.Out.WriteLineAsync($"No Faces Detected"); } else { int j = 0; foreach (var face in facesData) { MemoryStream ms = new(face); var image = Image.Load(ms.ToArray()); image.Save(rootFolder + "face" + j + ".jpg"); j++; } } var dispatchedOrder = new OrderDispatchedIntegrationEvent { DispachtedDateTime = DateTime.UtcNow, OrderId = result.OrderId }; await _eventBus.PublishAsync <OrderDispatchedIntegrationEvent>(dispatchedOrder); }
public async Task Handle(InvoiceProcessedIntegrationEvent @event) { _logger.LogDebug($"Handling the `Invoice Processed` event from Invoice service"); // get the dispatched order from repository var dispatchOrder = _dispatchOrderRepository.GetDispatchOrderByOrderId(@event.OrderId); var delivery = new Delivery() { DeliveryAddress = "John Doe, Neverland, Zip - 000000", FreightForwarderId = new Random().Next(111111, 999999), InvoiceAmount = @event.InvoiceAmount }; dispatchOrder.Delivery = delivery; dispatchOrder.DisptachStatus = "Dispatched"; // save to repository _dispatchOrderRepository.Save(); // build the event for Order dispatched var orderDispatchedIntegrationEvent = new OrderDispatchedIntegrationEvent() { DispatchOrderId = dispatchOrder.Id, OrderId = dispatchOrder.OrderId, IsDispatched = true }; //publish the event await _eventBus.PublishAsync(orderDispatchedIntegrationEvent); }
public async Task OrderDispatched(OrderDispatchedIntegrationEvent message) { var handler = _serviceProvider.GetRequiredService <OrderDispatchedEventHandler>(); await handler.Handle(message); }