Ejemplo n.º 1
0
        public override async Task <CommandExecutionResult> Execute(PostProcessOrderCommand command)
        {
            if (command.OrderId <= 0)
            {
                return(CommandExecutionResult.ValidationFailure($"Invalid order ID: {command.OrderId}"));
            }

            var orderId = command.OrderId;

            Console.WriteLine($"Post-process order id = {orderId}");

            Console.WriteLine("Getting order details...");
            var orderDetailsResult = await _web1.GetOrderDetails(orderId);

            if (orderDetailsResult.Status != SendStatus.Success || orderDetailsResult.Result == null)
            {
                Console.WriteLine("Getting order details failed.");
                return(CommandExecutionResult.Failure(orderDetailsResult.ErrorMessage, orderDetailsResult.ErrorReason));
            }

            var orderDetails = orderDetailsResult.Result;

            Console.WriteLine($"Retrieved order details: user is (id {orderDetails.UserId}, name {orderDetails.UserName}), order amount is {orderDetails.Amount}, created on {orderDetails.DateCreated}");

            Console.WriteLine($"Pass order details to Azure Functions HTTP microservice...");

            var captureResult = await _azureFunctionsHttpServiceClient.CaptureOrder(orderDetails.OrderId, orderDetails.UserName);

            if (captureResult.Status != SendStatus.Success)
            {
                Console.WriteLine($"Calling Azure Functions microservice failed: {captureResult.ErrorMessage}");
            }
            else
            {
                Console.WriteLine($"Azure Functions microservice replied: '{captureResult.Result.Message}'");
            }

            return(CommandExecutionResult.Ok());
        }