Beispiel #1
0
        public static NumberOfRooms ConvertToNumberOfRoomsEnum(NumberOfRoomsEnumeration numberOfRooms)
        {
            return(numberOfRooms switch
            {
                { } numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.One) =>
                NumberOfRooms.One,
                {
                }

                numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.Two) =>
                NumberOfRooms.Two,
                {
                }

                numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.Three) =>
                NumberOfRooms.Three,
                {
                }

                numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.Four) =>
                NumberOfRooms.Four,
                {
                }

                numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.FiveAndMore)
                => NumberOfRooms.FiveAndMore,
                {
                }

                numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration,
                                                     NumberOfRoomsEnumeration.NotSpecified) => NumberOfRooms.NotSpecified,
                _ => throw new ArgumentException(
                    $"{nameof(numberOfRooms.DisplayName)} is not supported by {nameof(NumberOfRooms)}.")
            });
Beispiel #2
0
        public static NumberOfRooms ConvertToEnum(this NumberOfRoomsEnumeration numberOfRooms)
        {
            switch (numberOfRooms)
            {
            case { } numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.One):
                return(NumberOfRooms.One);

            case { } numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.Two):
                return(NumberOfRooms.Two);

            case { } numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.Three):
                return(NumberOfRooms.Three);

            case { } numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.Four):
                return(NumberOfRooms.Four);

            case { } numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.FiveAndMore):
                return(NumberOfRooms.FiveAndMore);

            case { } numberOfRoomsEnumeration when Equals(numberOfRoomsEnumeration, NumberOfRoomsEnumeration.NotSpecified):
                return(NumberOfRooms.NotSpecified);

            default:
                throw new ArgumentException($"{nameof(numberOfRooms.DisplayName)} is not supported by {nameof(NumberOfRooms)}.");
            }
        }
Beispiel #3
0
        public async Task <List <FlatForRentAnnouncement> > FindAsync(int?pageNumber, int?pageSize, string sort, Guid?cityId,
                                                                      DateTimeOffset?createdFrom, DateTimeOffset?createdTo, decimal?priceFrom, decimal?priceTo, Guid?cityDistrict,
                                                                      NumberOfRoomsEnumeration numberOfRooms)
        {
            var flatForRentAnnouncementEntities = await FindFlatForRentAnnouncementEntitiesAsync(pageNumber, pageSize,
                                                                                                 sort, cityId, createdFrom, createdTo, priceFrom, priceTo, cityDistrict, numberOfRooms);

            return(_mapper.Map <List <FlatForRentAnnouncementEntity>, List <FlatForRentAnnouncement> >(flatForRentAnnouncementEntities));
        }
Beispiel #4
0
        public Task <int> CountAsync(Guid?cityId, DateTimeOffset?createdFrom, DateTimeOffset?createdTo, decimal?priceFrom,
                                     decimal?priceTo, Guid?cityDistrict, NumberOfRoomsEnumeration numberOfRooms)
        {
            var filterPredicate = CreateFilterPredicate(cityId, createdFrom, createdTo, priceFrom, priceTo,
                                                        cityDistrict, numberOfRooms);

            return(filterPredicate != null
                ? _cosmosStore.Query().CountAsync(filterPredicate)
                : _cosmosStore.Query().CountAsync());
        }
Beispiel #5
0
 private FlatForRentAnnouncement(FlatForRentAnnouncementBuilder builder) : base(builder.Id)
 {
     Title          = builder.Title;
     SourceUrl      = builder.SourceUrl;
     CityId         = builder.CityId;
     Created        = builder.Created;
     Description    = builder.Description;
     Price          = builder.Price;
     NumberOfRooms  = builder.NumberOfRooms;
     _cityDistricts = builder.CityDistricts;
 }
Beispiel #6
0
 public CreateFlatForRentAnnouncementCommand(Guid flatForRentAnnouncementId, string title, string sourceUrl, Guid cityId,
                                             string description, decimal?price, NumberOfRoomsEnumeration numberOfRooms, IEnumerable <Guid> cityDistricts)
 {
     FlatForRentAnnouncementId = flatForRentAnnouncementId;
     Title         = title;
     SourceUrl     = sourceUrl;
     CityId        = cityId;
     Description   = description;
     Price         = price;
     NumberOfRooms = numberOfRooms;
     CityDistricts = cityDistricts.ToList().AsReadOnly();
 }
Beispiel #7
0
 public GetFlatForRentAnnouncementsInputQuery(int?page, int?pageSize, string sort, DateTimeOffset?createdFrom,
                                              DateTimeOffset?createdTo, Guid?cityId, decimal?priceFrom, decimal?priceTo, NumberOfRoomsEnumeration numberOfRooms,
                                              Guid?cityDistrict) : base(page, pageSize, sort)
 {
     CreatedFrom   = createdFrom;
     CreatedTo     = createdTo;
     CityId        = cityId;
     PriceFrom     = priceFrom;
     PriceTo       = priceTo;
     NumberOfRooms = numberOfRooms;
     CityDistrict  = cityDistrict;
 }
Beispiel #8
0
 public FlatForRentAnnouncementOutputQuery(Guid id, string title, string sourceUrl, Guid cityId,
                                           DateTimeOffset created, string description, decimal?price, NumberOfRoomsEnumeration numberOfRooms,
                                           IEnumerable <Guid> cityDistricts) : base(id)
 {
     Title         = title;
     SourceUrl     = sourceUrl;
     CityId        = cityId;
     Created       = created;
     Description   = description;
     Price         = price;
     NumberOfRooms = numberOfRooms;
     CityDistricts = cityDistricts.ToList().AsReadOnly();
 }
Beispiel #9
0
        private async Task <List <FlatForRentAnnouncementEntity> > FindFlatForRentAnnouncementEntitiesAsync(int?pageNumber, int?pageSize,
                                                                                                            string sort, Guid?cityId, DateTimeOffset?createdFrom, DateTimeOffset?createdTo, decimal?priceFrom, decimal?priceTo,
                                                                                                            Guid?cityDistrict, NumberOfRoomsEnumeration numberOfRooms)
        {
            var query = _cosmosStore.Query();

            if (!string.IsNullOrWhiteSpace(sort))
            {
                var orderByQuery = _orderByExpressionCreator.CreateExpression(sort);
                query = orderByQuery(query);
            }

            var filterPredicate = CreateFilterPredicate(cityId, createdFrom, createdTo, priceFrom, priceTo,
                                                        cityDistrict, numberOfRooms);

            query = filterPredicate != null?query.Where(filterPredicate) : query;

            if (pageNumber.HasValue && pageSize.HasValue)
            {
                query = query.WithPagination(pageNumber.Value, pageSize.Value);
            }

            return(await query.ToListAsync());
        }
Beispiel #10
0
        private static Expression <Func <FlatForRentAnnouncementEntity, bool> > CreateFilterPredicate(Guid?cityId, DateTimeOffset?createdFrom,
                                                                                                      DateTimeOffset?createdTo, decimal?priceFrom, decimal?priceTo, Guid?cityDistrict, NumberOfRoomsEnumeration numberOfRooms)
        {
            Expression <Func <FlatForRentAnnouncementEntity, bool> > filterPredicate = null;

            if (cityId.HasValue)
            {
                filterPredicate = x => x.CityId == cityId.Value;
            }
            if (createdFrom.HasValue)
            {
                filterPredicate = filterPredicate.AndAlso(x => x.Created >= createdFrom.Value);
            }
            if (createdTo.HasValue)
            {
                filterPredicate = filterPredicate.AndAlso(x => x.Created <= createdTo.Value);
            }
            if (priceFrom.HasValue)
            {
                filterPredicate = filterPredicate.AndAlso(x => x.Price >= priceFrom.Value);
            }
            if (priceTo.HasValue)
            {
                filterPredicate = filterPredicate.AndAlso(x => x.Price <= priceTo.Value);
            }
            if (numberOfRooms != null)
            {
                filterPredicate = filterPredicate.AndAlso(x => x.NumberOfRooms.ToString().Equals(numberOfRooms.DisplayName));
            }
            if (cityDistrict.HasValue)
            {
                filterPredicate = filterPredicate.AndAlso(x => x.CityDistricts.Contains(cityDistrict.Value));
            }

            return(filterPredicate);
        }
Beispiel #11
0
 public void ChangeNumberOfRooms(NumberOfRoomsEnumeration numberOfRooms)
 {
     NumberOfRooms = numberOfRooms;
 }
Beispiel #12
0
 public IFlatForRentAnnouncementBuilder SetNumberOfRooms(NumberOfRoomsEnumeration numberOfRooms)
 {
     NumberOfRooms = numberOfRooms;
     return(this);
 }