diff --git a/Hackney.Shared.Asset/Domain/Asset.cs b/Hackney.Shared.Asset/Domain/Asset.cs index 8055328..2d6321a 100644 --- a/Hackney.Shared.Asset/Domain/Asset.cs +++ b/Hackney.Shared.Asset/Domain/Asset.cs @@ -21,6 +21,7 @@ public class Asset public int? VersionNumber { get; set; } public List Patches { get; set; } + public AssetContract AssetContract { get; set; } public static Asset Create(string id, string assetId, string assetType, diff --git a/Hackney.Shared.Asset/Domain/AssetContract.cs b/Hackney.Shared.Asset/Domain/AssetContract.cs new file mode 100644 index 0000000..b2d8de9 --- /dev/null +++ b/Hackney.Shared.Asset/Domain/AssetContract.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Hackney.Shared.Asset.Domain +{ + public class AssetContract + { + public string Id { get; set; } + public string TargetId { get; set; } + public string TargetType { get; set; } + public IEnumerable Charges { get; set; } + } +} diff --git a/Hackney.Shared.Asset/Domain/Charges.cs b/Hackney.Shared.Asset/Domain/Charges.cs new file mode 100644 index 0000000..ccc2dc9 --- /dev/null +++ b/Hackney.Shared.Asset/Domain/Charges.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Hackney.Shared.Asset.Domain +{ + public class Charges + { + public string Id { get; set; } + public string Type { get; set; } + public string SubType { get; set; } + public Frequency Frequency { get; set; } + public decimal? Amount { get; set; } + } +} diff --git a/Hackney.Shared.Asset/Domain/Enums.cs b/Hackney.Shared.Asset/Domain/Enums.cs index 1d34a3e..5b2da45 100644 --- a/Hackney.Shared.Asset/Domain/Enums.cs +++ b/Hackney.Shared.Asset/Domain/Enums.cs @@ -35,5 +35,14 @@ public enum AssetType Maisonette, [EnumMember(Value = "New Build")] NewBuild + } + + [JsonConverter(typeof(JsonStringEnumConverter))] + public enum Frequency + { + Daily, + Weekly, + Monthly, + Yearly } } diff --git a/Hackney.Shared.Asset/Factories/EntityFactory.cs b/Hackney.Shared.Asset/Factories/EntityFactory.cs index b51c631..5cf7d99 100644 --- a/Hackney.Shared.Asset/Factories/EntityFactory.cs +++ b/Hackney.Shared.Asset/Factories/EntityFactory.cs @@ -28,6 +28,7 @@ public static AssetDomain ToDomain(this AssetDb databaseEntity) AssetAddress = databaseEntity.AssetAddress, AssetManagement = databaseEntity.AssetManagement, AssetCharacteristics = databaseEntity.AssetCharacteristics, + AssetContract = databaseEntity.AssetContract, Tenure = databaseEntity.Tenure.ToDomain(), VersionNumber = databaseEntity.VersionNumber, Patches = databaseEntity.Patches?.ToDomain() @@ -69,6 +70,7 @@ public static AssetDb ToDatabase(this AssetDomain domain) AssetAddress = domain.AssetAddress, AssetManagement = domain.AssetManagement, AssetCharacteristics = domain.AssetCharacteristics, + AssetContract = domain.AssetContract, Tenure = domain.Tenure.ToDatabase(), VersionNumber = domain.VersionNumber, Patches = domain.Patches?.ToDatabase() diff --git a/Hackney.Shared.Asset/Infrastructure/AssetDb.cs b/Hackney.Shared.Asset/Infrastructure/AssetDb.cs index 2075f5b..62016d4 100644 --- a/Hackney.Shared.Asset/Infrastructure/AssetDb.cs +++ b/Hackney.Shared.Asset/Infrastructure/AssetDb.cs @@ -47,6 +47,9 @@ public class AssetDb [DynamoDBProperty(Converter = typeof(DynamoDbObjectListConverter))] public List Patches { get; set; } + [DynamoDBProperty(Converter = typeof(DynamoDbObjectConverter))] + public AssetContract AssetContract { get; set; } + [DynamoDBVersion] public int? VersionNumber { get; set; } }