mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51:55 +00:00
Merge pull request #94 from LD-Reborn/88-feature-add-missing-attributes-to-the-asset-model
88 feature add missing attributes to the asset model
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
| **Version:** | 3.0 |
|
||||
| **Projektlaufzeit:** | 09.10.2025 - 01.12.2025 |
|
||||
| **Budget:** | 40.000 € |
|
||||
|
||||
**Kontaktperson Kunde:**
|
||||
- Name: Jochen Walhöfer
|
||||
- Abteilung: IT-Abteilung
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Berufsschule_HAM.Models;
|
||||
using Berufsschule_HAM.Services;
|
||||
using Berufsschule_HAM.Helpers;
|
||||
using System.Text.Json;
|
||||
using Novell.Directory.Ldap;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
@@ -79,36 +80,7 @@ public class AssetsController : Controller
|
||||
}
|
||||
if (assetModel.Description != null)
|
||||
{
|
||||
var assetDescription = new AssetDescription();
|
||||
|
||||
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)));
|
||||
attributeSet.Add(new LdapAttribute("description", JsonSerializer.Serialize(assetModel.Description)));
|
||||
}
|
||||
|
||||
await _ldap.CreateAsset(attributeSet);
|
||||
@@ -188,25 +160,8 @@ public class AssetsController : Controller
|
||||
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;
|
||||
}
|
||||
asset = await _ldap.GetAssetByCnAsync(cn);
|
||||
AttributesHelper.UpdateNonNullProperties(requestModel.Description, asset.Description);
|
||||
await _ldap.UpdateAsset(cn, "description", JsonSerializer.Serialize(requestModel.Description));
|
||||
}
|
||||
|
||||
|
||||
32
src/Helpers/AttributesHelper.cs
Normal file
32
src/Helpers/AttributesHelper.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,9 @@ public class AssetModel
|
||||
public class AssetDescription
|
||||
{
|
||||
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; }
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Berufsschule_HAM.Models;
|
||||
|
||||
public class AssetsModifyRequestModel
|
||||
{
|
||||
public required string Cn { get; set; }
|
||||
public string? NewCn { get; set; } = null;
|
||||
[FromBody]
|
||||
public AssetDescription? Description { get; set; } = null;
|
||||
public string? Location { get; set; } = null;
|
||||
public string? Name { get; set; } = null;
|
||||
|
||||
Reference in New Issue
Block a user