This commit is contained in:
2026-03-08 00:01:31 +01:00
parent 643de642a1
commit c4ee5b0394
16 changed files with 221 additions and 73 deletions

View File

@@ -0,0 +1,19 @@
using AipsCore.Domain.Models.WhiteboardMembership.Enums;
namespace AipsRT.Model.Memberships;
public class MembershipManager
{
private readonly IServiceScopeFactory _scopeFactory;
public MembershipManager(IServiceScopeFactory scopeFactory)
{
_scopeFactory = scopeFactory;
}
public async Task<WhiteboardMembershipStatus> GetMembershipStatus(Guid whiteboardId, Guid userId)
{
var membershipService = _scopeFactory.CreateScope().ServiceProvider.GetRequiredService<MembershipService>();
return await membershipService.GetMembershipStatus(whiteboardId, userId);
}
}

View File

@@ -0,0 +1,21 @@
using AipsCore.Application.Abstract;
using AipsCore.Application.Models.Whiteboard.Query.GetMembershipStatus;
using AipsCore.Domain.Models.WhiteboardMembership.Enums;
namespace AipsRT.Model.Memberships;
public class MembershipService
{
private readonly IDispatcher _dispatcher;
public MembershipService(IDispatcher dispatcher)
{
_dispatcher = dispatcher;
}
public async Task<WhiteboardMembershipStatus> GetMembershipStatus(Guid whiteboardId, Guid userId)
{
var query = new GetMembershipStatusQuery(whiteboardId.ToString(), userId.ToString());
return await _dispatcher.Execute(query);
}
}

View File

@@ -0,0 +1,17 @@
namespace AipsRT.Model.Users;
public class User
{
public Guid UserId { get; private set; }
public string Username { get; private set; }
public string Email { get; private set; }
public User(Guid userId, string username, string email)
{
UserId = userId;
Username = username;
Email = email;
}
}

View File

@@ -1,9 +1,8 @@
using AipsCore.Application.Abstract;
using AipsCore.Application.Models.Whiteboard.Query.GetMembershipStatus;
using AipsCore.Application.Models.Whiteboard.Query.GetWhiteboardInfoRT;
using AipsCore.Domain.Models.Shape.Enums;
using AipsCore.Domain.Models.WhiteboardMembership.Enums;
using AipsRT.Model.Whiteboard.Shapes.Map;
using AipsRT.Model.Users;
namespace AipsRT.Model.Whiteboard;
@@ -30,6 +29,11 @@ public class GetWhiteboardService
OwnerId = entity.OwnerId,
};
foreach (var membership in entity.Memberships)
{
whiteboard.AddUser(new User(membership.UserId, membership.User!.UserName!, membership.User.Email!));
}
foreach (var shape in entity.Shapes)
{
switch (shape.Type)

View File

@@ -1,4 +1,5 @@
using AipsRT.Model.Whiteboard.Shapes;
using AipsRT.Model.Users;
namespace AipsRT.Model.Whiteboard;
@@ -10,6 +11,8 @@ public class Whiteboard
public HashSet<Guid> AcceptedUsers { get; } = new();
public HashSet<Guid> PendingUsers { get; } = new();
public List<User> Users { get; } = [];
public List<Shape> Shapes { get; } = [];
@@ -42,6 +45,8 @@ public class Whiteboard
TextShapes.Add(shape);
}
public void AddUser(User user) => Users.Add(user);
public void AddPendingUser(Guid userId) => PendingUsers.Add(userId);
public void AcceptUser(Guid userId)

View File

@@ -79,10 +79,10 @@ public class WhiteboardManager
public bool IsAccepted(Guid userId)
{
if (!_userInWhiteboards.TryGetValue(userId, out var wbId))
if (!_userInWhiteboards.TryGetValue(userId, out var whiteboardId))
return false;
var whiteboard = GetWhiteboard(wbId);
var whiteboard = GetWhiteboard(whiteboardId);
return whiteboard?.IsAccepted(userId) ?? false;
}
}