From a2baa3d24cfceddbdc41c4c3eeabb540e53035fe Mon Sep 17 00:00:00 2001 From: Veljko Tosic Date: Wed, 4 Mar 2026 23:13:12 +0100 Subject: [PATCH] Queries --- .../GetMembershipStatusQuery.cs | 6 ++++ .../GetMembershipStatusQueryHandler.cs | 34 +++++++++++++++++++ .../GetRecentWhiteboardsQueryHandler.cs | 3 +- 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 dotnet/AipsCore/Application/Models/Whiteboard/Query/GetMembershipStatus/GetMembershipStatusQuery.cs create mode 100644 dotnet/AipsCore/Application/Models/Whiteboard/Query/GetMembershipStatus/GetMembershipStatusQueryHandler.cs diff --git a/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetMembershipStatus/GetMembershipStatusQuery.cs b/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetMembershipStatus/GetMembershipStatusQuery.cs new file mode 100644 index 0000000..18cd305 --- /dev/null +++ b/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetMembershipStatus/GetMembershipStatusQuery.cs @@ -0,0 +1,6 @@ +using AipsCore.Application.Abstract.Query; +using AipsCore.Domain.Models.WhiteboardMembership.Enums; + +namespace AipsCore.Application.Models.Whiteboard.Query.GetMembershipStatus; + +public record GetMembershipStatusQuery(string WhiteboardId, string UserId): IQuery; \ No newline at end of file diff --git a/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetMembershipStatus/GetMembershipStatusQueryHandler.cs b/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetMembershipStatus/GetMembershipStatusQueryHandler.cs new file mode 100644 index 0000000..7352fac --- /dev/null +++ b/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetMembershipStatus/GetMembershipStatusQueryHandler.cs @@ -0,0 +1,34 @@ +using AipsCore.Application.Abstract.Query; +using AipsCore.Domain.Common.Validation; +using AipsCore.Domain.Models.User.ValueObjects; +using AipsCore.Domain.Models.Whiteboard.ValueObjects; +using AipsCore.Domain.Models.WhiteboardMembership.Enums; +using AipsCore.Domain.Models.WhiteboardMembership.External; +using AipsCore.Domain.Models.WhiteboardMembership.Validation; + +namespace AipsCore.Application.Models.Whiteboard.Query.GetMembershipStatus; + +public class GetMembershipStatusQueryHandler : IQueryHandler +{ + private readonly IWhiteboardMembershipRepository _whiteboardMembershipRepository; + + public GetMembershipStatusQueryHandler(IWhiteboardMembershipRepository whiteboardMembershipRepository) + { + _whiteboardMembershipRepository = whiteboardMembershipRepository; + } + + public async Task Handle(GetMembershipStatusQuery query, CancellationToken cancellationToken = default) + { + var userId = new UserId(query.UserId); + var whiteboardId = new WhiteboardId(query.WhiteboardId); + + var membership = await _whiteboardMembershipRepository.GetByWhiteboardAndUserAsync(whiteboardId, userId, cancellationToken); + + if (membership is null) + { + throw new ValidationException(WhiteboardMembershipErrors.NotFound(whiteboardId, userId)); + } + + return membership.Status; + } +} \ No newline at end of file diff --git a/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetRecentWhiteboards/GetRecentWhiteboardsQueryHandler.cs b/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetRecentWhiteboards/GetRecentWhiteboardsQueryHandler.cs index 23ddb96..5d11f4f 100644 --- a/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetRecentWhiteboards/GetRecentWhiteboardsQueryHandler.cs +++ b/dotnet/AipsCore/Application/Models/Whiteboard/Query/GetRecentWhiteboards/GetRecentWhiteboardsQueryHandler.cs @@ -1,6 +1,7 @@ using AipsCore.Application.Abstract.Query; using AipsCore.Application.Abstract.UserContext; using AipsCore.Domain.Models.Whiteboard.Enums; +using AipsCore.Domain.Models.WhiteboardMembership.Enums; using AipsCore.Infrastructure.Persistence.Db; using Microsoft.EntityFrameworkCore; @@ -32,7 +33,7 @@ public class GetRecentWhiteboardsQueryHandler : IQueryHandler m.Whiteboard) .Where(m => ( m.UserId == userIdGuid && - m.IsBanned == false && + m.Status != WhiteboardMembershipStatus.Banned && m.Whiteboard != null && m.Whiteboard.State != WhiteboardState.Deleted ))