Web-сервисы: Сервис для получения информации по турам

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

Более ранние версии:
До версии ПК «Мастер-Web» 2009.2.20.21 включительно


Содержание

Введение

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

Установка

Для установки Сервиса для вывода информации по туру нужно создать отдельную директорию, например, TourInfo (далее в примерах будет использоваться данное название каталога) в корневом каталоге IIS (по умолчанию c:/inetpub/wwwroot) и выложить туда распакованные файлы из архива mw-ws-tourinfo-2007.2.XX.XXXX.zip. В управлении IIS необходимо создать виртуальный каталог для папки TourInfo.

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

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

  • 1. Зайти в Пуск (Start) – Панель управления (Control Panel) – Администрирование (Administrative Tools)


857.PNG

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


858.PNG

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


859.PNG

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

В файле web.config, расположенном в папке TourInfo, в которую установлен web-сервис «Сервис для получения информации по турам», пропишите необходимые параметры подключения (курсивом выделены значения, которые необходимо ввести). Строка подключения к базе данных ПК «Мастер-Тур»: <add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК Мастер-тур; Initial Catalog= название базы данных ПК Мастер-тур; User ID=логин пользователя ПК Мастер-тур; Password=пароль пользователя ПК Мастер-тур"/>

Настройка

После установки «Сервис для получения информации по турам» доступен по адресу: http://ip-адрес сервера Мастер-Веб/TourInfo/FullTourInfoService.asmx

Настройка web.config

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

Для того, что бы в методе GetTourInfo помимо услуг, включенных в тур, отобразить услуги, прикрепленные к одному ценовому пакету, необходимо добавить настройку IncludedServiceClasses, где указать через запятые ключи классов услуг.

<add key="includedServiceClasses" value="1,4"/>

Необходимо, чтобы секция dynamicCharterClasses была одинаково настроена и в web.config самого сервиса, и в web.config основного приложения ПК Мастер-Web, если они настроены на одну базу.

Настройка кэширования

Для ускоренного получения информации по турам используется механизм кэширования.

Кэшируются туры, даты заездов, услуги, курсы валют, цены.

Для включения механизма необходимо добавить внутрь секции <sectionGroup name="megatec.web"> следующие теги:

<sectionGroup name="cache">
       <section name="cachingDurations" type="System.Configuration.NameValueSectionHandler" />
</sectionGroup>

А также добавить внутрь контейнера <megatec.web> следующие теги:

<cache>
   <cachingDurations>
       <add key="extendedTourInfoCacheInterval" value="600"/>
   </cachingDurations>
</cache>

В настройке extendedTourInfoCacheInterval задается время обновление кэша информации по турам (в секундах);

ВАЖНО! Указывать временной интервал кэширования не менее часа.

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

Описание формата данных

GetCountries

Параметр:token Значение:пустая строка

Результат
  • ArrayOfCountry
    • Country
      • CountryID – идентификационный номер страны
      • Name – название страны

GetTourTypes

Параметр:token Значение:пустая строка

Результат
  • ArrayOfTourType
    • TourType
      • TourTypeID – идентификационный номер типа тура
      • Name – название типа тура

GetTours

Параметр:token Значение:пустая строка
Параметр:beginDate Значение:дата, начиная с которой выбирать туры (дата создания тура) в формате «yyyy-MM-dd»

Результат

  • ArrayOfTourInfo
    • TourInfo
      • TourID – идентификационный номер тура
      • TourPriceID - идентификационный номер стоимости тура
      • Name – название тура
      • TypeID – идентификационный номер типа тура
      • URL – url страницы с описанием тура
      • CreatedDate – дата создания тура (формат «yyyy-MM-ddThh:mm:ss»)
      • ValidFrom – действителен с
      • ValidTo – дейстивтелен по
      • Code – код тура
      • CountryID – идентификационный номер страны

GetTourInfo

Параметр:token Значение:пустая строка
Параметр:tourKey Значение:идентификационный номер тура
Параметр:beginDate Значение:дата начиная с которой выдавать информацию в формате «yyyy-MM-dd»

Результат
  • ExtendedTourInfo
    • TourID – идентификационный номер тура
    • TourPriceID - идентификационный номер стоимости тура
    • Name – название тура
    • TypeID – идентификационный номер типа тура
    • URL – url страницы с описанием тура
    • CreatedDate – дата создания тура (формат «yyyy-MM-ddThh:mm:ss»)
    • ValidFrom – действителен с
    • ValidTo – дейстивтелен по
    • Code – код тура
    • CountryID – идентификационный номер страны
    • TourByDateInfos
      • TourByDateInfo
  • Date – дата заезда
  • TourCosts
    • TourCosts
      • TourCost
  • AccomodationType – тип размещения
  • Cost – стоимость
  • Currency – валюта
  • ServicesCosts
    • ServiceCost
      • ServiceName – назавние услуги
      • Cost – стоимость услуги
      • Currency – валюта
      • TransportKey – ключ транспорта (-1, если услуга не подразвумевает схему размещения в транспорте)
      • ServiceID – идентификационный номер услуги
  • PlacesCount - количество мест в квоте по отелю (-1, если квоты не заведены)

GetBusyBusPlan

Параметр:token Значение:пустая строка
Параметр:tourKey Значение:идентификационный номер тура
Параметр:tourDate Значение:дата начиная с которой выдавать информацию в формате «yyyy-MM-dd»

Результат

  • BusPlan
    • TransportKey – идентификационный номер траспортного средства
    • Title – название транспортного средства
    • AreasCount – количество зон (автобусов)
    • RowsCount – количество рядов
    • ColumnsCount – количество мест в ряду
    • Cells
      • BusPlanCell
        • Row – горизонтальная составляющая координаты места
        • Column – вертикальная составляющая координаты места
        • Area – зона (номер автобуса)
        • BusPlanCellType – тип места (None, Comment - комментарий, Gangway – проход, Seat – пассажирское место)
        • IsUsed – true – место занято, иначе - false

Работа в системе

Метод получения списка стран (GetCountries)

Пример SOAP-запроса к сервису:
POST /tourinfo/FullTourInfoService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://megatec.ru/GetCountries"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetCountries xmlns="http://megatec.ru/">
      <token>string</token>
    </GetCountries>
  </soap:Body>
</soap:Envelope>
Пример SOAP-ответа сервиса
<?xml version="1.0" encoding="UTF-8"?>
-<ArrayOfCountry xmlns="http://megatec.ru/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   -<Country>
       <CountryID>90</CountryID>
       <Name>Австрия</Name>
    </Country>
   -<Country>
       <CountryID>222</CountryID>
       <Name>Англия</Name>
    </Country>
   -<Country>
       <CountryID>376</CountryID>
       <Name>Андорра</Name>
    </Country>
   -<Country>
       <CountryID>2</CountryID>
       <Name>Арабск. Эмираты</Name>
    </Country>
   -<Country>
       <CountryID>375</CountryID>
       <Name>Беларусь</Name>
    </Country>
 </ArrayOfCountry>


Метод получения списка типов тура (GetTourTypes)

Пример SOAP-запроса к сервису
POST /tourinfo/FullTourInfoService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://megatec.ru/GetTourTypes"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetTourTypes xmlns="http://megatec.ru/">
      <token>string</token>
    </GetTourTypes>
  </soap:Body>
</soap:Envelope>
Пример SOAP-ответа сервиса
 <?xml version="1.0" encoding="UTF-8"?>
-<ArrayOfTourType xmlns="http://megatec.ru/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   -<TourType>
       <TourTypeID>12</TourTypeID>
       <Name>Excursions_Optional</Name>
    </TourType>
   -<TourType>
       <TourTypeID>13</TourTypeID>
       <Name>Excursions_Required</Name>
    </TourType>
   -<TourType>
       <TourTypeID>14</TourTypeID>
       <Name>ExtraServices_Optional</Name>
    </TourType>
   -<TourType>
       <TourTypeID>15</TourTypeID>
       <Name>ExtraServices_Required</Name>
    </TourType>
 </ArrayOfTourType>


Метод получения списка туров (GetTours)

Пример SOAP-запроса к сервису
POST /tourinfo/FullTourInfoService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://megatec.ru/GetTours"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetTours xmlns="http://megatec.ru/">
      <token>string</token>
      <beginDate>string</beginDate>
    </GetTours>
  </soap:Body>
</soap:Envelope> 
Пример SOAP-ответа сервиса
<?xml version="1.0" encoding="UTF-8"?>
-<ArrayOfTourInfo xmlns="http://megatec.ru/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   -<TourInfo>
       <TourID>412</TourID>
       <TourPriceID>493</TourPriceID>
       <Name>0507 ПЭ</Name>
       <TypeID>0</TypeID>
       <URL/>
       <CreatedDate>2016-10-27T17:32:27.353</CreatedDate>
       <ValidFrom>2016-10-27T00:00:00</ValidFrom>
       <ValidTo>2016-12-27T00:00:00</ValidTo>
       <Code>0507</Code>
       <CountryID>90</CountryID>
    </TourInfo>
   -<TourInfo>
       <TourID>250</TourID>
       <TourPriceID>509</TourPriceID>
       <Name>Тур 18-05</Name>
       <TypeID>0</TypeID>
       <URL/>
       <CreatedDate>2016-10-31T10:20:52.23</CreatedDate>
       <ValidFrom>2016-10-31T11:18:00</ValidFrom>
       <ValidTo>2016-12-28T00:00:00</ValidTo>
       <Code>Тур</Code>
       <CountryID>90</CountryID>
    </TourInfo>
   -<TourInfo>
       <TourID>259</TourID>
       <TourPriceID>525</TourPriceID>
       <Name>Тур для ПЭ</Name>
       <TypeID>10</TypeID>
       <URL/>
       <CreatedDate>2016-11-07T12:46:35.81</CreatedDate>
       <ValidFrom>2016-11-03T00:00:00</ValidFrom>
       <ValidTo>2016-12-29T00:00:00</ValidTo>
       <Code>Тур</Code>
       <CountryID>222</CountryID>
    </TourInfo>
 </ArrayOfTourInfo>


Метод получения детализации по туру (GetTourInfo)

Пример SOAP-запроса к сервису
POST /tourinfo/FullTourInfoService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://megatec.ru/GetTourInfo"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetTourInfo xmlns="http://megatec.ru/">
      <token>string</token>
      <tourKey>int</tourKey>
      <beginDate>string</beginDate>
    </GetTourInfo>
  </soap:Body>
</soap:Envelope>
Пример SOAP-ответа сервиса
<?xml version="1.0" encoding="UTF-8"?>
-<ExtendedTourInfo xmlns="http://megatec.ru/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <TourID>280</TourID>
   <TourPriceID>536</TourPriceID>
   <Name>ang</Name>
   <TypeID>2</TypeID>
   <URL/>
   <CreatedDate>2016-11-15T11:45:55.81</CreatedDate>
   <ValidFrom>2016-11-15T11:44:00</ValidFrom>
   <ValidTo>2016-11-28T00:00:00</ValidTo>
   <Code>ang</Code>
   <CountryID>222</CountryID>
  -<TourByDateInfos>
     -<TourByDateInfo>
         <Date>2016-11-16T00:00:00</Date>
        -<TourCosts>
           -<TourCost>
               <PriceKey>512216</PriceKey>
               <AccomodationType>R1 (Luxe) 2AD</AccomodationType>
               <Cost>348</Cost>
               <Currency>$</Currency>
              -<ServicesCosts>
                 -<ServiceCost>
                     <ServiceName>HOTEL::Лондон/Четвертый-4*,2 ночи/R1(Luxe),2AD/test/</ServiceName>
                     <Cost>200</Cost>
                     <Currency>$</Currency>
                     <TransportKey>-1</TransportKey>
                     <ServiceID>10312861</ServiceID>
                     <ServiceVariants/>
                  </ServiceCost>
                 -<ServiceCost>
                     <ServiceName>HOTEL::Лондон/Первый-5*,1 ночь/Single(Garden View ),1AD/FB Пансион/</ServiceName>
                     <Cost>20</Cost>
                     <Currency>$</Currency>
                     <TransportKey>-1</TransportKey>
                     <ServiceID>10312862</ServiceID>
                     <ServiceVariants/>
                  </ServiceCost>
                 -<ServiceCost>
                     <ServiceName>HOTEL::Лондон/Тестовый отель 2-1*,1 ночь/Двухместный номер(Standart),2A!/BB Завтрак буфет/</ServiceName>
                     <Cost>30</Cost>
                     <Currency>$</Currency>
                     <TransportKey>-1</TransportKey>
                     <ServiceID>10312863</ServiceID>
                     <ServiceVariants/>
                  </ServiceCost>
                 -<ServiceCost>
                     <ServiceName>Трансфер::Лондон//автобус,20 чел./</ServiceName>
                     <Cost>78</Cost>
                     <Currency>$</Currency>
                     <TransportKey>3</TransportKey>
                     <ServiceID>10312864</ServiceID>
                     <ServiceVariants/>
                  </ServiceCost>
                 -<ServiceCost>
                     <ServiceName>Аренда автомобиля::Англия/BMW/</ServiceName>
                     <Cost>20</Cost>
                     <Currency>$</Currency>
                     <TransportKey>-1</TransportKey>
                     <ServiceID>10312865</ServiceID>
                     <ServiceVariants/>
                  </ServiceCost>
               </ServicesCosts>
               <PlacesCount>-1</PlacesCount>
            </TourCost>
         </TourCosts>
      </TourByDateInfo>
   </TourByDateInfos>
</ExtendedTourInfo>


Метод получения детализации по плану рассадки (GetBusyBusPlan)

Пример SOAP-запроса к сервису
POST /tourinfo/FullTourInfoService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://megatec.ru/GetTourInfo"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetTourInfo xmlns="http://megatec.ru/">
      <token>string</token>
      <tourKey>int</tourKey>
      <tourDate>string</tourDate >
    </GetTourInfo>
  </soap:Body>
</soap:Envelope>
Пример SOAP-ответа сервиса
<?xml version="1.0" encoding="UTF-8"?>
-<BusPlan xmlns="http://megatec.ru/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <TransportKey>3</TransportKey>
   <Title>автобус</Title>
   <AreasCount>1</AreasCount>
   <RowsCount>4</RowsCount>
   <ColumnsCount>2</ColumnsCount>
  -<Cells>
      -<BusPlanCell>
          <IsUsed>false</IsUsed>
          <Row>0</Row>
          <Column>0</Column>
          <Area>0</Area>
          <BusPlanCellType>Comment</BusPlanCellType>
          <Name>Гид</Name>
       </BusPlanCell>
      -<BusPlanCell>
          <IsUsed>false</IsUsed>
          <Row>0</Row>
          <Column>1</Column>
          <Area>0</Area>
          <BusPlanCellType>Gangway</BusPlanCellType>
          <Name/>
       </BusPlanCell>
      -<BusPlanCell>
          <IsUsed>false</IsUsed>
          <Row>1</Row>
          <Column>0</Column>
          <Area>0</Area>
          <BusPlanCellType>Seat</BusPlanCellType>
          <Name>6</Name>
       </BusPlanCell>
      -<BusPlanCell>
          <IsUsed>false</IsUsed>
          <Row>1</Row>
          <Column>1</Column>
          <Area>0</Area>
          <BusPlanCellType>Gangway</BusPlanCellType>
          <Name/>
       </BusPlanCell>
      -<BusPlanCell>
          <IsUsed>false</IsUsed>
          <Row>2</Row>
          <Column>0</Column>
          <Area>0</Area>
          <BusPlanCellType>Seat</BusPlanCellType>
          <Name>10</Name>
       </BusPlanCell>
      -<BusPlanCell>
          <IsUsed>false</IsUsed>
          <Row>2</Row>
          <Column>1</Column>
          <Area>0</Area>
          <BusPlanCellType>None</BusPlanCellType>
          <Name/>
       </BusPlanCell>
      -<BusPlanCell>
          <IsUsed>false</IsUsed>
          <Row>3</Row>
          <Column>0</Column>
          <Area>0</Area>
          <BusPlanCellType>Seat</BusPlanCellType>
          <Name>7</Name>
       </BusPlanCell>
      -<BusPlanCell>
          <IsUsed>false</IsUsed>
          <Row>3</Row>
          <Column>1</Column>
          <Area>0</Area>
          <BusPlanCellType>None</BusPlanCellType>
          <Name/>
       </BusPlanCell>
   </Cells>
 </BusPlan>