Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions WebAPI/LearningHub.Nhs.API/Controllers/SearchController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -257,14 +257,13 @@ private async Task<SearchViewModel> GetSearchResults(SearchRequestModel searchRe
continue;
}

var roleUserGroups = this.catalogueService.GetRoleUserGroupsForCatalogue(catalogue.NodeId, true);

document.CatalogueUrl = catalogue.Url;
document.CatalogueBadgeUrl = catalogue.BadgeUrl;
document.CatalogueName = catalogue.Name;

if (catalogue.RestrictedAccess)
{
var roleUserGroups = await this.catalogueService.GetRoleUserGroupsForCatalogueSearch(catalogue.NodeId, this.CurrentUserId);
document.CatalogueRestrictedAccess = catalogue.RestrictedAccess;
document.CatalogueHasAccess = roleUserGroups.Any(x => x.UserGroup.UserUserGroup.Any(y => y.UserId == this.CurrentUserId)
&& (x.RoleId == (int)RoleEnum.Editor || x.RoleId == (int)RoleEnum.LocalAdmin || x.RoleId == (int)RoleEnum.Reader));
Expand Down Expand Up @@ -347,8 +346,6 @@ private async Task<SearchCatalogueViewModel> GetCatalogueSearchResults(Catalogue
continue;
}

var roleUserGroups = this.catalogueService.GetRoleUserGroupsForCatalogue(catalogue.NodeId, true);

// catalogue.No
document.Url = catalogue.Url;
document.BannerUrl = catalogue.BannerUrl;
Expand All @@ -357,6 +354,7 @@ private async Task<SearchCatalogueViewModel> GetCatalogueSearchResults(Catalogue
document.NodePathId = catalogue.NodePathId;
if (catalogue.RestrictedAccess)
{
var roleUserGroups = await this.catalogueService.GetRoleUserGroupsForCatalogueSearch(catalogue.NodeId, this.CurrentUserId);
document.RestrictedAccess = catalogue.RestrictedAccess;
document.HasAccess = roleUserGroups.Any(x => x.UserGroup.UserUserGroup.Any(y => y.UserId == this.CurrentUserId)
&& (x.RoleId == (int)RoleEnum.Editor || x.RoleId == (int)RoleEnum.LocalAdmin || x.RoleId == (int)RoleEnum.Reader));
Expand Down Expand Up @@ -419,8 +417,6 @@ private async Task<SearchAllCatalogueViewModel> GetAllCatalogueResults(AllCatalo
continue;
}

var roleUserGroups = this.catalogueService.GetRoleUserGroupsForCatalogue(catalogue.NodeId, true);

// catalogue.No
document.Url = catalogue.Url;
document.BannerUrl = catalogue.BannerUrl;
Expand All @@ -430,6 +426,7 @@ private async Task<SearchAllCatalogueViewModel> GetAllCatalogueResults(AllCatalo

if (catalogue.RestrictedAccess)
{
var roleUserGroups = await this.catalogueService.GetRoleUserGroupsForCatalogueSearch(catalogue.NodeId, this.CurrentUserId);
document.RestrictedAccess = catalogue.RestrictedAccess;
document.HasAccess = roleUserGroups.Any(x => x.UserGroup.UserUserGroup.Any(y => y.UserId == this.CurrentUserId)
&& (x.RoleId == (int)RoleEnum.Editor || x.RoleId == (int)RoleEnum.LocalAdmin || x.RoleId == (int)RoleEnum.Reader));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,13 @@ public interface IRoleUserGroupRepository : IGenericRepository<RoleUserGroup>
/// <param name="userId">The userGroupId.</param>
/// <returns>A list of RoleUserGroupViewModel.</returns>
Task<List<RoleUserGroupViewModel>> GetRoleUserGroupViewModelsByUserId(int userId);

/// <summary>
/// The get all for search.
/// </summary>
/// <param name="catalogueNodeId">The catalogueNodeId.</param>
/// <param name="userId">The userId.</param>
/// <returns>The <see cref="Task"/>.</returns>
Task<List<RoleUserGroup>> GetAllforSearch(int catalogueNodeId, int userId);
}
}
14 changes: 14 additions & 0 deletions WebAPI/LearningHub.Nhs.Repository/RoleUserGroupRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,20 @@ public async Task<RoleUserGroup> GetByRoleIdUserGroupIdScopeIdAsync(int roleId,
.Where(n => n.Deleted == false);
}

/// <summary>
/// The get all for Search.
/// </summary>
/// <param name="catalogueNodeId">The catalogueNodeId.</param>
/// <param name="userId">The userId.</param>
/// <returns>The <see cref="Task"/>.</returns>
public async Task<List<RoleUserGroup>> GetAllforSearch(int catalogueNodeId, int userId)
{
return await this.DbContext.RoleUserGroup.Where(rug => rug.Scope.CatalogueNodeId == catalogueNodeId)
.Include(n => n.UserGroup).ThenInclude(u => u.UserUserGroup.Where(p => p.UserId == userId))
.Include(n => n.Scope).AsNoTracking()
.ToListAsync();
}

/// <summary>
/// The get by role id and catalogue id.
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,14 @@ public interface ICatalogueService
/// <returns>The roleUserGroups.</returns>
List<RoleUserGroup> GetRoleUserGroupsForCatalogue(int catalogueNodeId, bool includeUser = false);

/// <summary>
/// The GetRolesForCatalogueSearch.
/// </summary>
/// <param name="catalogueNodeId">The catalogueNodeId.</param>
/// <param name="userId">The current user.</param>
/// <returns>The roleUserGroups.</returns>
Task<List<RoleUserGroup>> GetRoleUserGroupsForCatalogueSearch(int catalogueNodeId, int userId);

/// <summary>
/// The GetLatestCatalogueAccessRequestAsync.
/// </summary>
Expand Down
11 changes: 11 additions & 0 deletions WebAPI/LearningHub.Nhs.Services/CatalogueService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -404,6 +404,17 @@ public List<RoleUserGroup> GetRoleUserGroupsForCatalogue(int catalogueNodeId, bo
return query.Where(x => x.Scope.CatalogueNodeId == catalogueNodeId).ToList();
}

/// <summary>
/// The GetRolesForCatalogueSearch.
/// </summary>
/// <param name="catalogueNodeId">The catalogueNodeId.</param>
/// <param name="userId">The current user.</param>
/// <returns>The roleUserGroups.</returns>
public async Task<List<RoleUserGroup>> GetRoleUserGroupsForCatalogueSearch(int catalogueNodeId, int userId)
{
return await this.roleUserGroupRepository.GetAllforSearch(catalogueNodeId, userId);
}

/// <summary>
/// The RequestAccessAsync.
/// </summary>
Expand Down
Loading