Web-сервисы: Сервис поиска
Содержание
Введение
Данный модуль предназначен для осуществления поиска и подбора туров из внешних приложений.
Установка
Для установки Поискового сервиса нужно создать директорию WebServices в каталоге c:/inetpub/wwwroot/MasterWeb и выложить туда распакованные файлы из архива mw-megatecwebservices-2007.2.XX.XXXX.zip. В управлении IIS необходимо создать виртуальный каталог для папки WebServices.
Создание виртуального каталога
По умолчанию корневым каталогом IIS является C:/Inetpub/wwwroot. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:
- 1. Зайти в Пуск (Start) – Настройки (Settings) – Панель управления (Control Panel)
- 2. В открывшемся окне выбрать Администрирование (Administrative Tools).
- 3. Запустить Internet Information Services (IIS) Manager.
- 4. В открывшемся дереве каталогов выбрать Web Sites – Default Web Site. В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и зайти в Свойства (Properties).
- 5. В открывшемся окне, в закладке Directory нужно нажать кнопку «Create», а затем кнопку «ОК».
Подключение к базе данных ПК «Мастер-Тур»
В файле 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; } } } }