public async Task <AShipment_ShipmentRequest> GetShipmentRequestAsync(long shipmentRequestId) { using var log = BeginFunction(nameof(ShipmentAdminService), nameof(GetShipmentRequestAsync), shipmentRequestId); try { await Assert(SecurityPolicy.AllowViewFulfillment); var mShipmentRequest = await FulfillmentMicroService.GetShipmentRequestAsync(shipmentRequestId); var mTransactions = await FulfillmentMicroService.GetShipmentRequestTransactionSummariesAsync(shipmentRequestId, null, null); var mEvents = await FulfillmentMicroService.GetShipmentRequestEventLogSummariesAsync(shipmentRequestId, null, null); var mFulfillables = new List <MFulfillment_Fulfillable>(); foreach (var mShipmentRequestItem in mShipmentRequest.ShipmentRequestItems) { // Retrieve the associated fulfillable if we haven't already. // var fulfillableId = mShipmentRequestItem.FulfillableId; if (!mFulfillables.Any(r => r.FulfillableId == fulfillableId)) { var mFulfillable = await FulfillmentMicroService.GetFulfillableAsync(fulfillableId).ConfigureAwait(false); mFulfillables.Add(mFulfillable); } } var allowEdit = await SecurityPolicy.AllowEditFulfillment(); var shipmentRequest = Create.AShipment_ShipmentRequest(mShipmentRequest, mTransactions, mEvents, mFulfillables, allowEdit); var result = shipmentRequest; log.Result(result); return(result); } catch (Exception ex) { log.Exception(ex); throw; } }