示例#1
0
        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);
        }
示例#2
0
        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));
        }