/// <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;
/// <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)); }