public async Task <SearchResultListingViewModel> GetNewestAdvertsAsync(int?take = null, int skip = 0) { var results = await this.dbContext.Automobiles .OrderByDescending(x => x.CreatedOn) .Where(x => x.IsDeleted == false) .Take(take ?? ItemsPerPage) .Include(x => x.Make) .Include(x => x.Model) .Include(x => x.PrimaryProperties) .Include(x => x.Images) .Select(x => new SearchResultConciseViewModel { Id = x.Id, Make = x.Make.Name, Model = x.Model.Name, Title = x.Title, SellerId = x.UserId, Mileage = x.PrimaryProperties.Mileage, CreatedOn = x.CreatedOn, Year = x.PrimaryProperties.Year, Price = x.PrimaryProperties.Price, ImageUrl = x.Images.ImageUrl1 }) .ToListAsync(); var viewModel = new SearchResultListingViewModel { SearchResults = results, }; return(viewModel); }
public async Task <IActionResult> Results(MainSearchInputModel model, int page = 1) { var query = HttpContext.Request.QueryString.ToString(); this.ViewData["query"] = Uri.EscapeUriString(query); SearchResultListingViewModel viewModel = await this.searchService.GetSearchResultsAsync(model, ItemsPerPage, (page - 1) *ItemsPerPage); if (viewModel == null) { return(this.View(viewModel)); } int countOfAutomobiles = viewModel == null ? 0 : viewModel.SearchResults.Count(); if (viewModel?.PagesCount == null) { viewModel.PagesCount = (int)Math.Ceiling((double)countOfAutomobiles / ItemsPerPage); } if (viewModel.PagesCount == 0) { viewModel.PagesCount = 1; } viewModel.CurrentPage = page; return(this.View(viewModel)); }
public async Task <UserProfileViewModel> GetUserViewModelByUserIdAsync(string id) { var user = await this.GetUserById(id); var userProfileModel = new UserProfileViewModel(); if (user?.Automobiles == null) { return(null); } var searchResultsConcise = user.Automobiles .Select(x => new SearchResultConciseViewModel { Id = x.Id, Make = x.Make.Name, Model = x.Model.Name, SellerId = x.UserId, SellerName = x.User.UserName, Title = x.Title, Mileage = x.PrimaryProperties.Mileage, CreatedOn = x.CreatedOn, Year = x.PrimaryProperties.Year, Price = x.PrimaryProperties.Price, ImageUrl = x.Images.ImageUrl1 //TODO imageurl1 shouldnt exist }) .ToList(); var searchResultsListing = new SearchResultListingViewModel { SearchResults = searchResultsConcise }; var viewModel = new UserProfileViewModel { Automobiles = searchResultsListing, PhoneNumber = user.PhoneNumber, Username = user.UserName, MemberSince = user.CreatedOn, Email = user.Email, Id = user.Id, ProfileImage = user.ProfileImage }; //TODO MAP return(viewModel); }
public async Task <SearchResultListingViewModel> GetSearchResultsAsync(MainSearchInputModel inputModel, int?take = null, int skip = 0) { if (this.SearchModelIsNull(inputModel.PrimaryProperties)) { return(null); } if (this.SearchModelIsNull(inputModel)) { return(null); } var automobiles = this.dbContext .Automobiles .Where(x => x.IsDeleted == false) .Include(x => x.Make) .Include(x => x.Model) .Include(x => x.User) .AsNoTracking(); automobiles = primaryPropertiesValidator.ValidateSearchProperties(inputModel, automobiles); automobiles = interiorsValidator.ValidateSearchProperties(inputModel, automobiles); automobiles = interiorMaterialsvalidator.ValidateSearchProperties(inputModel, automobiles); automobiles = safetyValidator.ValidateSearchProperties(inputModel, automobiles); automobiles = specializedFeaturesValidator.ValidateSearchProperties(inputModel, automobiles); automobiles = suspensionsValidator.ValidateSearchProperties(inputModel, automobiles); automobiles = extraFeaturesValidator.ValidateSearchProperties(inputModel, automobiles); if (take.HasValue) { automobiles = automobiles .OrderByDescending(x => x.CreatedOn) .Skip(skip) .Take(take.Value); } else { automobiles = automobiles .OrderByDescending(x => x.CreatedOn) .Skip(skip); } var searchResults = await automobiles .Select(x => new SearchResultConciseViewModel { Id = x.Id, Make = x.Make.Name, Model = x.Model.Name, SellerId = x.UserId, SellerName = x.User.UserName, Title = x.Title, Mileage = x.PrimaryProperties.Mileage, CreatedOn = x.CreatedOn, Year = x.PrimaryProperties.Year, Price = x.PrimaryProperties.Price, ImageUrl = x.Images.ImageUrl1 }) .ToListAsync(); var viewModel = new SearchResultListingViewModel { SearchResults = searchResults }; return(viewModel); }
public IActionResult Listing(SearchResultListingViewModel viewModel) { return(this.View(viewModel)); }