public async Task <int> GetAmountApartmentByParamsAsync(ApartmentSearchParamsDTO searchParams) { var apartmentCollectionAmount = (await _apartmentRepository.GetAllAsync(searchParams.GetExpression())).Count(); return(apartmentCollectionAmount); }
public static Expression <Func <Apartment, bool> > GetExpression(this ApartmentSearchParamsDTO searchParams) { return(apartment => (string.IsNullOrWhiteSpace(searchParams.Country) || string.Equals(apartment.ApartmentLocation.Country.ToUpper(), searchParams.Country.ToUpper())) && (string.IsNullOrWhiteSpace(searchParams.City) || string.Equals(apartment.ApartmentLocation.City.ToUpper(), searchParams.City.ToUpper())) && apartment.ApartmentReservations.All(o => !(o.DateFrom.Date <= searchParams.DateFrom.Date && o.DateTo.Date >= searchParams.DateFrom.Date) && !(o.DateFrom.Date <= searchParams.DateTo.Date && o.DateTo.Date >= searchParams.DateTo.Date) && !(o.DateFrom.Date > searchParams.DateFrom.Date && o.DateFrom.Date < searchParams.DateTo.Date)) && (searchParams.ApartmentFilters == null || (!searchParams.ApartmentFilters.AmountBathrooms.HasValue || apartment.AmountBathroom >= searchParams.ApartmentFilters.AmountBathrooms) && (!searchParams.ApartmentFilters.AmountBedrooms.HasValue || apartment.AmountBedroom >= searchParams.ApartmentFilters.AmountBedrooms) && (!searchParams.ApartmentFilters.MinCost.HasValue || apartment.ApartmentRates >= searchParams.ApartmentFilters.MinCost) && (!searchParams.ApartmentFilters.MaxCost.HasValue || apartment.ApartmentRates <= searchParams.ApartmentFilters.MaxCost))); }
public async Task <IList <ApartmentDTO> > GetApartmentByParamsAsync(ApartmentSearchParamsDTO searchParams) { var apartmentCollection = await(searchParams.Sort.Type == null ? await _apartmentRepository.GetAllAsync(searchParams.GetExpression(), x => x.ApartmentImages, x => x.ApartmentLocation, x => x.ApartmentType) : searchParams.Sort.Direction ? (await _apartmentRepository.GetAllAsync(searchParams.GetExpression(), x => x.ApartmentImages, x => x.ApartmentLocation, x => x.ApartmentType)) .OrderBy(searchParams.Sort.GetSortExpression()) : (await _apartmentRepository.GetAllAsync(searchParams.GetExpression(), x => x.ApartmentImages, x => x.ApartmentLocation, x => x.ApartmentType)) .OrderByDescending(searchParams.Sort.GetSortExpression()) ) .Skip(searchParams.Skip).Take(searchParams.Take).ToListAsync(); var apartmentCollectionDTO = _mapper.Map <IList <ApartmentDTO> >(apartmentCollection); return(apartmentCollectionDTO); }
public async Task <IActionResult> GetCoollectionApartment(ApartmentSearchParamsDTO apartmentSearchParams) { try { var collectionApartment = await _apartmentService.GetApartmentByParamsAsync(apartmentSearchParams); return(Ok(collectionApartment)); } catch (DbUpdateConcurrencyException e) { return(BadRequest(e.Message)); } catch (Exception e) { return(BadRequest(e)); } }
public async Task <IActionResult> AmountApartmentByLoation(ApartmentSearchParamsDTO apartmentSearchParams) { try { var amountapartments = await _apartmentService.GetAmountApartmentByParamsAsync(apartmentSearchParams); return(Ok(amountapartments)); } catch (DbUpdateConcurrencyException e) { return(BadRequest(e.Message)); } catch (Exception e) { return(BadRequest(e)); } }