コード例 #1
0
        public async Task <IActionResult> GetCurrentUserRealEstates([FromBody] RealEstateSearchModel realEstateSearchModel, int page, int numberOfRealEstatesPerPage)
        {
            var user     = HttpContext.User;
            var userName = user.Identity.Name;
            var list     = await _realEstateService.GetRealEstatesWithPaginationAsync(realEstateSearchModel, page, numberOfRealEstatesPerPage, userName);

            return(Ok(list));
        }
コード例 #2
0
        public async Task <IEnumerable <RealEstateViewModel> > GetRealEstatesWithPaginationAsync(RealEstateSearchModel realEstateSearchModel, int page, int numberOfRealEstatesPerPage, string userName)
        {
            var listOfRealEstateViewModels = new List <RealEstateViewModel>();
            var user = await _userManager.FindByNameAsync(userName);

            var list = await _realEstateRepository.GetRealEstatesByConditionWithPaginationAsync(realEstateSearchModel, page, numberOfRealEstatesPerPage, user);

            foreach (var realEstate in list)
            {
                var realEstateViewModel = RealEstateMapper.ToViewModel(realEstate);
                listOfRealEstateViewModels.Add(realEstateViewModel);
            }
            return(listOfRealEstateViewModels);
        }
コード例 #3
0
        public async Task <IQueryable <RealEstate> > GetRealEstatesByConditionWithPaginationAsync(RealEstateSearchModel realEstateSearchModel, int page, int numberOfRealEstatesPerPage, User user)
        {
            var list = _context.RealEstates.AsQueryable();

            list = list.Where(x => x.IsForRent == realEstateSearchModel.IsForRent);
            list = list.Where(x => x.IsReadyToMoveIn == realEstateSearchModel.IsReadyToMoveIn);
            if (realEstateSearchModel.Floor != -1)
            {
                list = list.Where(x => x.Floor == realEstateSearchModel.Floor);
            }
            if (realEstateSearchModel.NumberOfFloors != -1)
            {
                list = list.Where(x => x.NumberOfFloors == realEstateSearchModel.NumberOfFloors);
            }
            if (realEstateSearchModel.NumberOfRooms != -1)
            {
                list = list.Where(x => x.NumberOfRooms == realEstateSearchModel.NumberOfRooms);
            }
            if (realEstateSearchModel.PriceFrom != -1)
            {
                list = list.Where(x => x.Price >= realEstateSearchModel.PriceFrom);
            }
            if (realEstateSearchModel.PriceTo != -1)
            {
                list = list.Where(x => x.Price <= realEstateSearchModel.PriceTo);
            }
            if (!string.IsNullOrEmpty(realEstateSearchModel.Heating))
            {
                list = list.Where(x => x.Heating == realEstateSearchModel.Heating);
            }
            if (!string.IsNullOrEmpty(realEstateSearchModel.Location))
            {
                list = list.Where(x => x.Location == realEstateSearchModel.Location);
            }
            if (!string.IsNullOrEmpty(realEstateSearchModel.Name))
            {
                list = list.Where(x => x.Name == realEstateSearchModel.Name);
            }
            if (!string.IsNullOrEmpty(realEstateSearchModel.Category))
            {
                list = list.Where(x => x.Category == realEstateSearchModel.Category);
            }
            if (user != null)
            {
                list = list.Where(x => x.User == user);
            }
            var numberOfRealEstatesToSkip = (page - 1) * numberOfRealEstatesPerPage;

            list = list.Skip(numberOfRealEstatesToSkip).Take(numberOfRealEstatesPerPage);
            return(list);
        }
コード例 #4
0
        public async Task <IActionResult> GetRealEstatesByConditionWithPaginationAsync([FromBody] RealEstateSearchModel realEstateSearchModel, int page, int numberOfRealEstatesPerPage)
        {
            var list = await _realEstateService.GetRealEstatesWithPaginationAsync(realEstateSearchModel, page, numberOfRealEstatesPerPage, null);

            return(Ok(list));
        }