コード例 #1
0
        public void when_complete_order_successfully()
        {
            var completeOrder = new ChangeOrderStatus
            {
                Status = new OrderStatusDetail {
                    OrderId = _orderId, Status = OrderStatus.Completed
                },
                Fare      = 23,
                Toll      = 2,
                Tip       = 5,
                Tax       = 3,
                Surcharge = 1
            };

            _sut.When(completeOrder);

            var @event = _sut.ThenHasOne <OrderStatusChanged>();

            Assert.AreEqual(_orderId, @event.SourceId);
            Assert.AreEqual(completeOrder.Fare, @event.Fare);
            Assert.AreEqual(completeOrder.Toll, @event.Toll);
            Assert.AreEqual(completeOrder.Tip, @event.Tip);
            Assert.AreEqual(completeOrder.Tax, @event.Tax);
            Assert.AreEqual(completeOrder.Surcharge, @event.Surcharge);
            Assert.AreEqual(true, @event.IsCompleted);
        }
コード例 #2
0
        public void Handle(ChangeOrderStatus command)
        {
            var order = _repository.Find(command.Status.OrderId);

            order.ChangeStatus(command.Status, command.Fare, command.Tip, command.Toll, command.Tax, command.Surcharge);

            _repository.Save(order, command.Id.ToString());
        }
コード例 #3
0
        public async Task <ActionResult> ChangeOrderStatus(string orderNumber, [FromBody] ChangeOrderStatus changeOrderStatus)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            using (await AsyncLock.GetLockByKey(GetAsyncLockKey(orderNumber, WorkContext)).LockAsync())
            {
                var order = await _orderApi.GetByNumberAsync(orderNumber, string.Empty);

                var authorizationResult = await _authorizationService.AuthorizeAsync(User, order, CanAccessOrderAuthorizationRequirement.PolicyName);

                if (!authorizationResult.Succeeded)
                {
                    return(Unauthorized());
                }
                order.Status = changeOrderStatus.NewStatus;
                await _orderApi.UpdateOrderAsync(order);
            }

            return(Ok());
        }