using PostFundManagement.Application.Services.Users; using PostFundManagement.Domain; using PostFundManagement.Domain.Attributes; using PostFundManagement.Domain.Models; using PostFundManagement.Domain.Models.Security; namespace PostFundManagement.Application.Abstractions.Services; public interface IUserService { [Log] [Audit] Task SyncUserAsync(Guid userId, string email, string role, CancellationToken cancellationToken = default); [Log] Task> GetUsersAsync(Pagination pagination, UserFilterRequest request, CancellationToken cancellationToken = default); [Log] [Audit] Task UpdateUserStatusAsync(Guid userId, ActivityStatus status, CancellationToken cancellationToken = default); [Log] Task> GetUserAsync(Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task CreateUserAsync(string tenantIdHash, string idNumberHash, CreateUserRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task AddUserClaimAsync(AddUserClaimRequest request, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task AddUserRoleAsync(Guid targetUserId, string roleId, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task DeleteUserClaimAsync(string claimIdHash, Guid targetUserId, Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task SetUserLockoutAsync(Guid targetUserId, Guid userId, bool disable, CancellationToken cancellationToken = default); [Log] [Audit] Task LogoutUserAsync(Guid targetUserId, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetUserRolesAsync(Guid targetUserId, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetUserClaimsAsync(Guid targetUserId, Guid userId, CancellationToken cancellationToken = default); [Log] Task> GetSystemRolesAsync(Guid userId, CancellationToken cancellationToken = default); [Log] [Audit] Task DeleteUserRoleAsync(Guid targetUserId, string roleId, Guid userId, CancellationToken cancellationToken = default); }