/// <summary>
        /// Попытка заполнения объекта данными из SSR DOCS строки
        /// </summary>
        /// <param name="docsString">SSR DOCS строка</param>
        /// <param name="supplier">Поставщик, из которого была получена SSR DOCS строка</param>
        public static bool TryCreateDocumentInfoDataItem(string docsString, AviaSuppliers supplier, out DocumentInfoDataItem document)
        {
            document = null;

            if (!docsFormatRegex.IsMatch(docsString))
            {
                return(false);
            }

            //ибо только Сэйбр на данный момент добавляет в SSR строку статус SSRки
            var index     = supplier == AviaSuppliers.Sabre ? 1 : 0;
            var docsParts = docsString.Split('/');

            document = new DocumentInfoDataItem();

            document.Type             = (DocTypes)Enum.Parse(typeof(DocTypes), docsParts[index]);
            document.IssueCountryCode = docsParts[index + 1];
            document.Number           = docsParts[index + 2];

            var elapsedTime = DateTime.Parse(docsParts[index + 6], Locale.UsCulture);

            if (elapsedTime < DateTime.Now)
            {
                elapsedTime = elapsedTime.AddYears(100);
            }
            document.ElapsedTime = new DateTimeEx(elapsedTime, Formats.DATE_FORMAT);

            document.AddedAsDOCS = true;

            return(true);
        }
		/// <summary>
		/// Создание нового объекта с заполнением значений на основании SSR DOCA строки
		/// </summary>
		/// <param name="docaString">SSR DOCA строка</param>
		/// <param name="supplier">Поставщик, из которого получена строка с данными. Определяет порядок следования данных в строке</param>
		public ArrivalAddressDataItem(string docaString, AviaSuppliers? supplier = null)
		{
			var tmp = docaString.Split('/');
			int i = 1;
			//ибо только Сэйбр на данный момент добавляет в SSR строку статус SSRки
			if (supplier.HasValue && supplier.Value == AviaSuppliers.Sabre)
			{
				i = 2;
			}

			if (tmp.Length > i)
			{
				CountryCode = tmp[i];
			}
			if (tmp.Length > i + 1)
			{
				StreetAddress = tmp[i + 1];
			}
			if (tmp.Length > i + 2)
			{
				City = tmp[i + 2];
			}
			if (tmp.Length > i + 3)
			{
				State = tmp[i + 3];
			}
			if (tmp.Length > i + 4)
			{
				PostalCode = tmp[i + 4];
			}
		}
		/// <summary>
		/// Создание объекта класса с заполнением данных на основании SSR DOCO строки
		/// </summary>
		/// <param name="docoString">SSR DOCO строка</param>
		/// <param name="supplier">Поставщик, из которого была получена SSR DOCS строка</param>
		public VisaInformation(string docoString, AviaSuppliers? supplier = null)
		{
			var tmp = docoString.Split('/');
			int i = 0;
			//ибо только Сэйбр на данный момент добавляет в SSR строку статус SSRки
			if (supplier.HasValue && supplier.Value == AviaSuppliers.Sabre)
			{
				i = 1;
			}

			var birthPlace = tmp[i].Split(' ');
			if (birthPlace.Length > 1)
			{
				if (birthPlace[0].Length == 2)
				{
					BirthCountry = birthPlace[0];
					BirthCity = tmp[i].Replace(BirthCountry + " ", "");
				}
				else
				{
					BirthCountry = birthPlace[1];
					BirthCity = tmp[i].Replace(" " + BirthCountry, "");
					
				}
			}
			else
			{
				if (tmp[i].Length == 2)
				{
					BirthCountry = tmp[i];
					BirthCity = "";
				}
				else
				{
					BirthCity = tmp[i];
					BirthCountry = "";
				}
			}

			Number = tmp[i + 2];
			IssuePlace = tmp[i + 3];
			DateTime issueDate;
			if (DateTime.TryParseExact(tmp[i + 4], Formats.EDIFACT_DATE_FORMAT, Locale.UsCulture, System.Globalization.DateTimeStyles.None, out issueDate))
			{
				IssueDate = issueDate.ToString(Formats.DATE_FORMAT);
			}
			else if (DateTime.TryParseExact(tmp[i + 4], Formats.SHORT_EDIFACT_DATE_FORMAT, Locale.UsCulture, System.Globalization.DateTimeStyles.None, out issueDate))
			{
				IssueDate = issueDate.ToString(Formats.DATE_FORMAT);
			}
			IssueCountry = tmp[i + 5];
		}
        /// <summary>
        /// Преобразует строку типа SSR DOCO в объект VisaDataItem и возвращает значение,
        /// позволяющее определить успешность преобразования.
        /// </summary>
        /// <param name="docoString">Строка SSR DOCO.</param>
        /// <param name="supplier">Поставщик.</param>
        /// <param name="visa">Новый объект </param>
        /// <returns>Значение true, если параметр docoString успешно преобразован; в противном случае — значение false.</returns>
        public static bool TryParseVisa(string docoString, AviaSuppliers supplier, out VisaDataItem visa)
        {
            visa = new VisaDataItem();

            try
            {
                visa = new VisaDataItem(docoString, supplier);
                return(true);
            }
            catch
            {
                return(false);
            }
        }
		/// <summary>
		/// Создание объекта класса с заполнением данных на основании SSR DOCO строки
		/// </summary>
		/// <param name="docoString">SSR DOCO строка</param>
		/// <param name="supplier">Поставщик, из которого была получена SSR DOCS строка</param>
		public VisaDataItem(string docoString, AviaSuppliers? supplier = null)
		{
			var tmp = docoString.Split('/');
			int i = 0;
			//ибо только Сэйбр на данный момент добавляет в SSR строку статус SSRки
			if (supplier.HasValue && supplier.Value == AviaSuppliers.Sabre)
			{
				i = 1;
			}

			BirthPlace = tmp[i];
			Number = tmp[i + 2];
			IssuePlace = tmp[i + 3];
			IssueDate = new DateTimeEx(tmp[i + 4], Formats.DATE_FORMAT);
			ApplicableCountry = tmp[i + 5];
		}
		/// <summary>
		/// Создание нового объекта и заполнение его данными из SSR DOCS строки
		/// </summary>
		/// <param name="docsString">SSR DOCS строка</param>
		/// <param name="supplier">Поставщик, из которого была получена SSR DOCS строка</param>
		public DocumentInformation(string docsString, AviaSuppliers? supplier = null)
		{
			int index = 0;
			//ибо только Сэйбр на данный момент добавляет в SSR строку статус SSRки
			if (supplier.HasValue && supplier.Value == AviaSuppliers.Sabre)
			{
				index = 1;
			}
			var tmp = docsString.Split('/');

			DocType = (DocTypes)Enum.Parse(typeof(DocTypes), tmp[index]);
			DocNum = tmp[index + 2];
			CountryCode = tmp[index + 1];

			var tmpElapsedDate = DateTime.Parse(tmp[index + 6], Locale.UsCulture);
			if (tmpElapsedDate < DateTime.Now)
			{
				tmpElapsedDate = tmpElapsedDate.AddYears(100);
			}
			DocElapsedTime = tmpElapsedDate.ToString(Formats.DATE_FORMAT);
		}
Beispiel #7
0
 public BookInfo(AviaSuppliers supplier, string locator)
 {
     Supplier = supplier;
     Locator  = locator;
 }