示例#1
0
        /// <summary>
        /// Найти объекты недвижимости.
        /// </summary>
        /// <param name="options">Параметры поиска.</param>
        /// <returns>Найденные объекты недвижимости.</returns>
        public IEnumerable <IRealtyObject> FindByParams(
            RealtyObjectSearchOptions options)
        {
            if (options == null)
            {
                return(this.GetAll());
            }

            RealtyObjectsFinder finder = new RealtyObjectsFinder(
                options,
                this.Context.RealtyObjects);

            ICollection <RealtyObject> rawResult = finder.Find();

            return(rawResult.Select(robj =>
                                    new RealtyObjectWrap(robj, this.Context)));
        }
示例#2
0
        /// <summary>
        /// Создать экземпляр класса поиска объектов недвижимости.
        /// </summary>
        /// <param name="options">Параметры поиска.</param>
        /// <param name="initialQuery">Исходный запрос
        /// (например, все объекты).</param>
        internal RealtyObjectsFinder(
            RealtyObjectSearchOptions options,
            IQueryable <RealtyObject> initialQuery)
        {
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            if (initialQuery == null)
            {
                throw new ArgumentNullException("initialQuery");
            }

            if (string.IsNullOrWhiteSpace(options.RealtyObjectType))
            {
                throw new InvalidOperationException(
                          "В параметрах поиска не указан тип объектов.");
            }

            this.options      = options;
            this.initialQuery = initialQuery;
        }
示例#3
0
        /// <summary>
        /// Метод обработки запроса GET с параметрами поиска.
        /// </summary>
        /// <param name="minCost">Минимальная стоимость.</param>
        /// <param name="maxCost">Максимальная стоимость.</param>
        /// <param name="partOfAddress">Часть адреса.</param>
        /// <param name="realtyObjectType">Имя типа объектов недвижимости.</param>
        /// <param name="minDate">Минимальная дата.</param>
        /// <param name="maxDate">Максимальная дата.</param>
        /// <returns>Объекты недвижимости, удовлетворяющие условиям поиска.</returns>
        /// <remarks>Пример запроса:
#pragma warning disable 1570
        /// GET api/v1/RealtyObjects?minCost=2&maxCost=35&partOfAddress=Ленина&realtyObjectType=Квартиры&minDate=5.11.16&maxDate=10.11.16</remarks>
#pragma warning restore 1570
        public IEnumerable <IRealtyObject> Get(
            int minCost,
            int maxCost,
            string partOfAddress,
            string realtyObjectType,
            DateTime minDate,
            DateTime maxDate)
        {
            this.AuthorizeUserToReadData(
                RealtyObjectsController.DontHaveRightsToRead);

            RealtyObjectSearchOptions options =
                new RealtyObjectSearchOptions()
            {
                MinCost          = minCost,
                MaxCost          = maxCost,
                PartOfAddress    = partOfAddress,
                RealtyObjectType = realtyObjectType,
                MinDate          = minDate,
                MaxDate          = maxDate
            };

            return(this.realtyObjects.FindByParams(options));
        }