Added Assets update CRUD element

This commit is contained in:
2025-10-03 23:07:55 +02:00
parent a803218982
commit b262a73d9d
6 changed files with 139 additions and 16 deletions

View File

@@ -1,18 +1,18 @@
using Microsoft.AspNetCore.Mvc;
using System;
using System.Threading.Tasks;
using Berufsschule_HAM.Models;
using Novell.Directory.Ldap;
using Berufsschule_HAM.Services;
using System.Text.Json;
[Route("[controller]")]
public class AssetsController : Controller
{
private readonly LdapService _ldap;
private readonly ILogger<AssetsController> _logger;
public AssetsController(LdapService ldap)
public AssetsController(LdapService ldap, ILogger<AssetsController> logger)
{
_ldap = ldap ?? throw new ArgumentNullException(nameof(ldap));
_logger = logger;
}
[HttpGet("Index")]
@@ -39,4 +39,62 @@ public class AssetsController : Controller
}
});
}
[HttpPost("Update")]
public async Task<bool> Update(AssetsModifyRequestModel requestModel)
{
if (requestModel is null)
{
_logger.LogError("Unable to update an asset because the AssetsModifyRequestModel is null");
return false;
}
string cn = requestModel.Cn;
if (requestModel.NewCn is not null)
{
await _ldap.UpdateAsset(cn, "cn", requestModel.NewCn);
cn = requestModel.NewCn;
}
if (requestModel.Location is not null)
{
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));
}
return true;
}
}