Use new assets response model for update call

This commit is contained in:
anomny
2025-10-06 21:16:48 +02:00
parent ba96fe0b22
commit c25e196814

View File

@@ -148,61 +148,75 @@ public class AssetsController : Controller
}); });
} }
[HttpPost("Update")] [HttpPatch("Update")]
public async Task<bool> Update(AssetsModifyRequestModel requestModel) public async Task<AssetsResponseModel> Update(AssetsModifyRequestModel requestModel)
{ {
AssetsResponseModel result;
if (requestModel is null) if (requestModel is null)
{ {
_logger.LogError("Unable to update an asset because the AssetsModifyRequestModel is null"); result = new AssetsResponseModel(
return false; successful: false,
} exception: "Unable to update an asset because the AssetsModifyRequestModel is null");
string cn = requestModel.Cn;
if (requestModel.NewCn is not null) return result;
{
await _ldap.UpdateAsset(cn, "cn", requestModel.NewCn);
cn = requestModel.NewCn;
} }
if (requestModel.Location is not null)
try
{ {
await _ldap.UpdateAsset(cn, "l", requestModel.Location); var cn = requestModel.Cn;
} if (requestModel.NewCn is not null)
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); await _ldap.UpdateAsset(cn, "cn", requestModel.NewCn);
requestModel.Description.Type = asset.Description?.Type; cn = requestModel.NewCn;
} }
if (requestModel.Description.Purchase is not null) if (requestModel.Location is not null)
{ {
asset ??= await _ldap.GetAssetByCnAsync(cn); await _ldap.UpdateAsset(cn, "l", requestModel.Location);
requestModel.Description.Purchase.PurchasedAt ??= asset.Description?.Purchase?.PurchasedAt; }
requestModel.Description.Purchase.PurchaseDate ??= asset.Description?.Purchase?.PurchaseDate; if (requestModel.Name is not null)
requestModel.Description.Purchase.PurchasedBy ??= asset.Description?.Purchase?.PurchasedBy; {
requestModel.Description.Purchase.PurchaseValue ??= asset.Description?.Purchase?.PurchaseValue; 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) result = new AssetsResponseModel(successful: true);
{
asset ??= await _ldap.GetAssetByCnAsync(cn);
requestModel.Description.Purchase = asset.Description?.Purchase;
}
await _ldap.UpdateAsset(cn, "description", JsonSerializer.Serialize(requestModel.Description));
} }
return true; catch (Exception e)
{
result = new AssetsResponseModel(successful: false, exception: e.Message);
}
return result;
} }
} }