public static async Task <Role> FindByNameAsync(this IRolesRepository roles, string roleName, bool isNormalized = false, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); if (isNormalized) { return(await roles.ProcessFirstOrDefaultAsync( roles.AsQueryable().Where(role => role.NormalizedName == roleName), cancellationToken)); } return(await roles.ProcessFirstOrDefaultAsync( roles.AsQueryable().Where(role => role.Name == roleName), cancellationToken)); }
public static async Task <IReadOnlyCollection <Role> > GetRolesAsync(this IUsersRolesRepository usersRoles, Guid userId, IRolesRepository roles, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); var roleIdCollection = (await usersRoles.ProcessQueryAsync(usersRoles.AsQueryable().Where(x => x.UserId == userId), cancellationToken)).Select(x => x.RoleId); return(await roles.ProcessQueryAsync(roles.AsQueryable().Where( role => roleIdCollection.Contains(role.Id)), cancellationToken)); }