public void Setup() { neverMatches = new object(); orderAccepted = new OrderAccepted(); orderDeclined = new OrderDeclined(); orderApproved = new OrderApproved(); extractorBase = new ExtractorUsingPatternMatching(); extractorForeach = new ExtractorUsingForEach(); }
public async Task Handle(OrderDeclined domainEvent) { var orderDate = DateTime.Now.ToString("yy-MM-dd"); var customerOrders = await _projectionsStore.Get <CustomerOrders>(domainEvent.CustomerId); if (customerOrders != null) { customerOrders = new CustomerOrders(domainEvent.CustomerId); } customerOrders.DeclinedOrders.Add(new SimplifiedOrder { OrderDate = orderDate, OrderId = domainEvent.OrderId, OrderNumber = domainEvent.OrderNumber }); }
public static async Task <IActionResult> RunAsync( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "order")] Order order, [DomainEventStream("Sales", "Order")] DomainEventStream eventStream, ILogger log) { /// Here is the place for business validation. /// If an Order is correct, we create the event OrderAccepted var orderId = Guid.NewGuid().ToString(); var orderNumber = NextOrderNumber(); if (IsValid(order)) { var orderAccepted = new OrderAccepted(Guid.Empty.ToString()) { OrderId = orderId, OrderNumber = orderNumber, Paste = order.Paste, Tomatoes = order.Tomatoes, Cheese = order.Cheese, Amount = order.Amount, CustomerId = order.CustomerId }; // Put the Event into EventStream. // EntityId is needed because the Stream doesn't know the Id and can't read from Event await eventStream.Append(orderAccepted, orderAccepted.OrderId); return(new OkObjectResult(new { orderNumber = orderAccepted.OrderNumber, orderId = orderAccepted.OrderId, message = "Order accepted" })); } else { var orderDeclined = new OrderDeclined(Guid.Empty.ToString()) { OrderId = orderId, OrderNumber = orderNumber, OrderContent = $"Paste: {order.Paste}, Tomatoes: {order.Tomatoes}, Cheese{order.Cheese}, Amount: {order.Amount}", CustomerId = order.CustomerId, Reason = "[put the reason in here]" }; try { } catch (Exception ex) { log.LogError(ex.Message, ex); return(new BadRequestObjectResult(new { errorCode = "ORDER_DECLINED_BUT_SERVER_ERROR", message = $"Order declined because of [put the reason in here]" + $"(Internal Server Error: {ex.Message}" })); } return(new BadRequestObjectResult(new { errorCode = "ORDER_DECLINED", message = "Order declined because of [put the reason in here]" })); } }