Контракты

This commit is contained in:
Халимов Рустам
2026-03-29 23:39:17 +03:00
parent 22bc964f27
commit 0209802e9e
141 changed files with 1292 additions and 725 deletions
+42 -10
View File
@@ -1,30 +1,32 @@
using Knot.Shared.Kernel;
using Knot.Shared.Kernel;
using Knot.Shared.Kernel.Events;
using Knot.Modules.Auth.Contracts.Domain;
namespace Knot.Modules.Auth.Domain;
public sealed record UserStatusChangedDomainEvent(Guid UserId, bool IsOnline, DateTime LastSeen) : IDomainEvent;
/// <summary>
/// Сущность пользователя в контексте идентификации (Identity).
/// </summary>
public sealed class User : AggregateRoot<Guid>
{
public string Username { get; private set; }
public string Username { get; set; }
public string PasswordHash { get; private set; }
public string DisplayName { get; private set; }
public string DisplayName { get; set; }
public string? Email { get; private set; }
public string? Bio { get; private set; }
public string? Avatar { get; private set; }
public string? Avatar { get; set; }
public DateTime? Birthday { get; private set; }
public DateTime CreatedAt { get; private set; }
public bool HideStoryViews { get; private set; }
public bool IsExternal { get; private set; }
public string? Domain { get; private set; }
public bool IsOnline { get; private set; }
public bool IsOnline { get; set; }
public DateTime? LastSeen { get; private set; }
public bool HideStatus { get; private set; }
public bool IsBanned { get; private set; }
public bool IsBanned { get; set; }
public string? PhoneNumber { get; set; }
public string? RefreshToken { get; set; }
public DateTime? BannedUntil { get; set; }
public void Ban() => IsBanned = true;
public void Unban() => IsBanned = false;
@@ -58,11 +60,18 @@ public sealed class User : AggregateRoot<Guid>
{
var user = new User(id, username, "EXTERNAL_USER", displayName, null, null);
user.IsExternal = true;
user.Domain = domain;
user._domain = domain;
user.Avatar = avatar;
return user;
}
private string? _domain;
public string? UserDomain
{
get => _domain;
set => _domain = value;
}
public void UpdateProfile(string displayName, string? bio, DateTime? birthday)
{
DisplayName = displayName;
@@ -100,5 +109,28 @@ public sealed class User : AggregateRoot<Guid>
{
HideStatus = hide;
}
}
public UserContract ToContract()
{
return new UserContract
{
Id = Id,
Username = Username,
DisplayName = DisplayName,
PasswordHash = PasswordHash,
PhoneNumber = PhoneNumber,
Email = Email,
Bio = Bio,
Avatar = Avatar,
Birthday = Birthday,
IsBot = false,
CreatedAt = CreatedAt,
IsBanned = IsBanned,
BannedUntil = BannedUntil,
IsOnline = IsOnline,
IsExternal = IsExternal,
Domain = _domain,
LastSeen = LastSeen
};
}
}