This commit is contained in:
2026-03-04 23:13:12 +01:00
parent 21425b22b5
commit a2baa3d24c
3 changed files with 42 additions and 1 deletions

View File

@@ -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<WhiteboardMembershipStatus>;

View File

@@ -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<GetMembershipStatusQuery, WhiteboardMembershipStatus>
{
private readonly IWhiteboardMembershipRepository _whiteboardMembershipRepository;
public GetMembershipStatusQueryHandler(IWhiteboardMembershipRepository whiteboardMembershipRepository)
{
_whiteboardMembershipRepository = whiteboardMembershipRepository;
}
public async Task<WhiteboardMembershipStatus> 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;
}
}

View File

@@ -1,6 +1,7 @@
using AipsCore.Application.Abstract.Query; using AipsCore.Application.Abstract.Query;
using AipsCore.Application.Abstract.UserContext; using AipsCore.Application.Abstract.UserContext;
using AipsCore.Domain.Models.Whiteboard.Enums; using AipsCore.Domain.Models.Whiteboard.Enums;
using AipsCore.Domain.Models.WhiteboardMembership.Enums;
using AipsCore.Infrastructure.Persistence.Db; using AipsCore.Infrastructure.Persistence.Db;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
@@ -32,7 +33,7 @@ public class GetRecentWhiteboardsQueryHandler : IQueryHandler<GetRecentWhiteboar
.Include(m => m.Whiteboard) .Include(m => m.Whiteboard)
.Where(m => ( .Where(m => (
m.UserId == userIdGuid && m.UserId == userIdGuid &&
m.IsBanned == false && m.Status != WhiteboardMembershipStatus.Banned &&
m.Whiteboard != null && m.Whiteboard != null &&
m.Whiteboard.State != WhiteboardState.Deleted m.Whiteboard.State != WhiteboardState.Deleted
)) ))