Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 public async Task OrderDispatched(OrderDispatchedIntegrationEvent message)
 {
     var handler = _serviceProvider.GetRequiredService <OrderDispatchedEventHandler>();
     await handler.Handle(message);
 }