mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51:55 +00:00
CRUD - Assets create
This commit is contained in:
@@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc;
|
||||
using Berufsschule_HAM.Models;
|
||||
using Berufsschule_HAM.Services;
|
||||
using System.Text.Json;
|
||||
using Novell.Directory.Ldap;
|
||||
|
||||
[Route("[controller]")]
|
||||
public class AssetsController : Controller
|
||||
@@ -22,6 +23,55 @@ public class AssetsController : Controller
|
||||
return list;
|
||||
}
|
||||
|
||||
[HttpPost("Create")]
|
||||
public async Task<bool> Create(AssetsCreateRequestModel assetModel)
|
||||
{
|
||||
if (assetModel is null)
|
||||
{
|
||||
_logger.LogError("Unable to create an asset because the AssetModel is null.");
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var ownerDn = $"uid={assetModel.Owner},ou=people,dc=example,dc=com";
|
||||
|
||||
var attributeSet = new LdapAttributeSet();
|
||||
attributeSet.Add(new LdapAttribute("objectClass", new[] {
|
||||
"top",
|
||||
"device",
|
||||
"extensibleObject"
|
||||
}));
|
||||
attributeSet.Add(new LdapAttribute("cn", assetModel.Cn));
|
||||
attributeSet.Add(new LdapAttribute("serialNumber", assetModel.SerialNumber));
|
||||
attributeSet.Add(new LdapAttribute("l", assetModel.Location));
|
||||
attributeSet.Add(new LdapAttribute("owner", ownerDn));
|
||||
attributeSet.Add(new LdapAttribute("name", assetModel.Name));
|
||||
attributeSet.Add(new LdapAttribute(
|
||||
"description",
|
||||
JsonSerializer.Serialize(new AssetDescription()
|
||||
{
|
||||
Type = assetModel.Description.Type,
|
||||
Purchase = new AssetPurchase
|
||||
{
|
||||
PurchasedAt = assetModel.Description.Purchase.PurchasedAt,
|
||||
PurchaseDate = assetModel.Description.Purchase.PurchaseDate,
|
||||
PurchaseValue = assetModel.Description.Purchase.PurchaseValue
|
||||
}
|
||||
})
|
||||
));
|
||||
|
||||
await _ldap.CreateAsset(attributeSet);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError("Unable to create an asset because the Exception: " + e.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
[HttpGet("Delete")]
|
||||
public async Task<bool> Delete(string cn)
|
||||
{
|
||||
|
||||
11
src/Models/AssetsCreateRequestModel.cs
Normal file
11
src/Models/AssetsCreateRequestModel.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace Berufsschule_HAM.Models;
|
||||
|
||||
public class AssetsCreateRequestModel
|
||||
{
|
||||
public required string Cn { get; set; }
|
||||
public AssetDescription? Description { get; set; } = null;
|
||||
public string? Location { get; set; } = null;
|
||||
public string? Name { get; set; } = null;
|
||||
public string? Owner { get; set; } = null;
|
||||
public string? SerialNumber { get; set; } = null;
|
||||
}
|
||||
@@ -175,10 +175,16 @@ public partial class LdapService : IDisposable
|
||||
await CreateObject(dn, attributeSet);
|
||||
}
|
||||
|
||||
public async Task CreateAsset(LdapAttributeSet attributeSet)
|
||||
{
|
||||
await CreateObject(AssetsBaseDn, attributeSet);
|
||||
}
|
||||
public async Task CreateAsset(LdapAttributeSet attributeSet)
|
||||
{
|
||||
string? cn = attributeSet.GetAttribute("cn")?.StringValue;
|
||||
|
||||
if (string.IsNullOrEmpty(cn))
|
||||
throw new ArgumentException("AttributeSet must contain a cn attribute.");
|
||||
|
||||
string dn = PrependRDN($"cn={cn}", AssetsBaseDn);
|
||||
await CreateObject(dn, attributeSet);
|
||||
}
|
||||
|
||||
public async Task CreateLocation(LdapAttributeSet attributeSet)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user