Files
AIPS/dotnet/AipsCore/Domain/Models/WhiteboardMembership/WhiteboardMembership.cs
2026-02-11 02:21:25 +01:00

105 lines
3.7 KiB
C#

using AipsCore.Domain.Abstract;
using AipsCore.Domain.Models.User.ValueObjects;
using AipsCore.Domain.Models.Whiteboard.ValueObjects;
using AipsCore.Domain.Models.WhiteboardMembership.ValueObjects;
namespace AipsCore.Domain.Models.WhiteboardMembership;
public class WhiteboardMembership : DomainEntity<WhiteboardMembershipId>
{
public WhiteboardId WhiteboardId { get; private set; }
public UserId UserId { get; private set; }
public WhiteboardMembershipIsBanned IsBanned { get; private set; }
public WhiteboardMembershipEditingEnabled EditingEnabled { get; private set; }
public WhiteboardMembershipCanJoin CanJoin { get; private set; }
public WhiteboardMembershipLastInteractedAt LastInteractedAt { get; private set; }
public WhiteboardMembership(
WhiteboardMembershipId id,
Whiteboard.Whiteboard owner,
User.User user,
WhiteboardMembershipIsBanned isBanned,
WhiteboardMembershipEditingEnabled editingEnabled,
WhiteboardMembershipCanJoin canJoin,
WhiteboardMembershipLastInteractedAt lastInteractedAt)
: base(id)
{
WhiteboardId = owner.Id;
UserId = user.Id;
IsBanned = isBanned;
EditingEnabled = editingEnabled;
CanJoin = canJoin;
LastInteractedAt = lastInteractedAt;
}
public WhiteboardMembership(
WhiteboardMembershipId id,
WhiteboardId ownerId,
UserId userId,
WhiteboardMembershipIsBanned isBanned,
WhiteboardMembershipEditingEnabled editingEnabled,
WhiteboardMembershipCanJoin canJoin,
WhiteboardMembershipLastInteractedAt lastInteractedAt)
: base(id)
{
WhiteboardId = ownerId;
UserId = userId;
IsBanned = isBanned;
EditingEnabled = editingEnabled;
CanJoin = canJoin;
LastInteractedAt = lastInteractedAt;
}
public static WhiteboardMembership Create(
string id,
string ownerId,
string userId,
bool isBanned,
bool editingEnabled,
bool canJoin,
DateTime lastInteractedAt)
{
var whiteboardMembershipId = new WhiteboardMembershipId(id);
var whiteboardId = new WhiteboardId(ownerId);
var userIdVo = new UserId(userId);
var isBannedVo = new WhiteboardMembershipIsBanned(isBanned);
var editingEnabledVo = new WhiteboardMembershipEditingEnabled(editingEnabled);
var canJoinVo = new WhiteboardMembershipCanJoin(canJoin);
var lastInteractedAtVo = new WhiteboardMembershipLastInteractedAt(lastInteractedAt);
return new WhiteboardMembership(
whiteboardMembershipId,
whiteboardId,
userIdVo,
isBannedVo,
editingEnabledVo,
canJoinVo,
lastInteractedAtVo);
}
public static WhiteboardMembership Create(
string ownerId,
string userId,
bool isBanned,
bool editingEnabled,
bool canJoin,
DateTime lastInteractedAt)
{
var whiteboardMembershipId = WhiteboardMembershipId.Any();
var whiteboardId = new WhiteboardId(ownerId);
var userIdVo = new UserId(userId);
var isBannedVo = new WhiteboardMembershipIsBanned(isBanned);
var editingEnabledVo = new WhiteboardMembershipEditingEnabled(editingEnabled);
var canJoinVo = new WhiteboardMembershipCanJoin(canJoin);
var lastInteractedAtVo = new WhiteboardMembershipLastInteractedAt(lastInteractedAt);
return new WhiteboardMembership(
whiteboardMembershipId,
whiteboardId,
userIdVo,
isBannedVo,
editingEnabledVo,
canJoinVo,
lastInteractedAtVo);
}
}