mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51:55 +00:00
Added Make and Model and Attributes to AssetDescription
This commit is contained in:
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
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 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; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user