Added Make and Model and Attributes to AssetDescription

This commit is contained in:
2025-10-09 09:54:40 +02:00
parent 945d848516
commit 97b97f589c
4 changed files with 42 additions and 49 deletions

View File

@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Berufsschule_HAM.Models; using Berufsschule_HAM.Models;
using Berufsschule_HAM.Services; using Berufsschule_HAM.Services;
using Berufsschule_HAM.Helpers;
using System.Text.Json; using System.Text.Json;
using Novell.Directory.Ldap; using Novell.Directory.Ldap;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
@@ -79,36 +80,7 @@ public class AssetsController : Controller
} }
if (assetModel.Description != null) if (assetModel.Description != null)
{ {
var assetDescription = new AssetDescription(); attributeSet.Add(new LdapAttribute("description", JsonSerializer.Serialize(assetModel.Description)));
if (assetModel.Description.Type != null)
{
assetDescription.Type = assetModel.Description.Type;
}
if (assetModel.Description.Purchase != null)
{
var purchase = new AssetPurchase();
if (assetModel.Description.Purchase.PurchasedAt != null)
{
purchase.PurchasedAt = assetModel.Description.Purchase.PurchasedAt;
}
if (assetModel.Description.Purchase.PurchaseDate != null)
{
purchase.PurchaseDate = assetModel.Description.Purchase.PurchaseDate;
}
if (assetModel.Description.Purchase.PurchasedBy != null)
{
purchase.PurchasedBy = assetModel.Description.Purchase.PurchasedBy;
}
if (assetModel.Description.Purchase.PurchaseValue != null)
{
purchase.PurchaseValue = assetModel.Description.Purchase.PurchaseValue;
}
assetDescription.Purchase = purchase;
}
attributeSet.Add(new LdapAttribute("description", JsonSerializer.Serialize(assetDescription)));
} }
await _ldap.CreateAsset(attributeSet); await _ldap.CreateAsset(attributeSet);
@@ -188,25 +160,8 @@ public class AssetsController : Controller
if (requestModel.Description is not null) if (requestModel.Description is not null)
{ {
AssetModel? asset = null; AssetModel? asset = null;
if (requestModel.Description.Type is null) asset = await _ldap.GetAssetByCnAsync(cn);
{ AttributesHelper.UpdateNonNullProperties(requestModel.Description, asset.Description);
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)); await _ldap.UpdateAsset(cn, "description", JsonSerializer.Serialize(requestModel.Description));
} }

View File

@@ -0,0 +1,32 @@
namespace Berufsschule_HAM.Helpers;
public static class AttributesHelper
{
public static void UpdateNonNullProperties(object source, object target)
{
if (source == null || target == null) return;
var sourceProperties = source.GetType().GetProperties();
var targetProperties = target.GetType().GetProperties();
foreach (var sourceProperty in sourceProperties)
{
if (sourceProperty.CanRead)
{
var sourceValue = sourceProperty.GetValue(source);
if (sourceValue == null) continue;
var targetProperty = targetProperties.FirstOrDefault(p =>
p.Name == sourceProperty.Name &&
p.CanWrite &&
p.PropertyType == sourceProperty.PropertyType);
if (targetProperty != null)
{
targetProperty.SetValue(target, sourceValue);
}
}
}
}
}

View File

@@ -34,6 +34,9 @@ public class AssetModel
public class AssetDescription public class AssetDescription
{ {
public string? Type { get; set; } public string? Type { get; set; }
public string? Make { get; set; }
public string? Model { get; set; }
public Dictionary<string, string>? Attributes { get; set; }
public AssetPurchase? Purchase { get; set; } public AssetPurchase? Purchase { get; set; }
} }

View File

@@ -1,9 +1,12 @@
using Microsoft.AspNetCore.Mvc;
namespace Berufsschule_HAM.Models; namespace Berufsschule_HAM.Models;
public class AssetsModifyRequestModel public class AssetsModifyRequestModel
{ {
public required string Cn { get; set; } public required string Cn { get; set; }
public string? NewCn { get; set; } = null; public string? NewCn { get; set; } = null;
[FromBody]
public AssetDescription? Description { get; set; } = null; public AssetDescription? Description { get; set; } = null;
public string? Location { get; set; } = null; public string? Location { get; set; } = null;
public string? Name { get; set; } = null; public string? Name { get; set; } = null;