Merge pull request #11 from StewKI/feature-user-model-expansion

Expanded on user domain model
This commit is contained in:
Veljko
2026-02-10 13:00:48 +01:00
committed by GitHub
7 changed files with 87 additions and 10 deletions

View File

@@ -8,26 +8,36 @@ public class User
public UserId Id { get; private set; }
public Email Email { get; private set; }
public Username Username { get; private set; }
public UserCreatedAt CreatedAt { get; private set; }
public UserDeletedAt DeletedAt { get; private set; }
public User(UserId id, Email email, Username username)
public User(UserId id, Email email, Username username, UserCreatedAt createdAt, UserDeletedAt deletedAt)
{
Id = id;
Email = email;
Username = username;
CreatedAt = createdAt;
DeletedAt = deletedAt;
}
public static User Create(string id, string email, string username)
public static User Create(string id, string email, string username, DateTime createdAt, DateTime? deletedAt)
{
var userIdVo = new UserId(id);
var usernameVo = new Username(username);
var emailVo = new Email(email);
return new User( userIdVo, emailVo, usernameVo);
var createdAtVo = new UserCreatedAt(createdAt);
var deletedAtVo = new UserDeletedAt(deletedAt);
return new User(userIdVo, emailVo, usernameVo, createdAtVo, deletedAtVo);
}
public static User Create(string email, string username)
public static User Create(string email, string username, DateTime createdAt, DateTime? deletedAt)
{
var usernameVo = new Username(username);
var emailVo = new Email(email);
return new User( UserId.Any(), emailVo, usernameVo);
var createdAtVo = new UserCreatedAt(createdAt);
var deletedAtVo = new UserDeletedAt(deletedAt);
return new User(UserId.Any(), emailVo, usernameVo, createdAtVo, deletedAtVo);
}
}

View File

@@ -0,0 +1,23 @@
using AipsCore.Domain.Abstract.Rule;
using AipsCore.Domain.Abstract.ValueObject;
using AipsCore.Domain.Common.Validation.Rules;
namespace AipsCore.Domain.Models.User.ValueObjects;
public record UserCreatedAt : AbstractValueObject
{
public DateTime CreatedAtValue { get; private set; }
public UserCreatedAt(DateTime CreatedAtValue)
{
this.CreatedAtValue = CreatedAtValue;
Validate();
}
protected override ICollection<IRule> GetValidationRules()
{
return [
new DateInPastRule(CreatedAtValue)
];
}
}

View File

@@ -0,0 +1,23 @@
using AipsCore.Domain.Abstract.Rule;
using AipsCore.Domain.Abstract.ValueObject;
using AipsCore.Domain.Common.Validation.Rules;
namespace AipsCore.Domain.Models.User.ValueObjects;
public record UserDeletedAt : AbstractValueObject
{
public DateTime? DeletedAtValue { get; private set; }
public UserDeletedAt(DateTime? DeletedAtValue)
{
this.DeletedAtValue = DeletedAtValue;
Validate();
}
protected override ICollection<IRule> GetValidationRules()
{
return [
new DateInPastRule(DeletedAtValue)
];
}
}