public async Task <AuthorCatalogViewModel> GetAuthorsCatalogAsync(string trainingProviderName, Specializations?specializations) { var coursesQuery = GetCoursesQueryForSpecializations(specializations); var authorsQuery = trainingProviderName != null ? CatalogContext.TrainingProviderAuthors .Where(x => x.TrainingProvider.Name == trainingProviderName && x.AuthorCourses.Any(ca => coursesQuery.Any(q => q.Id == ca.CourseId)) && !x.IsDeleted) : CatalogContext.TrainingProviderAuthors .Where(x => x.AuthorCourses.Any(ca => coursesQuery.Any(q => q.Id == ca.CourseId)) && !x.IsDeleted); var catalogModel = await authorsQuery .Select(x => new CatalogEntryViewModel { TrainingProvider = new TrainingProviderViewModel { Name = x.TrainingProvider.Name, LogoFileName = x.TrainingProvider.LogoFileName, SiteUrl = x.TrainingProvider.SiteUrl }, Author = new TrainingProviderAuthorViewModel { FullName = x.FullName, UrlName = x.UrlName } }).ToListAsync(); if (!catalogModel.Any()) { return(null); } var catalog = catalogModel .GroupBy(x => char.ToUpperInvariant(x.Author.LastName[0]), x => x) .OrderBy(group => group.Key) .AsEnumerable(); var tokenCatalog = GetTokenCatalog(); var authorCatalogViewModel = new AuthorCatalogViewModel { Navigation = new NavigationViewModel { SelectedToken = trainingProviderName != null ? trainingProviderName.ToTitleCaseInvariant() : NavigationViewModel.ALLToken, TokenCatalog = tokenCatalog }, Catalog = catalog }; return(authorCatalogViewModel); }
public async Task<AuthorCatalogViewModel> GetAuthorsCatalogAsync( string trainingProviderName, Specializations? specializations) { var coursesQuery = GetCoursesQueryForSpecializations(specializations); var authorsQuery = trainingProviderName != null ? CatalogContext.TrainingProviderAuthors .Where(x => x.TrainingProvider.Name == trainingProviderName && x.AuthorCourses.Any(ca => coursesQuery.Any(q => q.Id == ca.CourseId)) && !x.IsDeleted) : CatalogContext.TrainingProviderAuthors .Where(x => x.AuthorCourses.Any(ca => coursesQuery.Any(q => q.Id == ca.CourseId)) && !x.IsDeleted); var catalogModel = await authorsQuery .Select(x => new CatalogEntryViewModel { TrainingProvider = new TrainingProviderViewModel { Name = x.TrainingProvider.Name, LogoFileName = x.TrainingProvider.LogoFileName, SiteUrl = x.TrainingProvider.SiteUrl }, Author = new TrainingProviderAuthorViewModel { FullName = x.FullName, UrlName = x.UrlName } }).ToListAsync(); if (!catalogModel.Any()) { return null; } var catalog = catalogModel .GroupBy(x => char.ToUpperInvariant(x.Author.LastName[0]), x => x) .OrderBy(group => group.Key) .AsEnumerable(); var tokenCatalog = GetTokenCatalog(); var authorCatalogViewModel = new AuthorCatalogViewModel { Navigation = new NavigationViewModel { SelectedToken = trainingProviderName != null ? trainingProviderName.ToTitleCaseInvariant() : NavigationViewModel.ALLToken, TokenCatalog = tokenCatalog }, Catalog = catalog }; return authorCatalogViewModel; }