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); }
private async void UpdateOrderStatusAsync(Guid orderId, Status status) { var prevOrderStatus = await _stateStore.GetStateAsync <OrderStatus>(orderId.ToString()); bool shouldUpdateOrderStatus = (prevOrderStatus == null) || status.ToString() switch { "Registered" => !prevOrderStatus.Status.Equals("Processed") && !prevOrderStatus.Status.Equals("Sent"), "Processed" => !prevOrderStatus.Status.Equals("Sent"), "Sent" => !prevOrderStatus.Status.Equals("Sent"), _ => false, }; if (shouldUpdateOrderStatus) { if (prevOrderStatus == null) { prevOrderStatus = new OrderStatus { OrderId = orderId, Status = status.ToString() }; } else { prevOrderStatus.Status = status.ToString(); } await _stateStore.UpdateStateAsync(prevOrderStatus, orderId.ToString()); } else { throw new Exception("Invalid Order Status"); } }