Exemple #1
0
        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)));
 }
Exemple #3
0
        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));
            }
        }