diff --git a/src/Controllers/AssetsController.cs b/src/Controllers/AssetsController.cs index b5072a1..c988dbb 100644 --- a/src/Controllers/AssetsController.cs +++ b/src/Controllers/AssetsController.cs @@ -148,61 +148,75 @@ public class AssetsController : Controller }); } - [HttpPost("Update")] - public async Task Update(AssetsModifyRequestModel requestModel) + [HttpPatch("Update")] + public async Task Update(AssetsModifyRequestModel requestModel) { + AssetsResponseModel result; if (requestModel is null) { - _logger.LogError("Unable to update an asset because the AssetsModifyRequestModel is null"); - return false; - } - string cn = requestModel.Cn; + result = new AssetsResponseModel( + successful: false, + exception: "Unable to update an asset because the AssetsModifyRequestModel is null"); - if (requestModel.NewCn is not null) - { - await _ldap.UpdateAsset(cn, "cn", requestModel.NewCn); - cn = requestModel.NewCn; + return result; } - if (requestModel.Location is not null) + + try { - await _ldap.UpdateAsset(cn, "l", requestModel.Location); - } - if (requestModel.Name is not null) - { - await _ldap.UpdateAsset(cn, "name", requestModel.Name); - } - if (requestModel.Owner is not null) - { - await _ldap.UpdateAsset(cn, "owner", requestModel.Owner); - } - if (requestModel.SerialNumber is not null) - { - await _ldap.UpdateAsset(cn, "serialNumber", requestModel.SerialNumber); - } - if (requestModel.Description is not null) - { - AssetModel? asset = null; - if (requestModel.Description.Type is null) + var cn = requestModel.Cn; + if (requestModel.NewCn is not null) { - asset ??= await _ldap.GetAssetByCnAsync(cn); - requestModel.Description.Type = asset.Description?.Type; + await _ldap.UpdateAsset(cn, "cn", requestModel.NewCn); + cn = requestModel.NewCn; } - if (requestModel.Description.Purchase is not null) + if (requestModel.Location is not null) { - asset ??= await _ldap.GetAssetByCnAsync(cn); - requestModel.Description.Purchase.PurchasedAt ??= asset.Description?.Purchase?.PurchasedAt; - requestModel.Description.Purchase.PurchaseDate ??= asset.Description?.Purchase?.PurchaseDate; - requestModel.Description.Purchase.PurchasedBy ??= asset.Description?.Purchase?.PurchasedBy; - requestModel.Description.Purchase.PurchaseValue ??= asset.Description?.Purchase?.PurchaseValue; + await _ldap.UpdateAsset(cn, "l", requestModel.Location); + } + if (requestModel.Name is not null) + { + await _ldap.UpdateAsset(cn, "name", requestModel.Name); + } + if (requestModel.Owner is not null) + { + await _ldap.UpdateAsset(cn, "owner", requestModel.Owner); + } + if (requestModel.SerialNumber is not null) + { + await _ldap.UpdateAsset(cn, "serialNumber", requestModel.SerialNumber); + } + if (requestModel.Description is not null) + { + AssetModel? asset = null; + if (requestModel.Description.Type is null) + { + asset ??= await _ldap.GetAssetByCnAsync(cn); + requestModel.Description.Type = asset.Description?.Type; + } + if (requestModel.Description.Purchase is not null) + { + asset ??= await _ldap.GetAssetByCnAsync(cn); + requestModel.Description.Purchase.PurchasedAt ??= asset.Description?.Purchase?.PurchasedAt; + requestModel.Description.Purchase.PurchaseDate ??= asset.Description?.Purchase?.PurchaseDate; + requestModel.Description.Purchase.PurchasedBy ??= asset.Description?.Purchase?.PurchasedBy; + requestModel.Description.Purchase.PurchaseValue ??= asset.Description?.Purchase?.PurchaseValue; + } + + if (requestModel.Description.Purchase is null) + { + asset ??= await _ldap.GetAssetByCnAsync(cn); + requestModel.Description.Purchase = asset.Description?.Purchase; + } + await _ldap.UpdateAsset(cn, "description", JsonSerializer.Serialize(requestModel.Description)); } - if (requestModel.Description.Purchase is null) - { - asset ??= await _ldap.GetAssetByCnAsync(cn); - requestModel.Description.Purchase = asset.Description?.Purchase; - } - await _ldap.UpdateAsset(cn, "description", JsonSerializer.Serialize(requestModel.Description)); + result = new AssetsResponseModel(successful: true); } - return true; + catch (Exception e) + { + result = new AssetsResponseModel(successful: false, exception: e.Message); + } + + return result; } } \ No newline at end of file