diff --git a/src/Controllers/AssetsController.cs b/src/Controllers/AssetsController.cs index 1d040a4..c6ad432 100644 --- a/src/Controllers/AssetsController.cs +++ b/src/Controllers/AssetsController.cs @@ -34,38 +34,73 @@ public class AssetsController : Controller try { - var ownerDn = $"uid={assetModel.Owner},ou=people,dc=example,dc=com"; - LdapAttributeSet attributeSet = [ new LdapAttribute("objectClass", new[] {"top", "device", "extensibleObject"}), - new LdapAttribute("cn", assetModel.Cn), - new LdapAttribute("serialNumber", assetModel.SerialNumber), - new LdapAttribute("l", assetModel.Location), - new LdapAttribute("owner", ownerDn), - new LdapAttribute("name", assetModel.Name), - 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 - } - }) - ) ]; + if (assetModel.Cn != null) + { + attributeSet.Add(new LdapAttribute("cn", assetModel.Cn)); + } + if (assetModel.SerialNumber != null) + { + attributeSet.Add(new LdapAttribute("serialNumber", assetModel.SerialNumber)); + } + if (assetModel.Location != null) + { + attributeSet.Add(new LdapAttribute("l", assetModel.Location)); + } + if (assetModel.Owner != null) + { + var ownerDn = $"uid={assetModel.Owner},ou=people,dc=example,dc=com"; + attributeSet.Add(new LdapAttribute("owner", ownerDn)); + } + if (assetModel.Name != null) + { + attributeSet.Add(new LdapAttribute("name", assetModel.Name)); + } + 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))); + } + await _ldap.CreateAsset(attributeSet); return true; } catch (Exception e) { - _logger.LogError("Unable to create an asset because the Exception: " + e.Message); + _logger.LogError($"Unable to create an asset because of the exception: {e.Message}", e); return false; } }