public async Task <SearchSideBySideViewModel> SearchAsync(string searchTerm, User currentUser) { SearchSideBySideViewModel viewModel; if (!string.IsNullOrWhiteSpace(searchTerm)) { searchTerm = searchTerm.Trim(); var oldTask = SearchAsync(_oldSearchService, searchTerm); var newTask = SearchAsync(_newSearchService, searchTerm); await Task.WhenAll(oldTask, newTask); var oldResults = await oldTask; var newResults = await newTask; viewModel = new SearchSideBySideViewModel { SearchTerm = searchTerm, OldSuccess = SearchResults.IsSuccessful(oldResults), OldHits = oldResults.Hits, OldItems = oldResults.Data.Select(x => _listPackageItemViewModelFactory.Create(x, currentUser)).ToList(), NewSuccess = SearchResults.IsSuccessful(newResults), NewHits = newResults.Hits, NewItems = newResults.Data.Select(x => _listPackageItemViewModelFactory.Create(x, currentUser)).ToList(), }; _telemetryService.TrackSearchSideBySide( viewModel.SearchTerm, viewModel.OldSuccess, viewModel.OldHits, viewModel.NewSuccess, viewModel.NewHits); } else { viewModel = new SearchSideBySideViewModel(); } viewModel.EmailAddress = currentUser?.EmailAddress; return(viewModel); }
public virtual ActionResult Profiles(string username, int page = 1) { var currentUser = GetCurrentUser(); var user = UserService.FindByUsername(username); if (user == null || user.IsDeleted) { return(HttpNotFound()); } var packages = PackageService.FindPackagesByOwner(user, includeUnlisted: false) .Where(p => p.PackageStatusKey == PackageStatus.Available) .OrderByDescending(p => p.PackageRegistration.DownloadCount) .Select(p => { var viewModel = _listPackageItemViewModelFactory.Create(p, currentUser); viewModel.DownloadCount = p.PackageRegistration.DownloadCount; return(viewModel); }).ToList(); var model = new UserProfileModel(user, currentUser, packages, page - 1, GalleryConstants.DefaultPackageListPageSize, Url); return(View(model)); }