Esempio n. 1
0
        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;
            }
        }