/// <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); }
public BookInfo(AviaSuppliers supplier, string locator) { Supplier = supplier; Locator = locator; }