public async Task <AOrder_Order> GetOrderAsync(long orderId) { using var log = BeginFunction(nameof(OrderAdminService), nameof(GetOrderAsync), orderId); try { await Assert(SecurityPolicy.IsPrivileged).ConfigureAwait(false); var mOrder = await OrderMicroService.GetOrderAsync(orderId).ConfigureAwait(false); var mTransactions = await OrderMicroService.GetOrderTransactionSummariesAsync(orderId, null, null); var mEvents = await OrderMicroService.GetOrderEventLogSummariesAsync(orderId, null, null); var fulfillableReference = CreateFulfillableReference.FromOrderId(orderId); var fulfillableId = await FulfillmentMicroService.LookupFulfillableAsync(fulfillableReference); var mFulfillable = fulfillableId != null ? await FulfillmentMicroService.GetFulfillableAsync(fulfillableId.Value).ConfigureAwait(false) : null; var fundableReference = CreateFundableReference.FromOrderId(orderId); var fundableId = await FundingMicroService.LookupFundableAsync(fundableReference); var mFundable = fundableId != null ? await FundingMicroService.GetFundableAsync(fundableId.Value).ConfigureAwait(false) : null; var mUser = TryParseUserId.FromOrdererReference(mOrder.OrdererReference, out string userId) ? await UserMicroService.GetUserAsync(userId) : null; var result = Create.AOrder_Order(mOrder, mTransactions, mEvents, mFulfillable, mFundable, mUser); log.Result(result); return(result); } catch (Exception ex) { log.Exception(ex); throw; } }