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);
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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);
        }
Exemple #5
0
 public IActionResult Listing(SearchResultListingViewModel viewModel)
 {
     return(this.View(viewModel));
 }