using Mws.Domain.Projects; namespace Mws.Application.Common.Repositories; public interface IProjectRepository : IRepository { Task GetByIdAsync(Guid id, CancellationToken ct = default); Task GetForUserAsync(Guid userId, Guid projectId, CancellationToken ct = default); Task> GetForUserAsync(Guid userId, CancellationToken ct = default); Task> SearchForUserAsync(Guid userId, string? term, CancellationToken ct = default); Task CountMembersAsync(Guid projectId, CancellationToken ct = default); Task IsMemberAsync(Guid projectId, Guid userId, CancellationToken ct = default); Task GetMemberRoleAsync(Guid projectId, Guid userId, CancellationToken ct = default); Task GetMemberAsync(Guid projectId, Guid userId, CancellationToken ct = default); Task GetMemberWithUserAsync(Guid projectId, Guid userId, CancellationToken ct = default); Task> GetMembersWithUserAsync(Guid projectId, CancellationToken ct = default); Task CountOwnersAsync(Guid projectId, CancellationToken ct = default); Task> GetProjectIdsForUserAsync(Guid userId, CancellationToken ct = default); Task> GetOwnedProjectIdsAsync(Guid userId, CancellationToken ct = default); Task> GetDocumentViewableProjectIdsAsync(Guid userId, CancellationToken ct = default); void AddMember(ProjectMember member); void RemoveMember(ProjectMember member); Task GetMemberPermissionAsync(Guid projectId, Guid userId, string screen, CancellationToken ct = default); Task> GetMemberPermissionsAsync(Guid projectId, string screen, CancellationToken ct = default); void AddMemberPermission(ProjectMemberPermission permission); }