Ejemplo n.º 1
0
 /// <summary>
 /// Check out an asset.
 /// </summary>
 /// <param name="request">An asset check-out request.</param>
 /// <returns></returns>
 public RequestResponse <ApiObject> CheckOut(AssetCheckOutRequest request)
 => Api.RequestManager.Post <AssetCheckOutRequest, ApiObject>($"{EndPointInfo.BaseUri}/{request.Asset.Id}/checkout", request).RethrowExceptionIfAny().Value;
Ejemplo n.º 2
0
        /// <inheritdoc />
        protected override void ProcessRecord()
        {
            if (!this.GetSingleValue(Asset, out var asset, queryType: "Identity"))
            {
                return;
            }
            if (asset.IsDeleted)
            {
                throw new InvalidOperationException($"Cannot checkout asset {asset.Name} because it has been deleted.");
            }
            AssetCheckOutRequest request;

            if (null != AssignedUser)
            {
                // ToUser ParameterSet
                if (!this.GetSingleValue(AssignedUser, out var user, queryType: "Identity"))
                {
                    return;
                }
                request = new AssetCheckOutRequest(asset, user);
            }
            else if (null != AssignedLocation)
            {
                if (!this.GetSingleValue(AssignedLocation, out var location, queryType: "Identity"))
                {
                    return;
                }
                request = new AssetCheckOutRequest(asset, location);
            }
            else
            {
                if (!this.GetSingleValue(AssignedAsset, out var assignedAsset, queryType: "Identity"))
                {
                    return;
                }
                if (assignedAsset.IsDeleted)
                {
                    // InvalidOperation here masks ArgumentException in the constructor for AssetCheckOutRequest(Asset,Asset)
                    throw new InvalidOperationException($"Cannot checkout to asset {assignedAsset.Name} because it has been deleted.");
                }
                request = new AssetCheckOutRequest(asset, assignedAsset);
            }
            if (null != CheckOutAt)
            {
                request.CheckOutAt = CheckOutAt;
            }
            if (null != ExpectedCheckIn)
            {
                request.ExpectedCheckIn = ExpectedCheckIn;
            }
            if (!string.IsNullOrEmpty(Note))
            {
                request.Note = Note;
            }
            if (!string.IsNullOrEmpty(AssetName))
            {
                request.AssetName = AssetName;
            }
            else
            {
                request.AssetName = request.Asset.Name;
            }
            WriteObject(ApiHelper.Instance.Assets.CheckOut(request));
        }