From 23823a4c2390a8581dd7e455bf6bd66be64e0021 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Fri, 13 Feb 2026 11:04:50 -0600 Subject: [PATCH] feat(core): add models for account --- src/FiscalOS.Core/Accounts/Account.cs | 20 +++++++++++++++++++ src/FiscalOS.Core/Accounts/AccountMetadata.cs | 15 ++++++++++++++ src/FiscalOS.Core/Identity/User.cs | 10 ++++++++++ 3 files changed, 45 insertions(+) create mode 100644 src/FiscalOS.Core/Accounts/Account.cs create mode 100644 src/FiscalOS.Core/Accounts/AccountMetadata.cs diff --git a/src/FiscalOS.Core/Accounts/Account.cs b/src/FiscalOS.Core/Accounts/Account.cs new file mode 100644 index 0000000..8175235 --- /dev/null +++ b/src/FiscalOS.Core/Accounts/Account.cs @@ -0,0 +1,20 @@ +namespace FiscalOS.Core.Accounts; + +public sealed class Account : Entity +{ + public Guid UserId { get; init; } + public Guid InstituionId { get; init; } + public Institution Institution { get; init; } = null!; + public string Name { get; init; } = string.Empty; + public AccountMetadata Metadata { get; init; } = null!; + + public static Account From(Guid institutionId, string name, AccountMetadata accountMetadata) + { + return new() + { + InstituionId = institutionId, + Name = name, + Metadata = accountMetadata, + }; + } +} \ No newline at end of file diff --git a/src/FiscalOS.Core/Accounts/AccountMetadata.cs b/src/FiscalOS.Core/Accounts/AccountMetadata.cs new file mode 100644 index 0000000..aa6191b --- /dev/null +++ b/src/FiscalOS.Core/Accounts/AccountMetadata.cs @@ -0,0 +1,15 @@ +namespace FiscalOS.Core.Accounts; + +public abstract class AccountMetadata : Entity +{ + private readonly string _type; + + public string Type => _type; + + public Guid AccountId { get; init; } + + protected AccountMetadata(string type) + { + _type = type; + } +} \ No newline at end of file diff --git a/src/FiscalOS.Core/Identity/User.cs b/src/FiscalOS.Core/Identity/User.cs index 3c992cb..bd3ff2d 100644 --- a/src/FiscalOS.Core/Identity/User.cs +++ b/src/FiscalOS.Core/Identity/User.cs @@ -13,6 +13,9 @@ public sealed class User : Entity private readonly List _institutions = []; public IEnumerable Institutions => _institutions; + private readonly List _accounts = []; + public IEnumerable Accounts => _accounts; + private User() { } @@ -50,4 +53,11 @@ public sealed class User : Entity _institutions.Add(institution); } + + public void AddAccount(Account account) + { + ArgumentNullException.ThrowIfNull(account, nameof(account)); + + _accounts.Add(account); + } } \ No newline at end of file