示例#1
0
        public async Task <AShipment_Shipment> GetShipmentAsync(long shipmentId)
        {
            using var log = BeginFunction(nameof(ShipmentAdminService), nameof(GetShipmentAsync), shipmentId);
            try
            {
                await Assert(SecurityPolicy.AllowViewFulfillment).ConfigureAwait(false);

                var mShipment = await FulfillmentMicroService.GetShipmentAsync(shipmentId);

                var mTransactions = await FulfillmentMicroService.GetShipmentTransactionSummariesAsync(shipmentId, null, null);

                var mEvents = await FulfillmentMicroService.GetShipmentEventLogSummariesAsync(shipmentId, null, null);

                var mFulfillables = new List <MFulfillment_Fulfillable>();
                foreach (var mShipmentItem in mShipment.ShipmentItems)
                {
                    // Retrieve the associated fulfillable if we haven't already.
                    //
                    var fulfillableId = mShipmentItem.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 result = Create.AShipment_Shipment(mShipment, mTransactions, mEvents, mFulfillables, allowEdit);

                log.Result(result);

                return(result);
            }
            catch (Exception ex)
            {
                log.Exception(ex);
                throw;
            }
        }