Пример #1
0
        public static async Task <IActionResult> RunAsync(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "order/{orderId}")]
            Amount amount,
            string orderId,
            [DomainEventStream("Sales", "Order", "{orderId}")]
            DomainEventStream eventStream,
            ILogger log)
        {
            var events = await eventStream.Events();

            var orderAccepted = events.GetFirst <OrderAccepted>().Where(order => order.OrderId == orderId);

            if (orderAccepted == null)
            {
                return(new NotFoundResult());
            }

            var amountOfOrderChanged = new AmountOfOrderChanged(Guid.Empty.ToString())
            {
                OrderId        = orderId,
                PreviousAmount = orderAccepted.Amount,
                NewAmount      = amount.Value
            };

            await eventStream.Append(amountOfOrderChanged, orderId);

            return(new OkObjectResult(new
            {
                prevoiusAmount = amountOfOrderChanged.PreviousAmount,
                newAmount = amountOfOrderChanged.NewAmount,
                message = "Amount changed"
            }));
        }