Web-сервисы: Сервис поиска

Материал из Megatec
Перейти к: навигация, поиск

Введение

Данный модуль предназначен для осуществления поиска и подбора туров из внешних приложений.

Установка

Для установки Поискового сервиса нужно создать директорию WebServices в каталоге c:/inetpub/wwwroot/MasterWeb и выложить туда распакованные файлы из архива mw-megatecwebservices-2007.2.XX.XXXX.zip. В управлении IIS необходимо создать виртуальный каталог для папки WebServices.

Создание виртуального каталога

По умолчанию корневым каталогом IIS является C:/Inetpub/wwwroot. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:

  • 1. Зайти в Пуск (Start) – Настройки (Settings) – Панель управления (Control Panel)


799.PNG

  • 2. В открывшемся окне выбрать Администрирование (Administrative Tools).


800.PNG

  • 3. Запустить Internet Information Services (IIS) Manager.


801.PNG

  • 4. В открывшемся дереве каталогов выбрать Web Sites – Default Web Site. В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и зайти в Свойства (Properties).


802.PNG

  • 5. В открывшемся окне, в закладке Directory нужно нажать кнопку «Create», а затем кнопку «ОК».


803.PNG

Подключение к базе данных ПК «Мастер-Тур»

В файле web.config, расположенном в папке WebServices пропишите необходимые параметры подключения (курсивом выделены значения, которые необходимо ввести). Строка подключения к базе данных ПК «Мастер-Тур»:

  • 1. <add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК Мастер-тур;Initial Catalog=название базы данных ПК Мастер-тур;User ID=логин пользователя ПК Мастер-тур;Password=пароль пользователя ПК Мастер-тур"/>
  • 2. <add key = "connectionStringShort" value = "Data Source= ip-адрес сервера базы данных ПК Мастер-Тур;Initial Catalog= название базы данных ПК Мастер-Тур;"/>

Настройка

После установки «Поисковый сервис» доступен по адресу http: //ip- адрес сервера Мастер-Веб/WebServices/Search.asmx.

Настройки web.config приложения ПК Мастер-Web

Дополнительные настройки, задаваемые в файле web.config, находящемся в папке MasterWeb позволяют задать дополнительные условия для отображения и проверки данных.

Описание

Значение

Настройка

1

Путь к приложению WebServices

Ссылка на приложение WebServices

<add key="webServicesSource" value="http: //localhost/MasterWeb/WebService"/>

Добавление секций

  • 1. В секции <ConfigSections> необходимо добавить подсекцию:
<sectionGroup name="Megatec.Web.Services">
<section name="servicesAccessibility" type="Megatec.Configuration.WebServicesSection, Megatec.Configuration"/>
</sectionGroup>
  • 2. На одном уровне с секцией <ConfigSections> необходимо добавить секцию:
<Megatec.Web.Services>
<servicesAccessibility Enabled="true">
<Services>
<add name="DoSearch" enabled="true"/>
</Services>
</servicesAccessibility>
</Megatec.Web.Services>

Подготовка данных

Описание класса SearchFilter

/// <summary>
    /// Поисковый фильтр
    /// </summary>
    public class SearchFilter
    {
        public enum SearchSource : short
        {
            PriceTables = 0,
            BindingTables = 1,
        }

        public enum KindOfTours : int
        {
            All = 0,
            PacketTours = 1,
            LandTours = 2
        }

        /// <summary>
        /// Вид тура 
        /// </summary>
        public KindOfTours KindOfToursMask
        {
            get
            {
                return this.kindOfTours;
            }
            set
            {
                this.kindOfTours = value;
            }
        }

        /// <summary>
        /// Маска аттрибутов тура
        /// </summary>
        public int TurListAttributeMask
        {
            get
            {
                return this.turlistAttributeMask;
            }
            set
            {
                this.turlistAttributeMask = value;
            }
        }

        /// <summary>
        /// Партнер по отелю
        /// </summary>
        public int HotelPartnerKey
        {
            get
            {
                return this.hotelPartnerKey;
            }
            set
            {
                this.hotelPartnerKey = value;
            }
        }

        [XmlAttribute]
        public int MaxChildAge
        {
            get
            {
                return this.maxChildAge;
            }
            set
            {
                this.maxChildAge = value;
            }
        }

        /// <summary>
        /// Интервал дат
        /// </summary>
        public DateInterval TurDateRange
        {
            get
            {
                return this._turDateRange;
            }
            set
            {
                this._turDateRange = value;
            }
        }

        /// <summary>
        /// Интервал продолжительностей
        /// </summary>
        public DurationInterval DurationRange
        {
            get
            {
                return this._durationRange;
            }
            set
            {
                this._durationRange = value;
            }
        }

        /// <summary>
        /// Ключ страны
        /// </summary>
        [XmlAttribute]
        public int CountryKey
        {
            get
            {
                if (this._countryKeys.Count == 0)
                    return -1;

                return (int)this._countryKeys[0];
            }
            set
            {
                this._countryKeys.Clear();
                if (value > 0)
                    this._countryKeys.Add(value);
            }
        }

        /// <summary>
        /// Массив ключей стран
        /// </summary>
        public ArrayList CountryKeys
        {
            get
            {
                return this._countryKeys;
            }
        }


        /// <summary>
        /// Поставлен ли флажок все авиакомпании
        /// </summary>
        [XmlAttribute]
        public bool IsAllAirlines
        {
            get
            {
                return this._isAllAirlines;
            }
            set
            {
                this._isAllAirlines = value;
            }
        }

        /// <summary>
        /// Поставлен ли флажок все страны
        /// </summary>
        [XmlAttribute]
        public bool IsAllCountries
        {
            get
            {
                return this._isAllCountries;
            }
            set
            {
                this._isAllCountries = value;
            }
        }

        /// <summary>
        /// Поиск на все продолжительности
        /// </summary>
        [XmlAttribute]
        public bool IsAllDurations
        {
            get
            {
                return this._isAllDurations;
            }
            set
            {
                this._isAllDurations = value;
            }
        }

        /// <summary>
        /// Массив продолжительностей
        /// </summary>
        public ArrayList Durations
        {
            get
            {
                return durations;
            }
        }

        [XmlAttribute]
        public bool ExcludeNoPlaces
        {
            get
            {
                return excludeNoPlaces;
            }
            set
            {
                excludeNoPlaces = value;
            }
        }

        /// <summary>
        /// Массив продолжительностей в днях
        /// </summary>
        public ArrayList Days
        {
            get
            {
                return days;
            }
        }

        /// <summary>
        /// Массив продолжительностей в ночах
        /// </summary>
        public ArrayList Nights
        {
            get
            {
                return nights;
            }
        }

        /// <summary>
        /// Проверять ли квоты
        /// </summary>
        [XmlAttribute]
        public bool CheckQuotes
        {
            get
            {
                return checkQuotes;
            }
            set
            {
                checkQuotes = value;
            }
        }

        /// <summary>
        /// Ключ города отправления
        /// </summary>
        [XmlAttribute]
        public int DepartFromKey
        {
            get
            {
                if (this._departFromKeys.Count == 0)
                    return -1;

                return (int)this._departFromKeys[0];
            }
            set
            {
                this._departFromKeys.Clear();
                if (value >= 0)
                    this._departFromKeys.Add(value);
            }
        }

        /// <summary>
        /// Ключ города прибытия
        /// </summary>
        [XmlAttribute]
        public int DepartToKey
        {
            get
            {
                if (this._departToKeys.Count == 0)
                    return -1;

                return (int)this._departToKeys[0];
            }
            set
            {
                this._departToKeys.Clear();
                if (value > 0)
                    this._departToKeys.Add(value);
            }
        }

        /// <summary>
        /// Массив ключей городов вылета
        /// </summary>
        public ArrayList DepartFromKeys
        {
            get
            {
                return this._departFromKeys;
            }
        }


        /// <summary>
        /// Поставлен ли флажок все города вылетов
        /// </summary>
        [XmlAttribute]
        public bool IsAllDepartsFrom
        {
            get
            {
                return this._isAllDepartsFrom;
            }
            set
            {
                this._isAllDepartsFrom = value;
            }
        }

        /// <summary>
        /// Массив ключей городов прибытия
        /// </summary>
        public ArrayList DepartToKeys
        {
            get
            {
                return this._departToKeys;
            }
        }


        /// <summary>
        /// Поставлен ли флажок все города вылетов
        /// </summary>
        [XmlAttribute]
        public bool IsAllDepartsTo
        {
            get
            {
                return this._isAllDepartsTo;
            }
            set
            {
                this._isAllDepartsTo = value;
            }
        }


        /// <summary>
        /// Массив ключей аэропортов вылета
        /// </summary>
        public ArrayList AirportFromKeys
        {
            get
            {
                return this._airportFromKeys;
            }
        }


        /// <summary>
        /// Поставлен ли флажок все города вылетов
        /// </summary>
        [XmlAttribute]
        public bool IsAllAirportsFrom
        {
            get
            {
                return this._isAllAirportsFrom;
            }
            set
            {
                this._isAllAirportsFrom = value;
            }
        }

        /// <summary>
        /// Массив ключей аэропортов прибытия
        /// </summary>
        public ArrayList AirportToKeys
        {
            get
            {
                return this._airportToKeys;
            }
        }


        /// <summary>
        /// Поставлен ли флажок все города вылетов
        /// </summary>
        [XmlAttribute]
        public bool IsAllAirportsTo
        {
            get
            {
                return this._isAllAirportsTo;
            }
            set
            {
                this._isAllAirportsTo = value;
            }
        }

        /// <summary>
        /// Ключ отеля
        /// </summary>
        [XmlAttribute]
        public int HotelKey
        {
            get
            {
                if (this._hotelKeys.Count == 0)
                    return -1;

                return (int)this._hotelKeys[0];
            }
            set
            {
                this._hotelKeys.Clear();
                if (value > 0)
                    this._hotelKeys.Add(value);
            }
        }
        /// <summary>
        /// Ключ тура
        /// </summary>
        [XmlAttribute]
        public int TourKey
        {
            get
            {
                return this._tourKey;
            }
            set
            {
                this._tourKey = value;
            }
        }
        /// <summary>
        /// Ограничение цены
        /// </summary>
        [XmlAttribute]
        public double PriceLimit
        {
            get
            {
                return this._priceLimit;
            }
            set
            {
                this._priceLimit = value;
            }
        }
        /// <summary>
        /// Список ключей курортов
        /// </summary>  
        public ArrayList ResortKeys
        {
            get
            {
                return this._resortKeys;
            }
        }

        /// <summary>
        /// Поставлен ли флажок все курорты
        /// </summary>
        [XmlAttribute]
        public bool IsAllResort
        {
            get
            {
                return this._isAllResort;
            }
            set
            {
                this._isAllResort = value;
            }
        }
        /// <summary>
        /// Список ключей городов
        /// </summary>
        public ArrayList CityKeys
        {
            get
            {
                return this._cityKeys;
            }
        }

        /// <summary>
        /// Установлен ли в фильтре флаг все города
        /// </summary>
        [XmlAttribute]
        public bool IsAllCity
        {
            get
            {
                return this._isAllCity;
            }
            set
            {
                this._isAllCity = value;
            }
        }

        /// <summary>
        /// Список ключей городов
        /// </summary>
        public ArrayList HotelKeys
        {
            get
            {
                return this._hotelKeys;
            }
        }

        /// <summary>
        /// Список ключей сервисов в отеле
        /// </summary>
        public ArrayList HotelOptionsKeys
        {
            get
            {
                return this._hotelOptionsKeys;
            }
        }

        /// <summary>
        /// Установлен ли в фильтре флаг все отели
        /// </summary>
        [XmlAttribute]
        public bool IsAllHotels
        {
            get
            {
                return this._isAllHotels;
            }
            set
            {
                this._isAllHotels = value;
            }
        }
        /// <summary>
        /// Список ключей типов туров
        /// </summary>
        public ArrayList TourTypeKeys
        {
            get
            {
                return this._tourTypeKeys;
            }
        }

        /// <summary>
        /// Установлен ли флаг все типы тура
        /// </summary>
        [XmlAttribute]
        public bool IsAllTourType
        {
            get
            {
                return this._isAllTourType;
            }
            set
            {
                this._isAllTourType = value;
            }
        }
        /// <summary>
        /// Список ключей типов туров
        /// </summary>
        public ArrayList TourTypeDetailKeys
        {
            get
            {
                return this._tourTypeDetailKeys;
            }
        }

        /// <summary>
        /// Установлен ли флаг все типы тура
        /// </summary>
        [XmlAttribute]
        public bool IsAllTourTypeDetails
        {
            get
            {
                return this._isAllTourTypeDetails;
            }
            set
            {
                this._isAllTourTypeDetails = value;
            }
        }
        /// <summary>
        /// Список звездностей отелей
        /// </summary>
        public ArrayList HotelStars
        {
            get
            {
                return this._hotelStars;
            }
        }

        /// <summary>
        /// Поиск по всем звездностям
        /// </summary>
        [XmlAttribute]
        public bool IsAllHotelStars
        {
            get
            {
                return this._isAllHotelStars;
            }
            set
            {
                this._isAllHotelStars = value;
            }
        }
        /// <summary>
        /// Список ключей питаний
        /// </summary>
        public ArrayList PansionKeys
        {
            get
            {
                return this._pansionKeys;
            }
        }

        /// <summary>
        /// Поиск по всем питаниях
        /// </summary>
        [XmlAttribute]
        public bool IsAllPansion
        {
            get
            {
                return this._isAllPansion;
            }
            set
            {
                this._isAllPansion = value;
            }
        }
        /// <summary>
        /// Список ключей авиакомпаний
        /// </summary>
        public ArrayList AirlineKeys
        {
            get
            {
                return this._airlineKeys;
            }
        }
        /// <summary>
        /// Список ключей типов номеров
        /// </summary>
        public ArrayList RoomKeys
        {
            get
            {
                return this.roomKeys;
            }
        }
        /// <summary>
        /// Список ключей категорий проживания
        /// </summary>
        public ArrayList RoomCategoryKeys
        {
            get
            {
                return this.roomCategoryKeys;
            }
        }
        /// <summary>
        /// Список ключей типов размещения
        /// </summary>
        public ArrayList AccomodationKeys
        {
            get
            {
                return this.accomodationKeys;
            }
        }
        /// <summary>
        /// Список ключей дополнительных услуг в отеле
        /// </summary>
        public ArrayList AddHotelServiceKeys
        {
            get
            {
                return this._addHotelServiceKeys;
            }
        }

        /// <summary>
        /// Поиск по все услугам в отеле
        /// </summary>
        [XmlAttribute]
        public bool IsAllAddHotelService
        {
            get
            {
                return this._isAllAddHotelService;
            }
            set
            {
                this._isAllAddHotelService = value;
            }
        }

        /// <summary>
        /// Искать только основные типы размещения
        /// </summary>
        [XmlAttribute]
        public bool MainOnly
        {
            get
            {
                return mainOnly;
            }
            set
            {
                mainOnly = value;
            }
        }

        /// <summary>
        /// Искать только туры для групп агентов, в которые входит данное агентство
        /// </summary>
        [XmlAttribute]
        public bool GroupOnly
        {
            get
            {
                return groupOnly;
            }
            set
            {
                groupOnly = value;
            }
        }

        /// <summary>
        /// Количество взрослых
        /// </summary>
        [XmlAttribute]
        public int Adults
        {
            get
            {
                return adults;
            }
            set
            {
                adults = value;
            }
        }

        /// <summary>
        /// Количество детей
        /// </summary>
        [XmlAttribute]
        public int Childs
        {
            get
            {
                return childs;
            }
            set
            {
                childs = value;
            }
        }

        /// <summary>
        /// Возраст первого ребенка
        /// </summary>
        [XmlAttribute]
        public int FirstChildAge
        {
            get
            {
                return firstChildAge;
            }
            set
            {
                firstChildAge = value;
            }
        }

        /// <summary>
        /// Возраст второго ребенка
        /// </summary>
        [XmlAttribute]
        public int SecondChildAge
        {
            get
            {
                return secondChildAge;
            }
            set
            {
                secondChildAge = value;
            }
        }

        /// <summary>
        /// Маска квот на проживание
        /// </summary>
        [XmlAttribute]
        public QuotaResult.Status HotelQuotaMask
        {
            get
            {
                return hotelQuotaMask;
            }
            set
            {
                hotelQuotaMask = value;
            }
        }

        /// <summary>
        /// Маска квот на перелет
        /// </summary>
        [XmlAttribute]
        public QuotaResult.Status AviaQuotaMask
        {
            get
            {
                return aviaQuotaMask;
            }
            set
            {
                aviaQuotaMask = value;
            }
        }

        /// <summary>
        /// Количество строк на странице
        /// </summary>
        [XmlAttribute]
        public int PageSize
        {
            get
            {
                return this.pageSize;
            }
            set
            {
                this.pageSize = value;
            }
        }

        /// <summary>
        /// Ограничение цены снизу
        /// </summary>
        [XmlAttribute]
        public double PriceMinimum
        {
            get
            {
                return this._priceMinimum;
            }
            set
            {
                this._priceMinimum = value;
                this.isNullPriceMinimum = false;
            }
        }

        /// <summary>
        /// Ограничена ли цена снизу
        /// </summary>
        [XmlAttribute]
        public bool IsNullPriceMinimum
        {
            get
            {
                return this.isNullPriceMinimum;
            }
            set
            {
                this.isNullPriceMinimum = value;
            }
        }

        /// <summary>
        /// Дополнительный фильтр
        /// </summary>
        [XmlAttribute]
        public string AddFilter
        {
            get
            {
                return addFilter;
            }
            set
            {
                addFilter = value;
            }
        }
    }
}