{"version":3,"sources":["./node_modules/ngx-bootstrap/chronos/moment/calendar.js","./node_modules/ngx-bootstrap/chronos/moment/diff.js","./node_modules/ngx-bootstrap/chronos/moment/min-max.js","./node_modules/ngx-bootstrap/chronos/test/chain.js","./node_modules/ngx-bootstrap/chronos/units/timezone.js","./src/app/shared/animations/collapse-animation.ts","./src/app/travel-products/product-confirmation/product-confirmation.component.html","./src/app/travel-products/product-confirmation/product-confirmation.component.ts","./src/app/travel-products/product-info/product-info.component.ts","./src/app/travel-products/product-passenger-details/addons/addons.component.html","./src/app/travel-products/product-passenger-details/addons/addons.component.ts","./src/app/travel-products/product-passenger-details/express-and-travel-pass-passenger-details.component.html","./src/app/travel-products/product-passenger-details/express-and-travel-pass-passenger-details.component.ts","./src/app/travel-products/product-passenger-details/km-pass/km-pass.component.html","./src/app/travel-products/product-passenger-details/km-pass/km-pass.component.ts","./src/app/travel-products/product-passenger-details/loyalty-details/loyalty-details.component.html","./src/app/travel-products/product-passenger-details/loyalty-details/loyalty-details.component.ts","./src/app/travel-products/product-passenger-details/loyalty-program-list/loyalty-program-list.component.html","./src/app/travel-products/product-passenger-details/loyalty-program-list/loyalty-program-list.component.ts","./src/app/travel-products/product-passenger-details/my-greyhound-login/my-greyhound-login.component.html","./src/app/travel-products/product-passenger-details/my-greyhound-login/my-greyhound-login.component.ts","./src/app/travel-products/product-passenger-details/passenger-details-selector/passenger-detail-wrapper.component.html","./src/app/travel-products/product-passenger-details/passenger-details-selector/passenger-detail-wrapper.component.ts","./src/app/travel-products/product-passenger-details/passenger-details-selector/passenger-details-selector.component.html","./src/app/travel-products/product-passenger-details/passenger-details-selector/passenger-details-selector.component.ts","./src/app/travel-products/product-passenger-details/passenger-details/passenger-details.component.html","./src/app/travel-products/product-passenger-details/passenger-details/passenger-details.component.ts","./src/app/travel-products/product-passenger-details/passenger-options/fare-type/fare-type.component.ts","./src/app/travel-products/product-passenger-details/passenger-options/passenger-options.component.html","./src/app/travel-products/product-passenger-details/passenger-options/passenger-options.component.ts","./src/app/travel-products/product-passenger-details/product-passenger-details.component.html","./src/app/travel-products/product-passenger-details/product-passenger-details.component.ts","./src/app/travel-products/product-passenger-details/promo-code/promo-code.component.html","./src/app/travel-products/product-passenger-details/promo-code/promo-code.component.ts","./src/app/travel-products/products-search/products-search.component.ts","./src/app/travel-products/products-search/travel-product-detail/travel-product-detail.component.less","./src/app/travel-products/products-search/travel-product-detail/travel-product-detail.component.ts","./src/app/travel-products/travel-products.module.ts","./src/app/travel-products/validate-onblur.directive.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAe;AACW;AACK;AACX;AACF;AACG;AACD;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uFAAsB;AAClD,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA,+CAA+C,2BAA2B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;;;;;;;;;AC1CwC;AACrB;AACa;AACA;AAClB;AACM;AACpB;AACA,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gC;;;;;;;;;;;ACtEA;AAAA;AACA;AACA;AACA;AACA;AAC+B;AACH;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA,mC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AAAA;AACwB;AACoE;AACA;AACxE;AACqF;AACpF;AACQ;AAC4F;AACjF;AACsC;AACxD;AACuG;AAC1E;AACyD;AACnF;AACQ;AACI;AACF;AACpB;AACI;AACgD;AAChD;AACE;AACM;AACF;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gCAAgC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAA6C,yBAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA,8BAA8B,sBAAsB,EAAE;AACtD,8BAA8B,sBAAsB,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA,8BAA8B,sBAAsB,EAAE;AACtD,8BAA8B,sBAAsB,EAAE;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD,+BAA+B,eAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sGAA8C,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,mBAAmB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sGAAmC,0CAA0C;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,2GAAmD,EAAE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,yCAAyC,uCAAuC,EAAE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+HAA0D,2CAA2C;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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","file":"travel-products.module.chunk.js","sourcesContent":["import { diff } from './diff';\nimport { cloneWithOffset } from '../units/offset';\nimport { isFunction, isString } from '../utils/type-checks';\nimport { cloneDate } from '../create/clone';\nimport { startOf } from '../utils/start-end-of';\nimport { formatDate } from '../format';\nimport { getLocale } from '../locale/locales';\nexport function getCalendarFormat(date, now, config) {\n var _diff = diff(date, now, 'day', true, config);\n switch (true) {\n case _diff < -6: return 'sameElse';\n case _diff < -1: return 'lastWeek';\n case _diff < 0: return 'lastDay';\n case _diff < 1: return 'sameDay';\n case _diff < 2: return 'nextDay';\n case _diff < 7: return 'nextWeek';\n default: return 'sameElse';\n }\n}\nexport function calendar(date, time, formats, locale, config) {\n if (locale === void 0) { locale = getLocale(); }\n if (config === void 0) { config = {}; }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time;\n var sod = startOf(cloneWithOffset(now, date, config), 'day', config._isUTC);\n var format = getCalendarFormat(date, sod, { _isUTC: true, _offset: 0 }) || 'sameElse';\n var output;\n if (formats) {\n var _format = formats[format];\n if (isString(_format)) {\n output = _format;\n }\n if (isFunction(_format)) {\n output = _format.call(null, date, now);\n }\n }\n if (!output) {\n output = locale.calendar(format, date, cloneDate(now));\n }\n return formatDate(date, output, config._locale._abbr, config._isUTC, config._offset);\n}\n//# sourceMappingURL=calendar.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ngx-bootstrap/chronos/moment/calendar.js\n// module id = ./node_modules/ngx-bootstrap/chronos/moment/calendar.js\n// module chunks = travel-products.module","import { cloneWithOffset, getUTCOffset } from '../units/offset';\nimport { absFloor } from '../utils';\nimport { isDateValid, isNumber } from '../utils/type-checks';\nimport { getFullYear, getMonth } from '../utils/date-getters';\nimport { add } from './add-subtract';\nimport { cloneDate } from '../create/clone';\nexport function diff(date, input, units, asFloat, config) {\n if (config === void 0) { config = {}; }\n if (!isDateValid(date)) {\n return NaN;\n }\n var that = cloneWithOffset(input, date, config);\n if (!isDateValid(that)) {\n return NaN;\n }\n // const zoneDelta = (getUTCOffset(input, dateConfig) - getUTCOffset(date, dateConfig)) * 6e4;\n var zoneDelta = isNumber(config._zoneDelta)\n ? config._zoneDelta * 6e4\n : (getUTCOffset(input, config) - getUTCOffset(date, config)) * 6e4;\n var output;\n switch (units) {\n case 'year':\n output = monthDiff(date, that) / 12;\n break;\n case 'month':\n output = monthDiff(date, that);\n break;\n case 'quarter':\n output = monthDiff(date, that) / 3;\n break;\n case 'seconds':\n output = (date.valueOf() - that.valueOf()) / 1e3;\n break; // 1000\n case 'minutes':\n output = (date.valueOf() - that.valueOf()) / 6e4;\n break; // 1000 * 60\n case 'hours':\n output = (date.valueOf() - that.valueOf()) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (date.valueOf() - that.valueOf() - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (date.valueOf() - that.valueOf() - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = date.valueOf() - that.valueOf();\n }\n return asFloat ? output : absFloor(output);\n}\nfunction monthDiff(a, b) {\n // difference in months\n var wholeMonthDiff = ((getFullYear(b) - getFullYear(a)) * 12) + (getMonth(b) - getMonth(a));\n // b is in (anchor - 1 month, anchor + 1 month)\n var anchor = add(cloneDate(a), wholeMonthDiff, 'month');\n var anchor2;\n var adjust;\n if (b.valueOf() - anchor.valueOf() < 0) {\n anchor2 = add(cloneDate(a), wholeMonthDiff - 1, 'month');\n // linear across the month\n adjust = (b.valueOf() - anchor.valueOf()) / (anchor.valueOf() - anchor2.valueOf());\n }\n else {\n anchor2 = add(cloneDate(a), wholeMonthDiff + 1, 'month');\n // linear across the month\n adjust = (b.valueOf() - anchor.valueOf()) / (anchor2.valueOf() - anchor.valueOf());\n }\n // check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n//# sourceMappingURL=diff.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ngx-bootstrap/chronos/moment/diff.js\n// module id = ./node_modules/ngx-bootstrap/chronos/moment/diff.js\n// module chunks = travel-products.module","// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nimport { isArray, isDateValid } from '../utils/type-checks';\nimport { isAfter, isBefore } from '../utils/date-compare';\nfunction pickBy(fn, dates) {\n var _dates;\n var _firstArg = dates[0];\n if (isArray(_firstArg) && dates.length === 1) {\n _dates = _firstArg;\n }\n else if (isArray(dates)) {\n _dates = dates;\n }\n if (!_dates || !_dates.length) {\n return new Date();\n }\n var res = _dates[0];\n for (var i = 1; i < _dates.length; ++i) {\n // if (!moments[i].isValid() || moments[i][fn](res)) {\n if (!isDateValid(_dates[i]) || fn.call(null, _dates[i], res)) {\n res = _dates[i];\n }\n }\n return res;\n}\n// TODO: Use [].sort instead?\nexport function min() {\n // const args = [].slice.call(arguments, 0);\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return pickBy(isBefore, args);\n}\nexport function max() {\n // const args = [].slice.call(arguments, 0);\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return pickBy(isAfter, args);\n}\n//# sourceMappingURL=min-max.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ngx-bootstrap/chronos/moment/min-max.js\n// module id = ./node_modules/ngx-bootstrap/chronos/moment/min-max.js\n// module chunks = travel-products.module","// tslint:disable:max-line-length max-file-line-count\nimport { add, subtract } from '../index';\nimport { getDate, getFullYear, getHours, getMilliseconds, getMinutes, getMonth, getSeconds } from '../utils/date-getters';\nimport { setDate, setFullYear, setHours, setMilliseconds, setMinutes, setMonth, setSeconds } from '../utils/date-setters';\nimport { cloneDate } from '../create/clone';\nimport { isArray, isBoolean, isDate, isDateValid, isFunction, isNumber, isObject, isString, isUndefined } from '../utils/type-checks';\nimport { formatDate } from '../format';\nimport { ISO_8601, RFC_2822 } from '../create/from-string-and-format';\nimport { getDateOffset, getUTCOffset, hasAlignedHourOffset, isDaylightSavingTime, setOffsetToParsedOffset, setUTCOffset } from '../units/offset';\nimport { isLeapYear, parseTwoDigitYear } from '../units/year';\nimport { isAfter, isBefore, isBetween, isSame, isSameOrAfter, isSameOrBefore } from '../utils/date-compare';\nimport { daysInMonth } from '../units/month';\nimport { getDayOfWeek, getISODayOfWeek, getLocaleDayOfWeek, parseWeekday, setDayOfWeek, setISODayOfWeek, setLocaleDayOfWeek } from '../units/day-of-week';\nimport { getISOWeek, getWeek, setISOWeek, setWeek } from '../units/week';\nimport { getISOWeeksInYear, getISOWeekYear, getSetISOWeekYear, getSetWeekYear, getWeeksInYear, getWeekYear } from '../units/week-year';\nimport { endOf, startOf } from '../utils/start-end-of';\nimport { getQuarter, setQuarter } from '../units/quarter';\nimport { getDayOfYear, setDayOfYear } from '../units/day-of-year';\nimport { getZoneAbbr, getZoneName } from '../units/timezone';\nimport { diff } from '../moment/diff';\nimport { calendar } from '../moment/calendar';\nimport { defineLocale, getLocale, getSetGlobalLocale, listLocales } from '../locale/locales';\nimport { max, min } from '../moment/min-max';\nimport { isDuration } from '../duration/constructor';\nimport { createLocalOrUTC } from '../create/from-anything';\nimport { createDuration } from '../duration/create';\nexport var moment = _moment;\nfunction _moment(input, format, localeKey, strict, isUTC) {\n if (input instanceof Khronos) {\n var _date = input.clone();\n return isUTC ? _date.utc() : _date;\n }\n if (isBoolean(localeKey)) {\n return new Khronos(input, format, null, localeKey, isUTC);\n }\n return new Khronos(input, format, localeKey, strict, isUTC);\n}\nmoment.utc = function (input, format, localeKey, strict) {\n return _moment(input, format, localeKey, strict, true);\n};\nmoment.parseZone = function (input, format, localeKey, strict) {\n return _moment(input, format, localeKey, strict, true).parseZone();\n};\nmoment.locale = getSetGlobalLocale;\nmoment.localeData = function (key) {\n if (key instanceof Khronos) {\n return key.localeData();\n }\n return getLocale(key);\n};\n// moment.utc = createUTC;\nmoment.unix = function (inp) { return new Khronos(inp * 1000); };\nmoment.ISO_8601 = ISO_8601;\nmoment.RFC_2822 = RFC_2822;\nmoment.defineLocale = defineLocale;\nmoment.parseTwoDigitYear = parseTwoDigitYear;\nmoment.isDate = isDate;\nmoment.invalid = function _invalid() {\n return new Khronos(new Date(NaN));\n};\n// duration(inp?: Duration | DateInput | Khronos, unit?: MomentUnitOfTime): Duration;\nmoment.duration = function (input, unit) {\n var _unit = mapUnitOfTime(unit);\n if (isDate(input)) {\n throw new Error('todo implement');\n }\n if (input == null) {\n return createDuration();\n }\n if (isDuration(input)) {\n return createDuration(input, _unit, { _locale: input._locale });\n }\n if (isString(input) || isNumber(input) || isDuration(input) || isObject(input)) {\n return createDuration(input, _unit);\n }\n throw new Error('todo implement');\n};\nmoment.min = function _min() {\n var dates = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n dates[_i] = arguments[_i];\n }\n var _firstArg = dates[0];\n var _dates = (isArray(_firstArg) ? _firstArg : dates)\n .map(function (date) { return _moment(date); })\n .map(function (date) { return date.toDate(); });\n var _date = min.apply(void 0, _dates);\n return new Khronos(_date);\n};\nmoment.max = function _max() {\n var dates = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n dates[_i] = arguments[_i];\n }\n var _firstArg = dates[0];\n var _dates = (isArray(_firstArg) ? _firstArg : dates)\n .map(function (date) { return _moment(date); })\n .map(function (date) { return date.toDate(); });\n var _date = max.apply(void 0, _dates);\n return new Khronos(_date);\n};\nmoment.locales = function () {\n return listLocales();\n};\nvar _unitsPriority = {\n year: 1,\n month: 8,\n week: 5,\n isoWeek: 5,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n hours: 13,\n weekYear: 1,\n isoWeekYear: 1,\n quarter: 7,\n date: 9,\n dayOfYear: 4,\n minutes: 14,\n seconds: 15,\n milliseconds: 16\n};\n// todo: do I need 2 mappers?\nvar _timeHashMap = {\n y: 'year',\n years: 'year',\n year: 'year',\n M: 'month',\n months: 'month',\n month: 'month',\n w: 'week',\n weeks: 'week',\n week: 'week',\n d: 'day',\n days: 'day',\n day: 'day',\n date: 'date',\n dates: 'date',\n D: 'date',\n h: 'hours',\n hour: 'hours',\n hours: 'hours',\n m: 'minutes',\n minute: 'minutes',\n minutes: 'minutes',\n s: 'seconds',\n second: 'seconds',\n seconds: 'seconds',\n ms: 'milliseconds',\n millisecond: 'milliseconds',\n milliseconds: 'milliseconds',\n quarter: 'quarter',\n quarters: 'quarter',\n q: 'quarter',\n Q: 'quarter',\n isoWeek: 'isoWeek',\n isoWeeks: 'isoWeek',\n W: 'isoWeek',\n weekYear: 'weekYear',\n weekYears: 'weekYear',\n gg: 'weekYears',\n isoWeekYear: 'isoWeekYear',\n isoWeekYears: 'isoWeekYear',\n GG: 'isoWeekYear',\n dayOfYear: 'dayOfYear',\n dayOfYears: 'dayOfYear',\n DDD: 'dayOfYear',\n weekday: 'weekday',\n weekdays: 'weekday',\n e: 'weekday',\n isoWeekday: 'isoWeekday',\n isoWeekdays: 'isoWeekday',\n E: 'isoWeekday'\n};\nfunction mapUnitOfTime(period) {\n return _timeHashMap[period];\n}\nfunction mapMomentInputObject(obj) {\n var _res = {};\n return Object.keys(obj)\n .reduce(function (res, key) {\n res[mapUnitOfTime(key)] = obj[key];\n return res;\n }, _res);\n}\nvar Khronos = (function () {\n function Khronos(input, format, localeKey, strict, isUTC, offset) {\n if (strict === void 0) { strict = false; }\n if (isUTC === void 0) { isUTC = false; }\n this._date = new Date();\n this._isUTC = false;\n // locale will be needed to format invalid date message\n this._locale = getLocale(localeKey);\n // parse invalid input\n if (input === '' || input === null || (isNumber(input) && isNaN(input))) {\n this._date = new Date(NaN);\n return this;\n }\n this._isUTC = isUTC;\n if (this._isUTC) {\n this._offset = 0;\n }\n if (offset || offset === 0) {\n this._offset = offset;\n }\n this._isStrict = strict;\n this._format = format;\n if (!input && input !== 0 && !format) {\n this._date = new Date();\n return this;\n }\n if (isDate(input)) {\n this._date = cloneDate(input);\n return this;\n }\n // this._date = parseDate(input, format, localeKey, strict, isUTC);\n var config = createLocalOrUTC(input, format, localeKey, strict, isUTC);\n this._date = config._d;\n this._offset = config._offset;\n this._isUTC = config._isUTC;\n this._isStrict = config._strict;\n this._format = config._f;\n this._tzm = config._tzm;\n }\n Khronos.prototype._toConfig = function () {\n return { _isUTC: this._isUTC, _locale: this._locale, _offset: this._offset, _tzm: this._tzm };\n };\n Khronos.prototype.locale = function (localeKey) {\n if (isUndefined(localeKey)) {\n return this._locale._abbr;\n }\n if (localeKey instanceof Khronos) {\n this._locale = localeKey._locale;\n return this;\n }\n var newLocaleData = getLocale(localeKey);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n };\n Khronos.prototype.localeData = function () {\n return this._locale;\n };\n // Basic\n Khronos.prototype.add = function (val, period) {\n var _this = this;\n if (isString(val)) {\n this._date = add(this._date, parseInt(val, 10), mapUnitOfTime(period));\n }\n if (isNumber(val)) {\n this._date = add(this._date, val, mapUnitOfTime(period));\n }\n if (isObject(val)) {\n var _mapped_1 = mapMomentInputObject(val);\n Object.keys(_mapped_1)\n .forEach(function (key) { return add(_this._date, _mapped_1[key], key); });\n }\n return this;\n };\n // fixme: for some reason here 'null' for time is fine\n Khronos.prototype.calendar = function (time, formats) {\n var _time = time instanceof Khronos ? time : new Khronos(time || new Date());\n var _offset = (this._offset || 0) - (_time._offset || 0);\n var _config = Object.assign(this._toConfig(), { _offset: _offset });\n return calendar(this._date, _time._date, formats, this._locale, _config);\n };\n Khronos.prototype.clone = function () {\n var localeKey = this._locale && this._locale._abbr || 'en';\n // return new Khronos(cloneDate(this._date), this._format, localeKey, this._isStrict, this._isUTC);\n // fails if isUTC and offset\n // return new Khronos(new Date(this.valueOf()),\n return new Khronos(this._date, this._format, localeKey, this._isStrict, this._isUTC, this._offset);\n };\n Khronos.prototype.diff = function (b, unitOfTime, precise) {\n var unit = mapUnitOfTime(unitOfTime);\n var _b = b instanceof Khronos ? b : new Khronos(b);\n // const zoneDelta = (_b.utcOffset() - this.utcOffset());\n // const config = Object.assign(this._toConfig(), {\n // _offset: 0,\n // _isUTC: true,\n // _zoneDelta: zoneDelta\n // });\n // return diff(new Date(this.valueOf()), new Date(_b.valueOf()), unit, precise, config);\n return diff(this._date, _b.toDate(), unit, precise, this._toConfig());\n };\n Khronos.prototype.endOf = function (period) {\n var _per = mapUnitOfTime(period);\n this._date = endOf(this._date, _per, this._isUTC);\n return this;\n };\n Khronos.prototype.format = function (format) {\n return formatDate(this._date, format, this._locale && this._locale._abbr, this._isUTC, this._offset);\n };\n // todo: implement\n Khronos.prototype.from = function (time, withoutSuffix) {\n var _time = _moment(time);\n if (this.isValid() && _time.isValid()) {\n return createDuration({ to: this.toDate(), from: _time.toDate() })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n }\n return this.localeData().invalidDate;\n };\n Khronos.prototype.fromNow = function (withoutSuffix) {\n return this.from(new Date(), withoutSuffix);\n };\n Khronos.prototype.to = function (inp, suffix) {\n throw new Error(\"TODO: Implement\");\n };\n Khronos.prototype.toNow = function (withoutPrefix) {\n throw new Error(\"TODO: Implement\");\n };\n Khronos.prototype.subtract = function (val, period) {\n var _this = this;\n if (isString(val)) {\n this._date = subtract(this._date, parseInt(val, 10), mapUnitOfTime(period));\n return this;\n }\n if (isNumber(val)) {\n this._date = subtract(this._date, val, mapUnitOfTime(period));\n }\n if (isObject(val)) {\n var _mapped_2 = mapMomentInputObject(val);\n Object.keys(_mapped_2)\n .forEach(function (key) { return subtract(_this._date, _mapped_2[key], key); });\n }\n return this;\n };\n Khronos.prototype.get = function (period) {\n if (period === 'dayOfYear') {\n return this.dayOfYear();\n }\n var unit = mapUnitOfTime(period);\n switch (unit) {\n case 'year':\n return this.year();\n case 'month':\n return this.month();\n // | 'week'\n case 'date':\n return this.date();\n case 'day':\n return this.day();\n case 'hours':\n return this.hours();\n case 'minutes':\n return this.minutes();\n case 'seconds':\n return this.seconds();\n case 'milliseconds':\n return this.milliseconds();\n case 'week':\n return this.week();\n case 'isoWeek':\n return this.isoWeek();\n case 'weekYear':\n return this.weekYear();\n case 'isoWeekYear':\n return this.isoWeekYear();\n case 'weekday':\n return this.weekday();\n case 'isoWeekday':\n return this.isoWeekday();\n case 'quarter':\n return this.quarter();\n default:\n throw new Error(\"Unknown moment.get('\" + period + \"')\");\n }\n };\n Khronos.prototype.set = function (period, input) {\n var _this = this;\n if (isString(period)) {\n var unit = mapUnitOfTime(period);\n switch (unit) {\n case 'year':\n return this.year(input);\n case 'month':\n return this.month(input);\n // | 'week'\n case 'day':\n return this.day(input);\n case 'date':\n return this.date(input);\n case 'hours':\n return this.hours(input);\n case 'minutes':\n return this.minutes(input);\n case 'seconds':\n return this.seconds(input);\n case 'milliseconds':\n return this.milliseconds(input);\n case 'week':\n return this.week(input);\n case 'isoWeek':\n return this.isoWeek(input);\n case 'weekYear':\n return this.weekYear(input);\n case 'isoWeekYear':\n return this.isoWeekYear(input);\n case 'weekday':\n return this.weekday(input);\n case 'isoWeekday':\n return this.isoWeekday(input);\n case 'quarter':\n return this.quarter(input);\n default:\n throw new Error(\"Unknown moment.get('\" + period + \"')\");\n }\n }\n if (isObject(period)) {\n var _mapped_3 = mapMomentInputObject(period);\n Object.keys(_mapped_3)\n .sort(function (a, b) {\n return _unitsPriority[a] - _unitsPriority[b];\n })\n .forEach(function (key) { return _this.set(key, _mapped_3[key]); });\n }\n return this;\n };\n Khronos.prototype.toString = function () {\n return this.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n };\n Khronos.prototype.toISOString = function () {\n if (!this.isValid()) {\n return null;\n }\n if (getFullYear(this._date, true) < 0 || getFullYear(this._date, true) > 9999) {\n return this.format('YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n }\n return this.format('YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n };\n Khronos.prototype.inspect = function () {\n throw new Error('TODO: implement');\n };\n Khronos.prototype.toJSON = function () {\n return this.toISOString();\n };\n Khronos.prototype.toDate = function () {\n return new Date(this.valueOf());\n };\n Khronos.prototype.toObject = function () {\n return {\n // years: getFullYear(this._date, this._isUTC),\n // months: getMonth(this._date, this._isUTC),\n year: getFullYear(this._date, this._isUTC),\n month: getMonth(this._date, this._isUTC),\n date: getDate(this._date, this._isUTC),\n hours: getHours(this._date, this._isUTC),\n minutes: getMinutes(this._date, this._isUTC),\n seconds: getSeconds(this._date, this._isUTC),\n milliseconds: getMilliseconds(this._date, this._isUTC)\n };\n };\n Khronos.prototype.toArray = function () {\n return [this.year(), this.month(), this.date(), this.hour(), this.minute(), this.second(), this.millisecond()];\n };\n // Dates boolean algebra\n Khronos.prototype.isAfter = function (date, unit) {\n var _unit = unit ? mapUnitOfTime(unit) : void 0;\n return isAfter(this._date, date.toDate(), _unit);\n };\n Khronos.prototype.isBefore = function (date, unit) {\n var _unit = unit ? mapUnitOfTime(unit) : void 0;\n return isBefore(this.toDate(), date.toDate(), _unit);\n };\n Khronos.prototype.isBetween = function (from, to, unit, inclusivity) {\n var _unit = unit ? mapUnitOfTime(unit) : void 0;\n return isBetween(this.toDate(), from.toDate(), to.toDate(), _unit, inclusivity);\n };\n Khronos.prototype.isSame = function (date, unit) {\n var _unit = unit ? mapUnitOfTime(unit) : void 0;\n return isSame(this._date, date.toDate(), _unit);\n };\n Khronos.prototype.isSameOrAfter = function (date, unit) {\n var _unit = unit ? mapUnitOfTime(unit) : void 0;\n return isSameOrAfter(this._date, date.toDate(), _unit);\n };\n Khronos.prototype.isSameOrBefore = function (date, unit) {\n var _unit = unit ? mapUnitOfTime(unit) : void 0;\n return isSameOrBefore(this._date, date.toDate(), _unit);\n };\n Khronos.prototype.isValid = function () {\n return isDateValid(this._date);\n };\n Khronos.prototype.valueOf = function () {\n return this._date.valueOf() - ((this._offset || 0) * 60000);\n };\n Khronos.prototype.unix = function () {\n // return getUnixTime(this._date);\n return Math.floor(this.valueOf() / 1000);\n };\n Khronos.prototype.utcOffset = function (b, keepLocalTime) {\n var _config = this._toConfig();\n if (!b && b !== 0) {\n return getUTCOffset(this._date, _config);\n }\n this._date = setUTCOffset(this._date, b, keepLocalTime, false, _config);\n this._offset = _config._offset;\n this._isUTC = _config._isUTC;\n return this;\n };\n Khronos.prototype.utc = function (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n };\n Khronos.prototype.local = function (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n if (keepLocalTime) {\n this.subtract(getDateOffset(this._date), 'm');\n }\n }\n return this;\n };\n Khronos.prototype.parseZone = function (input) {\n var _config = this._toConfig();\n this._date = setOffsetToParsedOffset(this._date, input, _config);\n this._offset = _config._offset;\n this._isUTC = _config._isUTC;\n return this;\n };\n Khronos.prototype.hasAlignedHourOffset = function (input) {\n return hasAlignedHourOffset(this._date, input ? input._date : void 0);\n };\n Khronos.prototype.isDST = function () {\n return isDaylightSavingTime(this._date);\n };\n Khronos.prototype.isLocal = function () {\n return !this._isUTC;\n };\n Khronos.prototype.isUtcOffset = function () {\n return this._isUTC;\n };\n Khronos.prototype.isUTC = function () {\n return this.isUtc();\n };\n Khronos.prototype.isUtc = function () {\n return this._isUTC && this._offset === 0;\n };\n // Timezone\n Khronos.prototype.zoneAbbr = function () {\n return getZoneAbbr(this._isUTC);\n };\n Khronos.prototype.zoneName = function () {\n return getZoneName(this._isUTC);\n };\n Khronos.prototype.year = function (year) {\n if (!year && year !== 0) {\n return getFullYear(this._date, this._isUTC);\n }\n this._date = cloneDate(setFullYear(this._date, year));\n return this;\n };\n Khronos.prototype.weekYear = function (val) {\n if (!val && val !== 0) {\n return getWeekYear(this._date, this._locale);\n }\n var date = getSetWeekYear(this._date, val, this._locale);\n if (isDate(date)) {\n this._date = date;\n }\n return this;\n };\n Khronos.prototype.isoWeekYear = function (val) {\n if (!val && val !== 0) {\n return getISOWeekYear(this._date);\n }\n var date = getSetISOWeekYear(this._date, val);\n if (isDate(date)) {\n this._date = date;\n }\n return this;\n };\n Khronos.prototype.isLeapYear = function () {\n return isLeapYear(getFullYear(this.toDate(), this.isUTC()));\n };\n Khronos.prototype.month = function (month) {\n if (!month && month !== 0) {\n return getMonth(this._date, this._isUTC);\n }\n var _month = month;\n if (isString(month)) {\n var locale = this._locale || getLocale();\n _month = locale.monthsParse(month);\n }\n if (isNumber(_month)) {\n this._date = cloneDate(setMonth(this._date, _month, this._isUTC));\n }\n return this;\n };\n Khronos.prototype.hour = function (hours) {\n return this.hours(hours);\n };\n Khronos.prototype.hours = function (hours) {\n if (!hours && hours !== 0) {\n return getHours(this._date, this._isUTC);\n }\n this._date = cloneDate(setHours(this._date, hours, this._isUTC));\n return this;\n };\n Khronos.prototype.minute = function (minutes) {\n return this.minutes(minutes);\n };\n Khronos.prototype.minutes = function (minutes) {\n if (!minutes && minutes !== 0) {\n return getMinutes(this._date, this._isUTC);\n }\n this._date = cloneDate(setMinutes(this._date, minutes, this._isUTC));\n return this;\n };\n Khronos.prototype.second = function (seconds) {\n return this.seconds(seconds);\n };\n Khronos.prototype.seconds = function (seconds) {\n if (!seconds && seconds !== 0) {\n return getSeconds(this._date, this._isUTC);\n }\n this._date = cloneDate(setSeconds(this._date, seconds, this._isUTC));\n return this;\n };\n Khronos.prototype.millisecond = function (ms) {\n return this.milliseconds(ms);\n };\n Khronos.prototype.milliseconds = function (seconds) {\n if (!seconds && seconds !== 0) {\n return getMilliseconds(this._date, this._isUTC);\n }\n this._date = cloneDate(setMilliseconds(this._date, seconds, this._isUTC));\n return this;\n };\n Khronos.prototype.date = function (date) {\n if (!date && date !== 0) {\n return getDate(this._date, this._isUTC);\n }\n this._date = cloneDate(setDate(this._date, date, this._isUTC));\n return this;\n };\n Khronos.prototype.day = function (input) {\n if (!input && input !== 0) {\n return getDayOfWeek(this._date, this._isUTC);\n }\n var _input = input;\n if (isString(input)) {\n _input = parseWeekday(input, this._locale);\n }\n if (isNumber(_input)) {\n this._date = setDayOfWeek(this._date, _input, this._locale, this._isUTC);\n }\n return this;\n };\n Khronos.prototype.weekday = function (val) {\n if (!val && val !== 0) {\n return getLocaleDayOfWeek(this._date, this._locale, this._isUTC);\n }\n this._date = setLocaleDayOfWeek(this._date, val, { locale: this._locale, isUTC: this._isUTC });\n return this;\n };\n Khronos.prototype.isoWeekday = function (val) {\n if (!val && val !== 0) {\n return getISODayOfWeek(this._date);\n }\n this._date = setISODayOfWeek(this._date, val);\n return this;\n };\n Khronos.prototype.dayOfYear = function (val) {\n if (!val && val !== 0) {\n return getDayOfYear(this._date);\n }\n this._date = setDayOfYear(this._date, val);\n return this;\n };\n Khronos.prototype.week = function (input) {\n if (!input && input !== 0) {\n return getWeek(this._date, this._locale);\n }\n this._date = setWeek(this._date, input, this._locale);\n return this;\n };\n Khronos.prototype.weeks = function (input) {\n return this.week(input);\n };\n Khronos.prototype.isoWeek = function (val) {\n if (!val && val !== 0) {\n return getISOWeek(this._date);\n }\n this._date = setISOWeek(this._date, val);\n return this;\n };\n Khronos.prototype.isoWeeks = function (val) {\n return this.isoWeek(val);\n };\n Khronos.prototype.weeksInYear = function () {\n return getWeeksInYear(this._date, this._isUTC, this._locale);\n };\n Khronos.prototype.isoWeeksInYear = function () {\n return getISOWeeksInYear(this._date, this._isUTC);\n };\n Khronos.prototype.daysInMonth = function () {\n return daysInMonth(getFullYear(this._date, this._isUTC), getMonth(this._date, this._isUTC));\n };\n Khronos.prototype.quarter = function (val) {\n if (!val && val !== 0) {\n return getQuarter(this._date, this._isUTC);\n }\n this._date = setQuarter(this._date, val, this._isUTC);\n return this;\n };\n Khronos.prototype.quarters = function (val) {\n return this.quarter(val);\n };\n Khronos.prototype.startOf = function (period) {\n var _per = mapUnitOfTime(period);\n this._date = startOf(this._date, _per, this._isUTC);\n return this;\n };\n return Khronos;\n}());\nexport { Khronos };\n//# sourceMappingURL=chain.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ngx-bootstrap/chronos/test/chain.js\n// module id = ./node_modules/ngx-bootstrap/chronos/test/chain.js\n// module chunks = travel-products.module","import { addFormatToken } from '../format/format';\n// todo: add support for timezones\n// FORMATTING\naddFormatToken('z', null, null, function (date, opts) {\n return opts.isUTC ? 'UTC' : '';\n});\naddFormatToken('zz', null, null, function (date, opts) {\n return opts.isUTC ? 'Coordinated Universal Time' : '';\n});\n// MOMENTS\nexport function getZoneAbbr(isUTC) {\n return isUTC ? 'UTC' : '';\n}\nexport function getZoneName(isUTC) {\n return isUTC ? 'Coordinated Universal Time' : '';\n}\n//# sourceMappingURL=timezone.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ngx-bootstrap/chronos/units/timezone.js\n// module id = ./node_modules/ngx-bootstrap/chronos/units/timezone.js\n// module chunks = travel-products.module","import { trigger, state, transition, style, animate } from '@angular/animations';\r\n/**\r\n * can be used if the same element has a *ngIf\r\n */\r\nexport const collapseAnimation =\r\n trigger(\r\n 'collapseAnimation',\r\n [\r\n state('in', style({})),\r\n transition('* => void', [\r\n style({ height: '!', opacity: 1 }),\r\n animate(500, style({ height: 0, opacity: 0 }))\r\n ]),\r\n transition('void => *', [\r\n style({ height: 0, opacity: 0 }),\r\n animate(500, style({ height: '*', opacity: 1 }))\r\n ])\r\n ]\r\n );\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/shared/animations/collapse-animation.ts","module.exports = \"
\\r\\n
\\r\\n

 

\\r\\n
\\r\\n

Error processing your request

\\r\\n\\r\\n

{{errorMessage}}

\\r\\n\\r\\n

 

\\r\\n\\r\\n

\\r\\n   Please contact our call centre on\\r\\n 1300 473 946\\r\\n providing the reference {{booking.BookingNumber}} to get\\r\\n assistance.\\r\\n

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

Booking Complete

\\r\\n\\r\\n \\r\\n
\\r\\n

Your booking number is

\\r\\n

\\r\\n {{booking.BookingNumber}}\\r\\n

\\r\\n\\r\\n

{{('ConfirmationEmailText' | translate) | async }}\\r\\n
\\r\\n {{booking.Email}}\\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n VIEW TICKET NOW\\r\\n
\\r\\n
\\r\\n\\r\\n
0 || spentLoyaltyDollars > 0)\\\" class=\\\"text-center\\\"\\r\\n style=\\\"margin: 10px 0px 10px 0px;\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n

Greyhound Rewards

\\r\\n

G-WALLET

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n You have not yet accepted the \\r\\n Terms & Conditions\\r\\n of the Greyhound Rewards program. You will not be able to\\r\\n take advantage of the ${{earnedLoyaltyDollars | number:'1.2-2'}}\\r\\n {{('LoyaltyUnitPlural' | translate) | async }} earned with this\\r\\n booking until they are accepted. Find\\r\\n out more.\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n G earned with this\\r\\n booking\\r\\n ${{earnedLoyaltyDollars | number:'1.2-2'}}\\r\\n
\\r\\n
\\r\\n G redeemed with\\r\\n this booking\\r\\n ${{spentLoyaltyDollars | number:'1.2-2'}}\\r\\n
\\r\\n
\\r\\n G Balance\\r\\n ${{loyaltyBalance | number:'1.2-2'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n *Credits will only be applied to your available balance upon completion of your\\r\\n travel.\\r\\n Terms &\\r\\n Conditions apply\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Greyhound Rewards

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

By linking this booking to your My Greyhound account, you could earn\\r\\n {{('LoyaltyUnitPlural' | translate) | async }} towards your next booking.\\r\\n

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{('ConfirmationManageBookingText' | translate) | async }}

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Your booking details are:

\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
PassengerBooking Number
\\r\\n {{getPassengerName(book)}}\\r\\n \\r\\n {{book.BookingNumber}}\\r\\n \\r\\n VIEW TICKET NOW\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
PassengerBooking Number
\\r\\n {{getPassengerName(book)}}\\r\\n
\\r\\n VIEW\\r\\n TICKET NOW\\r\\n \\r\\n
\\r\\n\\r\\n {{book.BookingNumber}}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{('ConfirmationMultipleEmailText' | translate) | async }}

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{('ConfirmationAccountBookingText' | translate) | async }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n If you have any problems with your booking, please contact us on\\r\\n
\\r\\n \\r\\n 1300 473 946\\r\\n \\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-confirmation/product-confirmation.component.html\n// module id = ./src/app/travel-products/product-confirmation/product-confirmation.component.html\n// module chunks = travel-products.module","import { Component, OnInit } from '@angular/core';\r\nimport { Booking } from '../../shared/models/booking.model';\r\nimport { ActionUpdaterService, ApiError } from '../../shared/services/action-updater.service';\r\nimport { BookingService } from '../../shared/services/booking.service';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport * as $ from 'jquery';\r\nimport * as moment from 'moment';\r\nimport { GxConstants } from 'app/shared/constants/gx.constants';\r\nimport { InitialDataService } from '../../initial-data.service';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { LocalStorageService } from 'app/shared/services/local-storage.service';\r\nimport { MyGreyhoundService } from '../../my-greyhound/my-greyhound.service';\r\nimport { FeatureService, Feature } from 'app/shared/services/feature.service';\r\n\r\n@Component({\r\n selector: 'gaweb-product-confirmation',\r\n templateUrl: 'product-confirmation.component.html'\r\n})\r\nexport class ProductConfirmationComponent implements OnInit {\r\n loading: boolean;\r\n booking: Booking;\r\n bookings: Array;\r\n bookingConfirmed: boolean;\r\n errored: boolean;\r\n errorMessage: boolean;\r\n navigatingToBooking: boolean[];\r\n navigatingToAccount: boolean;\r\n loadingData: boolean;\r\n bookingGuid: string;\r\n isLoggedIn = false;\r\n earnedLoyaltyDollars = 0;\r\n spentLoyaltyDollars = 0;\r\n loyaltyDollars: Number;\r\n loyaltyBalance: Number;\r\n balanceDate = new Date();\r\n updatedTC = false;\r\n updatingTC = false;\r\n\r\n \r\n constructor(\r\n private readonly initialDataService: InitialDataService,\r\n private readonly bookingsService: BookingService,\r\n private readonly localStorageService: LocalStorageService,\r\n private readonly activatedRoute: ActivatedRoute,\r\n private readonly featureService: FeatureService,\r\n private readonly myGreyhoundService: MyGreyhoundService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.navigatingToBooking = [];\r\n this.navigatingToAccount = false;\r\n this.loadingData = true;\r\n let bookingType = null;\r\n this.isLoggedIn = this.initialDataService.isLoggedIn;\r\n this.activatedRoute.queryParams.subscribe((params: Params) => {\r\n this.bookingGuid = params['booking'];\r\n bookingType = params['type'];\r\n });\r\n\r\n const customerGuid = !!this.initialDataService.userData ? this.initialDataService.userData.CustomerGuid : null;\r\n\r\n if (this.initialDataService.userData) {\r\n // tslint:disable-next-line:max-line-length\r\n if (this.initialDataService.userData.TCAcceptDate == null || moment(this.featureService.GetFeatureValue(Feature.LastTCUpdate)).isAfter(moment(this.initialDataService.userData.TCAcceptDate)) && this.localStorageService.getIfTCUpdated(customerGuid) === 'false') {\r\n this.updatedTC = false;\r\n } else {\r\n this.updatedTC = true;\r\n }\r\n }\r\n\r\n\r\n this.bookingsService.getBookings(this.bookingGuid).subscribe(\r\n (data) => {\r\n\r\n this.loadingData = false;\r\n if (!data || !data[0]) {\r\n this.redirectIfNoBookings();\r\n }\r\n if (data instanceof Array && data.length > 1) {\r\n this.bookings = data;\r\n\r\n this.bookings.forEach(b => {\r\n this.navigatingToBooking[b.BookingNumber] = false;\r\n });\r\n } else {\r\n this.booking = data[0];\r\n this.booking.IS_TICKETED = true;\r\n }\r\n this.callGoogleTags();\r\n this.bookingConfirmed = true;\r\n \r\n localStorage.removeItem(\"travel_options\");\r\n this.localStorageService.removeTravelOptions();\r\n this.localStorageService.resetOfflineBooking();\r\n this.localStorageService.resetManagedBooking();\r\n if (this.booking.CustomerGuid != null) {\r\n this.spentLoyaltyDollars = 0;\r\n this.earnedLoyaltyDollars = 0;\r\n this.myGreyhoundService.getCustomerTransactions(this.booking.CustomerGuid).subscribe((transactions) => {\r\n console.log('transaction response:', transactions);\r\n transactions.forEach(transaction => {\r\n if (transaction.BookingNumber.toString() === this.booking.BookingNumber.toString()) {\r\n console.log('found transaction:', transaction);\r\n this.loyaltyDollars = transaction.Amount;\r\n if (transaction.Amount <= 0) {\r\n this.spentLoyaltyDollars += transaction.Amount * -1;\r\n } else {\r\n this.earnedLoyaltyDollars += transaction.Amount;\r\n }\r\n\r\n this.myGreyhoundService.getLoyaltyBalance(this.booking.CustomerGuid).subscribe((response) => {\r\n this.loyaltyBalance = response.LoyaltyAvailable;\r\n this.balanceDate = response.BalanceDate;\r\n });\r\n }\r\n });\r\n });\r\n }\r\n },\r\n (error) => {\r\n this.redirectIfNoBookings();\r\n }\r\n );\r\n }\r\n\r\n private redirectIfNoBookings() {\r\n window.location.href = '/';\r\n }\r\n\r\n callGoogleTags() {\r\n\r\n const dataLayer: any[] = window['dataLayer'];\r\n const transactions = dataLayer.filter(item => !!item.transactionId);\r\n\r\n // If it has more than one transaction, must be pushed the load event one by one.\r\n if (!!transactions && transactions.length > 1) {\r\n transactions.forEach(item => {\r\n window['dataLayer'].push(item);\r\n window['dataLayer'].push({\r\n 'event': 'gtm.load',\r\n 'gtm.uniqueEventId': 4\r\n });\r\n });\r\n }\r\n }\r\n\r\n manageBooking = (bookingGuid) => {\r\n const onSuccessfullyGettingBooking = (data) => {\r\n const booking = data[0];\r\n this.localStorageService.saveOnlineBooking(booking);\r\n // tslint:disable-next-line:max-line-length\r\n const detailsUrl = this.initialDataService.manageBooking.DetailsUrl;\r\n window.location.href = `${detailsUrl}?bookingGuid=${bookingGuid}`;\r\n }, onError = () => {\r\n this.loading = false;\r\n // reset all navigator swirlies\r\n for (const i in this.navigatingToBooking) {\r\n if (this.navigatingToBooking.hasOwnProperty(i)) {\r\n this.navigatingToBooking[i] = false;\r\n }\r\n }\r\n };\r\n this.loading = true;\r\n this.navigatingToBooking[bookingGuid] = true;\r\n this.bookingsService.getBookings(this.bookingGuid).subscribe(\r\n onSuccessfullyGettingBooking,\r\n onError\r\n );\r\n }\r\n\r\n AcceptNewTC() {\r\n this.updatingTC = true;\r\n const customerGuid = !!this.initialDataService.userData ? this.initialDataService.userData.CustomerGuid : null;\r\n this.myGreyhoundService.updateCustomerTC(customerGuid).subscribe((result) => {\r\n this.localStorageService.setIfTCUpdated(customerGuid, true);\r\n this.updatingTC = false;\r\n this.updatedTC = true;\r\n });\r\n }\r\n\r\n goToMyGreyhound() {\r\n this.navigatingToAccount = true;\r\n window.location.href = `my-greyhound/dashboard`;\r\n }\r\n bookingsAssociatedWithMyGreyhound() {\r\n return !!this.bookings ? !!this.bookings[0].CustomerGuid : false;\r\n }\r\n getPassengerName(book: Booking) {\r\n return `${book.Passengers[0].FirstName} ${book.Passengers[0].Surname}`;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-confirmation/product-confirmation.component.ts","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ActivatedRoute, Router, Event, NavigationStart } from '@angular/router';\r\nimport { TravelProductService, TravelPackage } from '../../shared/services/travel-product.service';\r\nimport { ActionUpdaterService, ApiError } from '../../shared/services/action-updater.service';\r\n\r\n@Component({\r\n selector: 'gaweb-product-info',\r\n template: `\r\n
\r\n \r\n
\r\n
\r\n

{{package?.title}}

\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n

Loading travel package information...

\r\n
\r\n
\r\n\r\n
\r\n
\r\n {{package?.description}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n `,\r\n styles: []\r\n})\r\nexport class ProductInfoComponent implements OnInit {\r\n\r\n title: string = \"Package Details Info\";\r\n loadingData: boolean = true;\r\n package: TravelPackage;\r\n packageReference: string;\r\n\r\n constructor(private travelPackageService: TravelProductService,\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n private actionUpdaterService: ActionUpdaterService) { }\r\n\r\n ngOnInit() {\r\n this.packageReference = this.activatedRoute.snapshot.params['package-reference'];\r\n this.travelPackageService.getPackage(this.packageReference)\r\n .subscribe(\r\n (p) => {\r\n this.package = p;\r\n this.travelPackageService.currentProduct = p;\r\n this.loadingData = false;\r\n },\r\n this.actionUpdaterService.onError);\r\n }\r\n\r\n bookNow() {\r\n this.router.navigate([`packages/travel-packages/package/${this.packageReference}/book-now`])\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-info/product-info.component.ts","module.exports = \"
0\\\">\\r\\n
\\r\\n Add-ons\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/addons/addons.component.html\n// module id = ./src/app/travel-products/product-passenger-details/addons/addons.component.html\n// module chunks = travel-products.module","\r\nimport * as _ from 'lodash';\r\nimport { Component, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Addon, AddonOption, Pass } from 'app/shared/models/booking.model';\r\nimport { AddonsService } from 'app/shared/services/addons.service';\r\nimport { GxConstants } from 'app/shared/constants/gx.constants';\r\nimport { LocalStorageService } from '../../../shared/services/local-storage.service';\r\n\r\n@Component({\r\n selector: 'gaweb-addons',\r\n templateUrl: `./addons.component.html`,\r\n})\r\nexport class AddonsComponent implements OnInit, OnChanges {\r\n @Input() isPassBooking: boolean;\r\n @Input() passengersQty: number;\r\n @Input() fareTotal: number;\r\n @Input() fuelSurcharge: number;\r\n sellPrice: number;\r\n reportingGroup: string;\r\n isReturn: boolean;\r\n @Input() pass: Pass;\r\n @Output() onAddonChange: EventEmitter = new EventEmitter();\r\n @Output() onInitialisationChange: EventEmitter = new EventEmitter();\r\n @Input() loadingCartTotal: boolean;\r\n\r\n addons: Array;\r\n\r\n constructor(private readonly addonsService: AddonsService,\r\n private localStorageService: LocalStorageService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(this);\r\n this.setupInitialAddons();\r\n if (!!this.pass) {\r\n this.sellPrice = null;\r\n this.reportingGroup = null;\r\n }\r\n }\r\n\r\n setupInitialAddons = () => {\r\n if (this.isPassBooking) {\r\n if (this.pass == null) {\r\n setTimeout(() => { this.setupInitialAddons(); }, 500);\r\n return;\r\n }\r\n this.sellPrice = this.pass.FareTypes[0].TotalPrice;\r\n this.reportingGroup = this.pass.FareTypes[0].Farebasis.ReportingGroup;\r\n\r\n if (this.reportingGroup === null) {\r\n return;\r\n }\r\n }\r\n\r\n // set and send return flag for return only addons\r\n this.isReturn = false;\r\n const travelOptions = this.localStorageService.getTravelOptions();\r\n if(travelOptions !== null){\r\n this.isReturn = travelOptions.options.isReturn;\r\n }\r\n\r\n const getAddonsOptions = this.isPassBooking\r\n ? this.addonsService.getPassGetAddonsOptions(this.sellPrice, this.reportingGroup)\r\n : this.addonsService.getExpressGetAddonsOptions(this.fareTotal, this.fuelSurcharge, this.passengersQty, this.isReturn);\r\n const success = (data) => {\r\n data = data.json();\r\n // console.log('addon response');\r\n // console.log(data);\r\n this.addons = this.decorateAddons(data);\r\n this.onInitialisationChange.emit(true);\r\n this.onAddonChange.emit(data);\r\n };\r\n\r\n this.addonsService.getAddons(getAddonsOptions).toPromise().then(success);\r\n }\r\n\r\n ngOnChanges(changesObj: SimpleChanges): void {\r\n if (changesObj.pass) {\r\n if (changesObj.pass.isFirstChange()) { return; }\r\n const { currentValue } = changesObj.pass;\r\n this.pass = _.cloneDeep(currentValue);\r\n this.sellPrice = this.pass.FareTypes[0].TotalPrice;\r\n this.reportingGroup = this.pass.FareTypes[0].Farebasis.ReportingGroup;\r\n this.setupInitialAddons();\r\n }\r\n\r\n }\r\n\r\n optionSelected() {\r\n if (!this.loadingCartTotal) {\r\n this.onAddonChange.emit(this.addons);\r\n }\r\n }\r\n\r\n decorateAddons(addons) {\r\n const booking = this.localStorageService.getOnlineBooking();\r\n const forEachAddon = (addon: Addon) => {\r\n\r\n addon.IconUrl = this.getAddonIcon(addon); // <- to run before we transform Title/Name into safe html\r\n\r\n addon.AddonOptions.forEach(addOnOptions => {\r\n // console.log('addOnOptions');\r\n // console.log(addOnOptions);\r\n let selected = false;\r\n if (booking != null && booking.TpProducts != null) {\r\n addOnOptions.OptionValueEntity.forEach((option) => {\r\n if (booking.TpProducts.find( x => x.ProductCode === option.ProductCode) != null ) {\r\n // console.log('matched opt');\r\n // console.log(option);\r\n option.Selected = true;\r\n selected = true;\r\n } else {\r\n // console.log('not matched');\r\n // console.log(option);\r\n // option.Selected = false;\r\n }\r\n });\r\n\r\n addOnOptions.Selected = selected;\r\n }\r\n });\r\n\r\n const setRadioAddonsDefaultValueAndCollapsedValue = (option: AddonOption) => {\r\n const isRootSelectedOrAnyChildEntitySelected = (opt: AddonOption) => {\r\n if (opt.Selected && opt.SalePriceUnit != \"0\") {\r\n return true;\r\n }\r\n return !!opt.OptionValueEntity.find(optionValue => optionValue.Selected && optionValue.SalePriceUnit > 0);\r\n }\r\n if (option.FieldType === GxConstants.FIELD_TYPE.RADIO) {\r\n option.UserSelection = _.find(option.OptionValueEntity, (o): boolean => !!o.Selected);\r\n }\r\n addon.Collapsed = true;\r\n addon.Collapsed = !isRootSelectedOrAnyChildEntitySelected(option);\r\n }\r\n\r\n _.each(addon.AddonOptions, setRadioAddonsDefaultValueAndCollapsedValue);\r\n \r\n }\r\n\r\n addons.forEach(forEachAddon);\r\n return addons;\r\n }\r\n\r\n getAddonIcon(addon) {\r\n const name = (addon.Title || addon.Name || '');\r\n\r\n if (addon.AddonType === 'MG') {\r\n return '/Assets/images/my-greyhound.png';\r\n }\r\n if (addon.AddonType === 'IN') {\r\n return '/Assets/images/premium.png';\r\n }\r\n if (addon.AddonType === 'TP' && name.toLowerCase().indexOf('baggage') > -1) {\r\n return '/Assets/images/baggage.png';\r\n }\r\n if (addon.AddonType === 'TP' && name.toLowerCase().indexOf('bicycle') > -1) {\r\n return '/Assets/images/surfboards.png';\r\n }\r\n if (addon.AddonType === 'TP' && name.toLowerCase().indexOf('carbon') > -1) {\r\n return '/Assets/images/tree.png';\r\n }\r\n if (addon.AddonType === 'TP' && name.toLowerCase().indexOf('upgrade') > -1) {\r\n return '/Assets/images/upgrade.png';\r\n }\r\n if (addon.AddonType === 'TP' && name.toLowerCase().indexOf('mask') > -1) {\r\n return '/Assets/images/facemask.png';\r\n }\r\n if (addon.AddonType === 'TB') {\r\n return '/Assets/images/taxback.png';\r\n }\r\n return '';\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/addons/addons.component.ts","module.exports = \"\\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n Back\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/express-and-travel-pass-passenger-details.component.html\n// module id = ./src/app/travel-products/product-passenger-details/express-and-travel-pass-passenger-details.component.html\n// module chunks = travel-products.module","\r\nimport { Input, Output, Component, EventEmitter, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { PassengerFormModel, Passengers } from 'app/shared/models/passenger.model';\r\nimport { debug } from 'util';\r\nimport { Addon, Totals, Booking, FareType, AddonOption } from 'app/shared/models/booking.model';\r\nimport * as _ from 'lodash';\r\nimport { Availability } from 'app/shared/models/availability.model';\r\nimport { InitialDataService } from 'app/initial-data.service';\r\nimport { LocalStorageService } from 'app/shared/services/local-storage.service';\r\nimport { PassengersService } from 'app/shared/services/passenger.service';\r\nimport { TravelService } from 'app/shared/services/travel.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ProductTypeUrl } from 'app/shared/models/enums/ProductTypeUrl.enum';\r\nimport { CartTotalService } from 'app/shared/services/cart-total.service';\r\nimport { ApplicationError } from 'app/shared/errors/ApplicationError';\r\nimport { ErrorService } from 'app/shared/services/error.service';\r\nimport { PassengerRequest, BookingService } from 'app/shared/services/booking.service';\r\nimport { EventBusService } from 'app/shared/services/event-bus.service';\r\nimport { AppEventType, SavedFormEventWrapper } from 'app/shared/models/app-events.model';\r\nimport { SavedFormEvent } from 'app/shared/models/app-events-types.model';\r\nimport {\r\n PassengerDetailWrapperComponent,\r\n PassengerDetailWrapperComponentModel\r\n} from 'app/travel-products/product-passenger-details/passenger-details-selector/passenger-detail-wrapper.component';\r\nimport { CreateBookingsOption, ProductType, TravelProductService } from 'app/shared/services/travel-product.service';\r\nimport { GxConstants } from '../../shared/constants/gx.constants';\r\nimport { ActionUpdaterService, ApiError } from 'app/shared/services/action-updater.service';\r\n\r\n@Component({\r\n selector: 'gaweb-express-and-travel-pass-passenger-details',\r\n templateUrl: `./express-and-travel-pass-passenger-details.component.html`\r\n})\r\nexport class ExpressAndTravelPassPassengerDetailsComponent {\r\n @ViewChild('child') passengerDetailWrapperComponent: PassengerDetailWrapperComponent;\r\n confirming: boolean;\r\n isPassBooking: boolean;\r\n passengersQty: number;\r\n passenger: PassengerFormModel;\r\n hasTravel = false;\r\n acceptedTC = false;\r\n\r\n bookings: Booking[];\r\n private _booking: Booking;\r\n set booking(b: Booking) {\r\n this._booking = b;\r\n if (!!b) {\r\n this.bookings = [b];\r\n\r\n } else {\r\n this.bookings = null;\r\n }\r\n\r\n }\r\n get booking() {\r\n return this._booking;\r\n }\r\n initialized: boolean;\r\n passDisplayDescription: string[];\r\n subDescriptions: string[];\r\n addons: Array;\r\n totals: Totals;\r\n loadingCartTotal: boolean;\r\n tcs: boolean;\r\n userIsLoggedIn: boolean;\r\n showLoginPrompt: boolean;\r\n selectedLoyaltyProgram: number;\r\n customerWishesToUseFreeTrip: boolean;\r\n passengersFromLocalStorage: Passengers;\r\n promoCode: string;\r\n proceedButtonText: string;\r\n totalFarePrice = 0;\r\n totalFuelSurcharge = 0;\r\n ProductTypeUrl = ProductTypeUrl;\r\n fareGuid: string;\r\n travelGuid: string;\r\n categoryReference: string;\r\n passReference: string;\r\n males: number;\r\n females: number;\r\n isFormCorrectlySubmitted: boolean;\r\n passengerDetailWrapperComponentModel: PassengerDetailWrapperComponentModel;\r\n productType: ProductTypeUrl;\r\n alerts: Array;\r\n fareType: string;\r\n savedBooking: any;\r\n insuredFareTotal = 0;\r\n lastClick: Date;\r\n readonly defaultButtonText = 'CONTINUE';\r\n readonly confirmButtonText = 'CONFIRM BOOKING';\r\n\r\n public loginMessage = '';\r\n\r\n constructor(\r\n public initialDataService: InitialDataService,\r\n private localStorageService: LocalStorageService,\r\n private passengersService: PassengersService,\r\n private travelService: TravelService,\r\n private router: Router,\r\n private cartTotalService: CartTotalService,\r\n private errorService: ErrorService,\r\n private bookingService: BookingService,\r\n private eventBusService: EventBusService,\r\n private travelProductService: TravelProductService,\r\n private actionUpdaterService: ActionUpdaterService,\r\n private activatedRoute: ActivatedRoute) {\r\n\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n this.passReference = params.passreference;\r\n this.categoryReference = params.categoryreference;\r\n this.fareGuid = params.fareGuid;\r\n this.travelGuid = params.travelGuid;\r\n this.fareType = params.fareType;\r\n });\r\n\r\n this.isFormCorrectlySubmitted = false;\r\n this.booking = this.localStorageService.getOfflineBooking();\r\n this.savedBooking = this.localStorageService.getOnlineBooking();\r\n if (this.savedBooking != null) {\r\n if (this.savedBooking.BookingNumber != null) {\r\n this.savedBooking = null;\r\n this.localStorageService.resetManagedBooking();\r\n }\r\n }\r\n if (!!this.passReference || !!this.categoryReference) { // travel pass booking\r\n this.isPassBooking = true;\r\n this.travelService.getPass(this.categoryReference, this.passReference)\r\n .subscribe(\r\n (data) => {\r\n const fareTypeToCreateBooking = !!this.fareType ? this.fareType : this.booking.Package.FareTypes[0].FareTypeCode;\r\n this.clearErrors();\r\n this.booking.Package = data;\r\n this.createPassBooking(fareTypeToCreateBooking);\r\n this.continuePassSetup();\r\n },\r\n this.onError\r\n );\r\n } else { // express booking\r\n this.isPassBooking = false;\r\n\r\n this.continuePassSetup();\r\n }\r\n this.productType = this.isPassBooking ? ProductTypeUrl.travelPasses : ProductTypeUrl.expressBooking;\r\n\r\n // Add up totals from each trip\r\n if (this.booking != null) {\r\n _.each(this.booking.travels,\r\n (travel: Availability) => {\r\n const fare = travel.RouteOptions[0].Fares[0];\r\n this.totalFarePrice += fare.TotalFarePrice;\r\n this.totalFuelSurcharge += fare.TotalFuelSurcharge;\r\n if (fare.Insurance === true) {\r\n this.insuredFareTotal += fare.Price;\r\n }\r\n });\r\n }\r\n\r\n this.passengersFromLocalStorage = this.localStorageService.getTravelPassengers();\r\n if (!this.passengersFromLocalStorage) { this.passengersFromLocalStorage = new Passengers(); }\r\n this.passengersQty = this.passengersService.getTotalSeatedPassengers(this.passengersFromLocalStorage);\r\n\r\n this.userIsLoggedIn = !!this.initialDataService.isLoggedIn;\r\n this.showLoginPrompt = !this.userIsLoggedIn;\r\n\r\n // added to booking object to auto populate passenger fields on reload or return to page\r\n if (!!this.booking.passengerDetails) {\r\n this.passenger = this.booking.passengerDetails;\r\n } else {\r\n const passenger = new PassengerFormModel();\r\n passenger.country = 'AU';\r\n passenger.concessionCard1 = this.passengersFromLocalStorage.concessionCard1;\r\n passenger.concessionCard2 = this.passengersFromLocalStorage.concessionCard2;\r\n passenger.concessionLater = this.passengersFromLocalStorage.concessionLater;\r\n passenger.concessionCount = this.passengersFromLocalStorage.concessions;\r\n passenger.studentCard1 = this.passengersFromLocalStorage.studentCard1;\r\n passenger.studentCard2 = this.passengersFromLocalStorage.studentCard2;\r\n passenger.studentLater = this.passengersFromLocalStorage.studentLater;\r\n passenger.studentCount = this.passengersFromLocalStorage.students;\r\n passenger.gender = this.passengersFromLocalStorage.gender;\r\n if (this.userIsLoggedIn) {\r\n passenger.firstName = this.initialDataService.userData.FirstName;\r\n passenger.surname = this.initialDataService.userData.Surname;\r\n passenger.phone = this.initialDataService.userData.PhoneNumber;\r\n passenger.country = this.initialDataService.userData.Country;\r\n passenger.email = this.initialDataService.userData.Email;\r\n }\r\n this.passenger = passenger;\r\n }\r\n this.passengerDetailWrapperComponentModel = new PassengerDetailWrapperComponentModel(this.passenger, this.passengersQty)\r\n\r\n if (this.savedBooking != null && this.savedBooking.Pass != null) {\r\n this.promoCode = this.isPassBooking ? this.savedBooking.Pass.PromotionCode : null;\r\n this.booking = this.savedBooking;\r\n }\r\n\r\n this.addons = [];\r\n this.totals = new Totals();\r\n this.loadingCartTotal = true;\r\n this.tcs = false;\r\n this.initialized = false;\r\n this.proceedButtonText = this.defaultButtonText;\r\n\r\n this.eventBusService.on$(AppEventType.SavedFormEvent).subscribe((wrapper: SavedFormEventWrapper) => {\r\n const data: SavedFormEvent = wrapper.payload;\r\n this.updateDataFromSavedFormEvent(data);\r\n });\r\n\r\n if (this.userIsLoggedIn && !this.isPassBooking) {\r\n this.loginMessage = 'This booking will be linked to your My Greyhound account.';\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n const that = this;\r\n $('.checkbox').on('click', function () {\r\n if (that.lastClick != null && new Date().getTime() - that.lastClick.getTime() < 100) {\r\n return;\r\n }\r\n that.lastClick = new Date();\r\n\r\n if ($('#dataCheckbox').hasClass('checked')) {\r\n $('#dataCheckbox').removeClass('checked');\r\n $('#dataCheckboxInput').val('false');\r\n that.acceptedTC = false;\r\n } else {\r\n $('#dataCheckbox').addClass('checked');\r\n $('#dataCheckboxInput').val('true');\r\n that.acceptedTC = true;\r\n }\r\n });\r\n\r\n console.log('found:', $('button[type=\"submit\"]'));\r\n $('button[type=\"submit\"]').parent().on('mouseover', function (e) {\r\n const d: { sf: SavedFormEvent, form?: FormGroup } = that.passengerDetailWrapperComponent.checkIfFormIsValid(true);\r\n that.updateDataFromSavedFormEvent(d.sf);\r\n });\r\n }\r\n\r\n private createPassBooking(fareTypeCode: string) {\r\n if (!fareTypeCode) {\r\n throw new Error('Faretype from new booking is null');\r\n }\r\n const products: ProductType[] = [new ProductType(this.passReference, fareTypeCode, 1, GxConstants.PRODUCTS_REF.PASS)];\r\n\r\n const createBookingsOption = new CreateBookingsOption();\r\n createBookingsOption.ProductType = GxConstants.PRODUCT_TYPE.BUSPASS;\r\n createBookingsOption.Products = products;\r\n\r\n this.travelProductService.createBookings(createBookingsOption).subscribe((v: Booking[]) => {\r\n this.booking = Object.assign(v[0], this.booking);\r\n this.onAddonChange(this.addons);\r\n if (this.userIsLoggedIn) {\r\n this.travelProductService.addCustomerToBooking(this.booking.BookingGuid, this.initialDataService.userData.CustomerGuid)\r\n .subscribe(resp => {\r\n });\r\n }\r\n });\r\n }\r\n\r\n private continuePassSetup = () => {\r\n if (this.isPassBooking && this.booking.Package) {\r\n this.passDisplayDescription = [this.booking.Package.Name];\r\n // tslint:disable-next-line:max-line-length\r\n const fareTypeObj: FareType = !!this.fareType ? this.bookings[0].Package.FareTypes.find(f => f.FareTypeCode === this.fareType) : null;\r\n let desc;\r\n if (!!fareTypeObj) {\r\n //// desc = fareTypeObj.descriptionToDisplay;\r\n // desc = fareTypeObj.OnlineName;\r\n desc = fareTypeObj.Farebasis.DisplayDescription;\r\n } else {\r\n desc = this.bookings[0].Package.FareTypes[0].descriptionToDisplay;\r\n }\r\n if (!!desc) {\r\n this.subDescriptions = [desc];\r\n }\r\n }\r\n if (!this.booking ||\r\n (this.isPassBooking && !this.booking.Package) ||\r\n (!this.isPassBooking && this.booking.travels.length === 0)) {\r\n window.location.href = '/';\r\n }\r\n }\r\n onFreeTripSelected = ({ freeTripSelected }: { freeTripSelected: boolean }) => {\r\n this.customerWishesToUseFreeTrip = freeTripSelected;\r\n if (this.customerWishesToUseFreeTrip) {\r\n this.proceedButtonText = this.confirmButtonText;\r\n } else {\r\n this.proceedButtonText = this.defaultButtonText;\r\n }\r\n this.onAddonChange(this.addons);\r\n };\r\n onSigningUpToProgram = ({ programId }: { programId: number }) => {\r\n this.selectedLoyaltyProgram = programId;\r\n };\r\n toggleShowLoginPrompt = () => {\r\n this.showLoginPrompt = !this.showLoginPrompt;\r\n };\r\n onInitialisationChange = (value) => {\r\n this.initialized = value;\r\n };\r\n onCartTotalUpdatedByPromo = ({ cartTotals, promoCode }) => {\r\n this.totals = cartTotals;\r\n // TODO As below why is this needed as we now use the cart total\r\n // this.store.addCartTotalToBooking(cartTotals);\r\n this.localStorageService.saveCart(this.totals);\r\n this.booking.promocode = promoCode;\r\n this.promoCode = promoCode;\r\n };\r\n\r\n getCartTotalOptions = () => {\r\n if (this.isPassBooking) {\r\n return this.cartTotalService.getPassCartTotalOptions(this.booking.Package, this.addons, this.promoCode);\r\n } else {\r\n const userData = this.initialDataService.userData,\r\n customerGuid = !!userData ? userData.CustomerGuid : null;\r\n\r\n if (this.booking.travels == null) {\r\n this.booking.travels = this.localStorageService.getOfflineBooking().travels;\r\n }\r\n\r\n return this.cartTotalService.getExpressCartTotalOptions(this.booking.travels,\r\n this.passengersQty,\r\n this.addons,\r\n this.customerWishesToUseFreeTrip,\r\n customerGuid);\r\n }\r\n };\r\n onAddonChange = (newAddons: Addon[]) => {\r\n const ifPassIsInitialised = this.isPassBooking ? this.booking.Package : true;\r\n if (!!newAddons && this.isPassBooking) {\r\n this.addons = newAddons;\r\n }\r\n if (!!newAddons && this.initialized && ifPassIsInitialised) { // express or pass\r\n this.addons = newAddons;\r\n this.addonUsageDate();\r\n this.cartTotal();\r\n }\r\n };\r\n\r\n private addonUsageDate() {\r\n // Deal with facemasks for express\r\n if(!this.isPassBooking){\r\n const usageDateForAddon = (addon: Addon) => {\r\n const usageDateForAddonOption = (opt: AddonOption) => {\r\n if(opt.UsageDate === null){\r\n if (opt.ProductCode === \"FACEMASK\"){\r\n opt.UsageDate = this.booking.travels[0].RouteOptions[0].DepartureDate;\r\n console.log('usage date set for facemask to ' + opt.UsageDate);\r\n }\r\n if (opt.ProductCode === \"FACEMASKR\"){\r\n let lastTravelsIndex = this.booking.travels.length-1;\r\n opt.UsageDate = this.booking.travels[lastTravelsIndex].RouteOptions[0].DepartureDate;\r\n console.log('usage date set for return facemask to ' + opt.UsageDate);\r\n }\r\n }\r\n }\r\n _.each(addon.AddonOptions, usageDateForAddonOption); \r\n }\r\n _.each(this.addons, usageDateForAddon); \r\n }\r\n }\r\n\r\n private cartTotal() {\r\n const success = (data) => {\r\n this.totals = data;\r\n\r\n // TODO why is this put on the booking object?\r\n // this.store.addCartTotalToBooking(this.totals);\r\n this.localStorageService.saveCart(this.totals);\r\n this.initialized = true;\r\n }, error = function () {\r\n throw new ApplicationError('Unable to retrieve cart total.');\r\n }, loading = () => {\r\n this.loadingCartTotal = true;\r\n }, finished = () => {\r\n this.loadingCartTotal = false;\r\n };\r\n if (this.isPassBooking) {\r\n this.cartTotalService.getCartTotal(this.booking.BookingGuid, success, error, loading, finished);\r\n } else {\r\n const options = this.getCartTotalOptions();\r\n this.cartTotalService.postCartTotal(options, success, error, loading, finished);\r\n }\r\n }\r\n onPromoCodeChange() {\r\n this.cartTotal();\r\n }\r\n private saveOfflineBookingOnServer = (males: number, females: number, passenger: PassengerFormModel) => {\r\n this.confirming = true;\r\n const successfullySavedBookingToServer = (data) => {\r\n this.clearErrors();\r\n const onlineBooking: Booking = data;\r\n let nextPage;\r\n if (this.customerWishesToUseFreeTrip) {\r\n if (onlineBooking.Sectors.length > 0) {\r\n nextPage = this.initialDataService.expressSeatConfirmation;\r\n } else {\r\n nextPage = `${this.initialDataService.express.ConfirmationUrl}?booking=${onlineBooking.BookingGuid}`;\r\n }\r\n onlineBooking.IS_TICKETED = true;\r\n } else {\r\n if (this.isPassBooking) {\r\n nextPage = this.initialDataService.travelPassesPayment;\r\n } else {\r\n if (onlineBooking.Sectors.length > 0) {\r\n nextPage = this.initialDataService.expressSeatConfirmation;\r\n } else {\r\n nextPage = this.initialDataService.expressPayment;\r\n }\r\n }\r\n }\r\n this.localStorageService.saveOnlineBooking(onlineBooking);\r\n window.location.href = nextPage;\r\n this.confirming = false;\r\n }, errorSaving = (err) => {\r\n this.confirming = false;\r\n this.onError(err);\r\n };\r\n const passengerGuid = this.isPassBooking ? this.booking.Passengers[0].PassengerGuid : null;\r\n const passengerOption: PassengerRequest = new PassengerRequest(passenger,\r\n this.passengersFromLocalStorage.specialAssistanceType,\r\n this.passengersFromLocalStorage.nursedInfant,\r\n males,\r\n females,\r\n passengerGuid);\r\n if (this.booking.Pass != null && this.booking.Pass.PromotionCode === this.promoCode) {\r\n // We don't want to add the promo code twice, it'll error.\r\n this.promoCode = null;\r\n }\r\n const options = this.isPassBooking\r\n ? this.bookingService.getPassCreateBookingOptions(this.booking.Package,\r\n this.totals.PaymentItems,\r\n passengerOption,\r\n this.addons,\r\n this.promoCode,\r\n this.booking.BookingGuid)\r\n : this.bookingService.getExpressCreateBookingOptions(this.totals.PaymentItems,\r\n this.addons,\r\n this.booking.travels,\r\n passengerOption,\r\n this.selectedLoyaltyProgram,\r\n this.customerWishesToUseFreeTrip);\r\n\r\n return this.bookingService.create(options)\r\n .subscribe((data) => successfullySavedBookingToServer(data),\r\n (err) => errorSaving(err));\r\n }\r\n\r\n private savePassengerToLocalStorageToSupportReloadAndBackNavigation = (passenger) => {\r\n this.localStorageService.addPassengerToOfflineBooking(passenger);\r\n }\r\n\r\n hideLoginPrompt($event) {\r\n this.showLoginPrompt = false;\r\n }\r\n back() {\r\n if (this.isPassBooking) {\r\n window.history.back();\r\n // window.location.href = `${this.initialDataService.travelPassesDetails}?travel-pass=${this.passReference}`;\r\n } else {\r\n this.router.navigate([this.initialDataService.expressAvailability]);\r\n }\r\n }\r\n onProceedToPaymentClicked() {\r\n const d: { sf: SavedFormEvent, form?: FormGroup } = this.passengerDetailWrapperComponent.checkIfFormIsValid(true);\r\n this.updateDataFromSavedFormEvent(d.sf);\r\n if (this.isFormCorrectlySubmitted) {\r\n // TODO why is this added commenting out\r\n // this.store.addAddOnsToBooking(this.addonsService.getAddonsAnswers(this.addons));\r\n const passenger: PassengerFormModel = Object.assign(new PassengerFormModel(), d.form.getRawValue());\r\n passenger.concessionCount = this.passengersFromLocalStorage.concessions;\r\n passenger.studentCount = this.passengersFromLocalStorage.students;\r\n passenger.phone = passenger.phone.replace(/\\s+/g, ''); // remove spaces\r\n this.savePassengerToLocalStorageToSupportReloadAndBackNavigation(passenger);\r\n this.saveOfflineBookingOnServer(this.males, this.females, passenger);\r\n }\r\n }\r\n private updateDataFromSavedFormEvent(data: SavedFormEvent) {\r\n this.isFormCorrectlySubmitted = data.isFormValid;\r\n if (this.isFormCorrectlySubmitted) {\r\n this.males = data.males;\r\n this.females = data.females;\r\n }\r\n }\r\n private clearErrors() {\r\n this.alerts = [];\r\n }\r\n private onError(err: ApiError) {\r\n this.alerts = [err];\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/express-and-travel-pass-passenger-details.component.ts","module.exports = \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
KM Pass valid for payment
\\r\\n

\\r\\n {{('PayWithKMPassDescription' | translate) | async }}\\r\\n

\\r\\n\\r\\n
\\r\\n
\\r\\n

Please select and confirm you would like to use this Pass to pay for your Experience.

\\r\\n
\\r\\n
\\r\\n

You have opted to pay with the following KM Pass.

\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n {{selectedKmsBooking.kmsPassName}}\\r\\n

\\r\\n

Booking no. {{selectedKmsBooking.BookingNumber}}

\\r\\n

{{selectedKmsBooking.balanceAfterPayment}} KMs remaining after payment

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Did you know you can pay for this Experience with extra KMs on a KM Pass booking?

\\r\\n

Please select your Pass and click Confirm.

\\r\\n
\\r\\n
\\r\\n

You have opted to pay with the following KM Pass.

\\r\\n
\\r\\n
\\r\\n

You have the following KM Passes that you can use to pay for your experience.

\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n {{booking.kmsPassName}}\\r\\n

\\r\\n

Booking no. {{booking.BookingNumber}}

\\r\\n

{{booking.balanceAfterPayment}} KMs remaining after payment

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n {{selectedKmsBooking.kmsPassName}}\\r\\n

\\r\\n

Booking no. {{selectedKmsBooking.BookingNumber}}

\\r\\n

{{selectedKmsBooking.balanceAfterPayment}} KMs remaining after payment

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Username\\r\\n Password\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
{{errorMsg}}
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/km-pass/km-pass.component.html\n// module id = ./src/app/travel-products/product-passenger-details/km-pass/km-pass.component.html\n// module chunks = travel-products.module","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef } from '@angular/core';\r\nimport {\r\n TravelProductService, TravelPackage, FareTypeChangedEvent, VerifySinglePassBookingOptions\r\n} from '../../../shared/services/travel-product.service';\r\nimport { ActionUpdaterService, ApiError } from '../../../shared/services/action-updater.service';\r\nimport * as _ from 'lodash';\r\nimport { ModalDirective } from 'ngx-bootstrap/modal';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { InitialDataService } from 'app/initial-data.service';\r\nimport { BookingService, GetBookingViaLoginOption } from 'app/shared/services/booking.service';\r\nimport { ProductTypeUrl } from 'app/shared/models/enums/ProductTypeUrl.enum';\r\n\r\nimport { MyGreyhoundService } from '../../../my-greyhound/my-greyhound.service';\r\nimport { Booking } from 'app/shared/models/booking.model';\r\nimport * as moment from 'moment';\r\nimport { KmPassService } from 'app/shared/services/km-pass.service';\r\nimport { collapseAnimation } from 'app/shared/animations/collapse-animation';\r\nimport { AutocompleteOffService } from 'app/shared/services/autocomplete-off.service';\r\nimport { FeatureService, Feature } from 'app/shared/services/feature.service';\r\nimport { PassengerOptionsStateService } from 'app/shared/services/passenger-options-state.service';\r\nimport { DeviceService } from 'app/shared/services/device.service';\r\n\r\nclass KmPassTitleType {\r\n static readonly DEFAULT = 'PAY WITH KM PASS';\r\n}\r\n\r\n@Component({\r\n selector: 'gaweb-km-pass',\r\n animations: [collapseAnimation],\r\n templateUrl: './km-pass.component.html'\r\n})\r\nexport class KmPassComponent implements OnInit {\r\n @ViewChild('bookingNumber') bookingNumber: ElementRef;\r\n @ViewChild('bookingPin') bookingPin: ElementRef;\r\n isBookingVerified: boolean;\r\n isLoggedIn: boolean;\r\n showTick: boolean;\r\n showPayUsingKms: boolean;\r\n errorMsg: string;\r\n selectedKmsBooking: Booking;\r\n checking: boolean;\r\n public bookingLoginForm: FormGroup;\r\n farePriceKMS: number;\r\n private margin: number;\r\n isConfirmed: boolean;\r\n availableKmsBookings: Booking[];\r\n canBePayedUsingKms: boolean;\r\n foundAvailableKmsBooking: boolean;\r\n readonly title: string = KmPassTitleType.DEFAULT;\r\n right: boolean;\r\n singleBookingSelected: boolean;\r\n private isBookingLoggedIn: boolean;\r\n @Output() onBookingVerified: EventEmitter = new EventEmitter();\r\n @Input() productType: ProductTypeUrl;\r\n private usePayWithKMs: boolean;\r\n constructor(\r\n private initialDataService: InitialDataService,\r\n private bookingService: BookingService,\r\n private myGreyhoundService: MyGreyhoundService,\r\n private fb: FormBuilder,\r\n private kmPassService: KmPassService,\r\n private autocompleteOffService: AutocompleteOffService,\r\n private featureService: FeatureService,\r\n private passengerOptionsStateService: PassengerOptionsStateService,\r\n private deviceService: DeviceService,\r\n ) {\r\n this.usePayWithKMs = this.featureService.GetFeatureStatus(Feature.UsePayWithKMs);\r\n this.kmPassService.onSavePassengerOptions.subscribe(() => {\r\n this.reCalculatePassesVisibility();\r\n this.checkIfBookingIsValid(true);\r\n });\r\n this.kmPassService.onChangeFarePriceKMS.subscribe((farePriceKMS: number) => {\r\n let farePriceKMSwasUndefined = false;\r\n if (!this.farePriceKMS) {\r\n farePriceKMSwasUndefined = true;\r\n }\r\n this.farePriceKMS = farePriceKMS;\r\n if (farePriceKMSwasUndefined) {\r\n this.reCalculatePassesVisibility();\r\n }\r\n if (!!this.selectedKmsBooking) {\r\n this.selectedKmsBooking.balanceAfterPayment = this.selectedKmsBooking.balanceBeforePayment - this.farePriceKMS;\r\n }\r\n });\r\n }\r\n ngOnInit(): void {\r\n this.availableKmsBookings = [];\r\n this.selectedKmsBooking = null;\r\n this.foundAvailableKmsBooking = false;\r\n this.isBookingLoggedIn = false;\r\n this.checking = false;\r\n this.isLoggedIn = !!this.initialDataService.userData;\r\n this.canBePayedUsingKms = this.productType === ProductTypeUrl.accommodation || this.productType === ProductTypeUrl.experience;\r\n this.showTick = false;\r\n this.right = this.deviceService.IsMobile();\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n case ProductTypeUrl.experience:\r\n if (this.isLoggedIn) {\r\n this.showTick = false;\r\n this.setShowPayUsingKms(false);\r\n let numValidPasses = 0;\r\n this.myGreyhoundService.getBookingSummary5(this.initialDataService.userData.CustomerGuid)\r\n .subscribe(([activeBookings, pastBookings]) => {\r\n activeBookings.Bookings.forEach((bookingSummary, index) => {\r\n if (bookingSummary.ReportingGroup === 'KPASS') {\r\n this.bookingService.getBookings(bookingSummary.BookingGuid).subscribe((bookings: Booking[]) => {\r\n bookings[0].balanceBeforePayment = Number(bookings[0].PassKms) - Number(bookings[0].PassKmsUsed);\r\n if (!!this.farePriceKMS) {\r\n bookings[0].balanceAfterPayment = bookings[0].balanceBeforePayment - this.farePriceKMS;\r\n bookings[0].visible = bookings[0].balanceAfterPayment > 0;\r\n }\r\n bookings[0].kmsPassName = this.getKmsPassName(bookings[0]);\r\n\r\n this.foundAvailableKmsBooking = this.foundAvailableKmsBooking || bookings[0].visible;\r\n this.setShowPayUsingKms(this.foundAvailableKmsBooking);\r\n this.availableKmsBookings = this.availableKmsBookings.concat(bookings[0]);\r\n numValidPasses += 1;\r\n\r\n if (numValidPasses === 1) {\r\n this.selectedKmsBooking = this.availableKmsBookings[0];\r\n } else {\r\n this.selectedKmsBooking = null;\r\n }\r\n });\r\n }\r\n });\r\n });\r\n } else {\r\n this.setShowPayUsingKms(true);\r\n }\r\n break;\r\n case ProductTypeUrl.package:\r\n default:\r\n this.setShowPayUsingKms(false);\r\n }\r\n\r\n this.isBookingVerified = false;\r\n this.buildForm();\r\n }\r\n private setShowPayUsingKms(b: boolean) {\r\n if (this.usePayWithKMs) {\r\n this.showPayUsingKms = b;\r\n } else {\r\n this.showPayUsingKms = false;\r\n }\r\n }\r\n\r\n inputTouch(target: any) {\r\n target.target.focus();\r\n this.bookingLoginForm.get('noThanks').setValue(false);\r\n this.noThanksChange(false);\r\n }\r\n\r\n turnAutocompleteOffBookingNumber() {\r\n this.autocompleteOffService.turnAutocompleteOff(this.bookingNumber);\r\n }\r\n turnAutocompleteOffBookingPin() {\r\n this.autocompleteOffService.turnAutocompleteOff(this.bookingPin);\r\n }\r\n public isCorrectlyFilledOut() {\r\n return this.showTick || !this.showPayUsingKms;\r\n }\r\n private buildForm() {\r\n this.bookingLoginForm = this.fb.group({\r\n bookingNumber: [null, Validators.required],\r\n bookingPin: [null, Validators.required],\r\n noThanks: [true, []]\r\n });\r\n this.showTick = true;\r\n this.bookingLoginForm.get('bookingNumber').valueChanges.subscribe(val => {\r\n this.bookingLoginForm.patchValue({ 'noThanks': false });\r\n });\r\n this.bookingLoginForm.get('bookingPin').valueChanges.subscribe(val => {\r\n this.bookingLoginForm.patchValue({ 'noThanks': false });\r\n });\r\n }\r\n closePayUsingKms() {\r\n this.setShowPayUsingKms(false);\r\n }\r\n selectSinglebooking() {\r\n if (!this.isConfirmed && !this.bookingLoginForm.get('noThanks').value) {\r\n this.singleBookingSelected = !this.singleBookingSelected;\r\n }\r\n }\r\n private notNow(shouldLogout: boolean = false) {\r\n this.isBookingVerified = false;\r\n this.showTick = true;\r\n if (shouldLogout) {\r\n this.emitBookingState(null, true);\r\n } else {\r\n this.emitBookingState(null);\r\n }\r\n this.closePayUsingKms();\r\n }\r\n\r\n\r\n private onBookingVerifiedError(errorMsg: string) {\r\n this.errorMsg = errorMsg;\r\n }\r\n bookingLogin() {\r\n const bookingNum = !!this.isLoggedIn\r\n ? this.selectedKmsBooking.BookingNumber\r\n : this.bookingLoginForm.get('bookingNumber').value;\r\n const bookingPin = !!this.isLoggedIn\r\n ? this.selectedKmsBooking.Pin\r\n : this.bookingLoginForm.get('bookingPin').value;\r\n this.bookingLoginForm.patchValue({ 'noThanks': false });\r\n this.singleBookingSelected = false;\r\n const getBookingViaLoginOption = new GetBookingViaLoginOption(bookingNum, bookingPin);\r\n this.checking = true;\r\n this.bookingService.getBookingViaLoginWithPassMargin(getBookingViaLoginOption).subscribe((data) => {\r\n const booking: Booking = data['booking'];\r\n const margin: number = data['margin'];\r\n this.checking = false;\r\n booking.balanceBeforePayment = Number(booking.PassKms) - Number(booking.PassKmsUsed);\r\n booking.balanceAfterPayment = booking.balanceBeforePayment - this.farePriceKMS;\r\n booking.kmsPassName = this.getKmsPassName(booking);\r\n this.margin = margin;\r\n this.selectedKmsBooking = booking;\r\n this.checkIfBookingIsValid(false);\r\n if (!this.isLoggedIn) {\r\n this.showTick = false;\r\n } else if (this.isLoggedIn && this.isConfirmed) {\r\n this.showTick = true;\r\n }\r\n }, (apiError: ApiError) => {\r\n this.checking = false;\r\n this.onBookingVerifiedError(apiError.message);\r\n });\r\n }\r\n noThanksChange(val: boolean): void {\r\n if (!!val) { // no thanks -> checked\r\n this.bookingLogout();\r\n } else { // no thanks -> not checked\r\n this.showTick = false;\r\n this.selectedKmsBooking = null;\r\n }\r\n }\r\n private bookingLogout() {\r\n this.isBookingVerified = false;\r\n this.isConfirmed = false;\r\n this.showTick = true;\r\n this.right = true;\r\n this.emitBookingState(null, true);\r\n }\r\n toggleSection() {\r\n this.right = !this.right;\r\n }\r\n bookingConfirm() {\r\n this.isConfirmed = true;\r\n this.right = true;\r\n this.showTick = true;\r\n this.emitBookingState(this.selectedKmsBooking);\r\n this.passengerOptionsStateService.broadcastShouldDisplayDialog();\r\n }\r\n private getKmsPassName(booking: Booking) {\r\n const fareBasis = booking.FareBasis[0];\r\n return !!fareBasis['DisplayDescription']\r\n ? fareBasis['DisplayDescription']\r\n : (!!fareBasis['SystemDescription']\r\n ? fareBasis['SystemDescription']\r\n : `${booking.PassKms} KM Pass`);\r\n }\r\n private checkIfBookingIsValid(passiveVerification: boolean) {\r\n const booking: Booking = this.selectedKmsBooking;\r\n if (!booking) {\r\n return;\r\n }\r\n let validPassType, hasEnoughKms, hasExpired;\r\n const margin = this.margin, farePriceKMS = this.farePriceKMS;\r\n function isBookingValid(b: Booking) {\r\n validPassType = b.ProductType === 'BP' &&\r\n (!!b.FareBasis[0] ? b.FareBasis[0].ReportingGroup === 'KPASS' : false);\r\n hasEnoughKms = !!b.PassKms && b.balanceBeforePayment > (margin + farePriceKMS);\r\n hasExpired = !!b.PassExpiry && !moment(b.PassExpiry).isAfter(moment());\r\n\r\n return validPassType && hasEnoughKms && !hasExpired;\r\n }\r\n this.errorMsg = null;\r\n const validBooking = isBookingValid(booking);\r\n if (passiveVerification) {\r\n this.isBookingVerified = this.isBookingVerified && validBooking;\r\n if (this.isLoggedIn) {\r\n this.setShowPayUsingKms(this.availableKmsBookings.some((b) => isBookingValid(b)));\r\n }\r\n } else {\r\n this.isBookingVerified = validBooking;\r\n if (this.isLoggedIn) {\r\n this.isConfirmed = this.isBookingVerified; // isBookingVerified is not used when the user is logged in\r\n }\r\n }\r\n if (!this.isBookingVerified) {\r\n this.showTick = false;\r\n }\r\n\r\n if (!validPassType) {\r\n this.onBookingVerifiedError('Booking is not valid for payment with KMs');\r\n } else if (hasExpired) {\r\n this.onBookingVerifiedError('Pass is no longer valid');\r\n } else if (!hasEnoughKms) {\r\n this.onBookingVerifiedError(`Pass has insufficient KMs (${booking.balanceBeforePayment} KM remaining)`);\r\n }\r\n if (this.isConfirmed) {\r\n this.emitBookingState(booking);\r\n }\r\n\r\n }\r\n\r\n selectKmPassBooking(booking: Booking) {\r\n if (!this.checking) { // to avoid allowing the user to change the selectedBooking while confirming\r\n this.selectedKmsBooking = booking;\r\n }\r\n }\r\n private emitBookingState(booking: Booking, isLogout: boolean = false) {\r\n this.onBookingVerified.emit({\r\n isBookingVerified: this.isBookingVerified,\r\n farePriceKMS: this.farePriceKMS,\r\n booking,\r\n isLogout\r\n });\r\n }\r\n private reCalculatePassesVisibility() {\r\n this.foundAvailableKmsBooking = false;\r\n this.availableKmsBookings.forEach((booking: Booking) => {\r\n booking.balanceAfterPayment = Number(booking.PassKms) - Number(booking.PassKmsUsed) - this.farePriceKMS;\r\n booking.visible = this.isLoggedIn && booking.balanceAfterPayment > 0;\r\n this.foundAvailableKmsBooking = this.foundAvailableKmsBooking || booking.visible;\r\n if (this.isLoggedIn) {\r\n this.setShowPayUsingKms(this.foundAvailableKmsBooking);\r\n }\r\n });\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/km-pass/km-pass.component.ts","module.exports = \"
\\r\\n\\r\\n
\\r\\n
\\r\\n My Greyhound\\r\\n
\\r\\n
\\r\\n
\\r\\n

Welcome back, {{name}}\\r\\n Log out\\r\\n \\r\\n

\\r\\n\\r\\n
\\r\\n This booking will be linked to your My Greyhound account.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n G-WALLET\\r\\n MY GREYHOUND\\r\\n
\\r\\n
\\r\\n
Welcome back, {{name}}\\r\\n \\r\\n Log out\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Retrieving rewards balance...

\\r\\n
\\r\\n
\\r\\n
\\r\\n
Current {{('LoyaltyUnit' | translate) | async }}\\r\\n balance: ${{loyaltyAvailable | number:'1.2-2'}}*
\\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n
Earn up to ${{totals.CreditsEarned | number:'1.2-2'}} in {{('LoyaltyUnitPlural' | translate) | async }} credit on this booking
\\r\\n
\\r\\n
\\r\\n \\r\\n This booking is not eligible for {{('LoyaltyUnit' | translate) | async }} accrual, but you can still pay for it using your available\\r\\n {{('LoyaltyUnit' | translate) | async }} balance.\\r\\n \\r\\n
\\r\\n
\\r\\n
0 && loyaltyRedemption <= 0\\\" style=\\\"display: block; color: darkred; padding-bottom: 10px;\\\">\\r\\n You will accrue {{('LoyaltyUnitPlural' | translate) | async }} for this booking but will not be able to pay for the booking using\\r\\n your {{('LoyaltyUnitPlural' | translate) | async }}.\\r\\n
\\r\\n\\r\\n \\r\\n * Your available balance does not\\r\\n include pending\\r\\n purchases.\\r\\n Go to your My Greyhound account to view full\\r\\n details of your\\r\\n balance.\\r\\n
\\r\\n
\\r\\n
\\r\\n Earn up to ${{totals.CreditsEarned | number:'1.2-2'}} in {{('LoyaltyUnitPlural' | translate) | async }} credit on this\\r\\n booking by joining the My Greyhound Rewards program.\\r\\n

\\r\\n Please read and accept our updated\\r\\n Terms and\\r\\n Conditions or Find out more.

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/loyalty-details/loyalty-details.component.html\n// module id = ./src/app/travel-products/product-passenger-details/loyalty-details/loyalty-details.component.html\n// module chunks = travel-products.module","\r\nimport { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { LoyaltyProgram, MyGreyhoundService } from 'app/my-greyhound/my-greyhound.service';\r\nimport { LoyaltyTripStatusResponse, PassengersService } from 'app/shared/services/passenger.service';\r\nimport { InitialDataService } from 'app/initial-data.service';\r\nimport { LocalStorageService } from 'app/shared/services/local-storage.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ActionUpdaterService, ApiError } from 'app/shared/services/action-updater.service';\r\nimport * as moment from 'moment';\r\nimport { Feature, FeatureService } from '../../../shared/services/feature.service';\r\nimport { ModalDirective } from 'ngx-bootstrap';\r\nimport { ModalPopupMainPageEvent } from '../../../shared/models/app-events-types.model';\r\nimport { ModalPopupMainPageEventWrapper } from '../../../shared/models/app-events.model';\r\nimport { EventBusService } from '../../../shared/services/event-bus.service';\r\nimport { CartTotalService } from 'app/shared/services/cart-total.service';\r\nimport { Totals } from 'app/shared/models/booking.model';\r\n\r\n@Component({\r\n selector: 'gaweb-loyalty-details',\r\n templateUrl: `./loyalty-details.component.html`\r\n})\r\nexport class LoyaltyDetailsComponent implements OnInit {\r\n @Input() name: string;\r\n @Input() customerGuid: string;\r\n @Input() fareGuid: string;\r\n @Input() travelGuid: string;\r\n @Input() categoryReference: string;\r\n @Input() passReference: string;\r\n @Output() onFreeTripSelected: EventEmitter = new EventEmitter();\r\n @Output() onSigningUpToProgram: EventEmitter = new EventEmitter();\r\n @Input() isPassBooking: boolean;\r\n @Input() totals: Totals;\r\n\r\n customerLinkedToProgram: boolean;\r\n freeTripAvailable: boolean;\r\n tripStatusDescription: string;\r\n loyaltyProgramDescription: string;\r\n loadingData: boolean;\r\n loyaltyPrograms: Array;\r\n customerNotLinkedToProgramButTripIsEligible: boolean;\r\n eligibleProgram: LoyaltyProgram;\r\n customerWishsToLinkToEligibleProgram: boolean;\r\n customerWishesToUseFreeTrip: boolean;\r\n customerProgram: any;\r\n tripIsEligibleForCustomersProgram: boolean;\r\n tripIsEligibleForAnyProgram: boolean;\r\n public loyaltyAvailable = 0;\r\n public loyaltyPending = 0;\r\n public totalLoyalty = 0;\r\n public balanceTime: Date;\r\n public loadingBalance = true;\r\n\r\n public loyaltyAccrued = 0;\r\n public loyaltyRedemption = 0;\r\n\r\n updatingTC = false;\r\n updatedTC = false;\r\n\r\n public config = {\r\n animated: true,\r\n keyboard: true,\r\n backdrop: false,\r\n ignoreBackdropClick: false\r\n };\r\n\r\n constructor(private passengersService: PassengersService,\r\n private myGreyhoundService: MyGreyhoundService,\r\n private initialDataService: InitialDataService,\r\n private localStorageService: LocalStorageService,\r\n private activatedRoute: ActivatedRoute,\r\n private actionUpdaterService: ActionUpdaterService,\r\n private featureService: FeatureService,\r\n private eventBusService: EventBusService,\r\n private cartTotalService: CartTotalService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n const onError = (error: ApiError) => {\r\n this.actionUpdaterService.announceError(error);\r\n };\r\n\r\n\r\n if (!this.isPassBooking) {\r\n this.loadingData = true;\r\n const success = (data: LoyaltyTripStatusResponse) => {\r\n this.customerLinkedToProgram = data.CustomerLinkedToProgram;\r\n this.tripIsEligibleForCustomersProgram = data.CustomerEligibleTrip;\r\n this.tripIsEligibleForAnyProgram = data.ProgramEligibleTrip;\r\n this.freeTripAvailable = data.FreeTripAvailable;\r\n if (this.freeTripAvailable) {\r\n this.customerWishesToUseFreeTrip = true;\r\n this.onFreeTripSelected.emit({ freeTripSelected: this.customerWishesToUseFreeTrip });\r\n }\r\n this.tripStatusDescription = data.TripStatusDescription;\r\n this.loyaltyProgramDescription = data.LoyaltyProgramDescription;\r\n this.loyaltyPrograms = data.LoyaltyPrograms;\r\n this.customerNotLinkedToProgramButTripIsEligible =\r\n !this.customerLinkedToProgram &&\r\n this.tripIsEligibleForAnyProgram &&\r\n !this.tripIsEligibleForCustomersProgram;\r\n if (this.customerNotLinkedToProgramButTripIsEligible) {\r\n this.eligibleProgram = this.loyaltyPrograms[0];\r\n }\r\n\r\n this.loadingData = false;\r\n };\r\n\r\n this.myGreyhoundService.getLoyaltyBalance(this.customerGuid).subscribe((response) => {\r\n this.loyaltyAvailable = response.LoyaltyAvailable;\r\n this.loyaltyPending = response.LoyaltyPending;\r\n this.totalLoyalty = this.loyaltyAvailable + this.loyaltyPending;\r\n this.balanceTime = response.BalanceDate;\r\n this.loadingBalance = false;\r\n }, onError);\r\n\r\n // this.passengersService.getLoyaltyTripStatus(this.customerGuid,\r\n // this.fareGuid,\r\n // this.travelGuid).subscribe(\r\n // result => success(result), onError\r\n // );\r\n }\r\n\r\n const customerGuid = !!this.initialDataService.userData ? this.initialDataService.userData.CustomerGuid : null;\r\n console.log('checking T&C status..');\r\n console.log(moment(this.initialDataService.userData.TCAcceptDate));\r\n console.log(moment(this.featureService.GetFeatureValue(Feature.LastTCUpdate)));\r\n console.log(moment(this.featureService.GetFeatureValue(Feature.LastTCUpdate)).isAfter(moment(this.initialDataService.userData.TCAcceptDate)) );\r\n console.log(this.localStorageService.getIfTCUpdated(customerGuid));\r\n if (moment(this.featureService.GetFeatureValue(Feature.LastTCUpdate)).isAfter(moment(this.initialDataService.userData.TCAcceptDate)) && this.localStorageService.getIfTCUpdated(customerGuid) === 'false') {\r\n // this.TCModal.show();\r\n this.updatedTC = false;\r\n } else {\r\n this.updatedTC = true;\r\n }\r\n this.CheckLoyaltyEligibility();\r\n }\r\n\r\n eligibleProgramSelected = () => {\r\n const programId = this.customerWishsToLinkToEligibleProgram ? this.eligibleProgram.ID : 0;\r\n this.onSigningUpToProgram.emit({ programId: programId });\r\n };\r\n\r\n freeTripSelected = () => {\r\n this.onFreeTripSelected.emit({ freeTripSelected: this.customerWishesToUseFreeTrip });\r\n };\r\n\r\n forwardOnSigningUpToProgram({ programId }: { programId: number }) {\r\n this.onSigningUpToProgram.emit({ programId: programId });\r\n }\r\n\r\n switchUser = () => {\r\n // this.modalManager.openProcessingScreen('Loading login page...'); // TODO refactor to ng2 modal manager\r\n let returnUrlPartial = `${this.initialDataService.express.PassengersUrl}?`;\r\n if (this.isPassBooking) {\r\n const categoryreference = this.categoryReference,\r\n passreference = this.passReference;\r\n returnUrlPartial += `passreference=${passreference}&categoryreference=${categoryreference}`;\r\n } else {\r\n const fareGuid = this.fareGuid,\r\n travelGuid = this.travelGuid;\r\n returnUrlPartial += `travelGuid=${travelGuid}&fareGuid=${fareGuid}`;\r\n }\r\n window.location.href = `${this.initialDataService.loginUrl}?returnUrl=${returnUrlPartial}&logout=true`;\r\n };\r\n\r\n ngAfterViewInit() {\r\n \r\n }\r\n\r\n AcceptNewTC() {\r\n this.updatingTC = true;\r\n const customerGuid = !!this.initialDataService.userData ? this.initialDataService.userData.CustomerGuid : null;\r\n this.myGreyhoundService.updateCustomerTC(customerGuid).subscribe((result) => {\r\n this.localStorageService.setIfTCUpdated(customerGuid, true);\r\n this.updatingTC = false;\r\n this.updatedTC = true;\r\n });\r\n }\r\n\r\n CheckLoyaltyEligibility() {\r\n const booking = this.localStorageService.getOfflineBooking();\r\n\r\n const options = this.cartTotalService.getExpressCartTotalOptions(booking.travels, 1, null, false, this.customerGuid);\r\n\r\n this.cartTotalService.postCartTotal(options, (response) => {\r\n this.loyaltyAccrued = response.CreditsEarned;\r\n this.loyaltyRedemption = response.RedemptionPortion;\r\n }, null, null, null);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/loyalty-details/loyalty-details.component.ts","module.exports = \"
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/loyalty-program-list/loyalty-program-list.component.html\n// module id = ./src/app/travel-products/product-passenger-details/loyalty-program-list/loyalty-program-list.component.html\n// module chunks = travel-products.module","import { Input, EventEmitter, Component, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'gaweb-loyalty-program-list',\r\n templateUrl: './loyalty-program-list.component.html'\r\n})\r\nexport class LoyaltyProgramListComponent {\r\n @Input() loyaltyPrograms;\r\n @Output() onSigningUpToProgram: EventEmitter = new EventEmitter();\r\n @Input() customerProgram;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/loyalty-program-list/loyalty-program-list.component.ts","module.exports = \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n My Greyhound\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Welcome back, {{salutation}}\\r\\n Log out\\r\\n \\r\\n

\\r\\n
\\r\\n
\\r\\n This booking will be linked to your My Greyhound account.\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n My Greyhound\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{('ProductLoginDescription' | translate) | async }}\\r\\n
\\r\\n\\r\\n
0\\\" class=\\\"col-xs-12 text-center\\\">\\r\\n If you are a Greyhound Rewards member you can earn up to ${{totals.CreditsEarned | number:'1.2-2'}} in {{('LoyaltyUnitPlural' | translate) | async }} credit on this\\r\\n booking by logging into your My Greyhound account.\\r\\n
\\r\\n
\\r\\n This booking is not eligible for credits but you can still pay for it using your available\\r\\n {{('LoyaltyUnit' | translate) | async }} balance.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Don't have an account? Sign up now

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/my-greyhound-login/my-greyhound-login.component.html\n// module id = ./src/app/travel-products/product-passenger-details/my-greyhound-login/my-greyhound-login.component.html\n// module chunks = travel-products.module","import { Component, OnInit, Output, EventEmitter, ViewChild, Input } from '@angular/core';\r\nimport { InitialDataService } from '../../../initial-data.service'\r\nimport { ModalDirective } from 'ngx-bootstrap';\r\nimport { moment } from 'ngx-bootstrap/chronos/test/chain';\r\nimport { Feature, FeatureService } from '../../../shared/services/feature.service';\r\nimport { ModalPopupMainPageEvent } from '../../../shared/models/app-events-types.model';\r\nimport { ModalPopupMainPageEventWrapper } from '../../../shared/models/app-events.model';\r\nimport { EventBusService } from '../../../shared/services/event-bus.service';\r\nimport { MyGreyhoundService } from '../../../my-greyhound/my-greyhound.service';\r\nimport { LocalStorageService } from '../../../shared/services/local-storage.service';\r\nimport { Totals } from 'app/shared/models/booking.model';\r\n\r\n@Component({\r\n selector: 'gaweb-my-greyhound-login',\r\n templateUrl: './my-greyhound-login.component.html'\r\n})\r\nexport class MyGreyhoundLoginComponent implements OnInit {\r\n @ViewChild('TCModal') public TCModal: ModalDirective;\r\n @Output() hideLoginPrompt: EventEmitter = new EventEmitter();\r\n\r\n @Input() totals: Totals;\r\n @Input() isPassBooking = true;\r\n\r\n salutation: string;\r\n isLoggedIn = false;\r\n updatingTC = false;\r\n\r\n public config = {\r\n animated: true,\r\n keyboard: true,\r\n backdrop: false,\r\n ignoreBackdropClick: false\r\n };\r\n\r\n constructor(private initialDataService: InitialDataService,\r\n private eventBusService: EventBusService,\r\n private myGreyhoundService: MyGreyhoundService,\r\n private featureService: FeatureService,\r\n private localStorageService: LocalStorageService) { }\r\n\r\n ngOnInit() {\r\n this.isLoggedIn = this.initialDataService.isLoggedIn;\r\n if (this.isLoggedIn) {\r\n this.salutation = this.initialDataService.userData.Salutation;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isLoggedIn == false) {\r\n return;\r\n }\r\n const customerGuid = !!this.initialDataService.userData ? this.initialDataService.userData.CustomerGuid : null;\r\n\r\n if (moment(this.featureService.GetFeatureValue(Feature.LastTCUpdate)).isAfter(moment(this.initialDataService.userData.TCAcceptDate)) && this.localStorageService.getIfTCUpdated(customerGuid) === 'false') {\r\n //this.TCModal.show();\r\n }\r\n }\r\n\r\n AcceptNewTC() {\r\n this.updatingTC = true;\r\n const customerGuid = !!this.initialDataService.userData ? this.initialDataService.userData.CustomerGuid : null;\r\n this.myGreyhoundService.updateCustomerTC(customerGuid).subscribe((result) => {\r\n this.localStorageService.setIfTCUpdated(customerGuid, true);\r\n this.updatingTC = false;\r\n this.hideModal();\r\n });\r\n }\r\n\r\n showModal() {\r\n this.TCModal.show();\r\n const ev = new ModalPopupMainPageEvent(true);\r\n this.eventBusService.emit(new ModalPopupMainPageEventWrapper(ev));\r\n }\r\n hideModal() {\r\n this.TCModal.hide();\r\n const ev = new ModalPopupMainPageEvent(false);\r\n this.eventBusService.emit(new ModalPopupMainPageEventWrapper(ev));\r\n }\r\n\r\n closeComponent() {\r\n this.hideLoginPrompt.emit();\r\n }\r\n\r\n login = () => {\r\n if(this.isLoggedIn){\r\n var returnUrl = this.getReturnUrl();\r\n this.myGreyhoundService.logoutUser(returnUrl).subscribe((result) => {\r\n //window.location.href = `${window.location.pathname}${window.location.search}`;\r\n this.isLoggedIn = false;\r\n },\r\n error => {\r\n window.location.href = `${window.location.pathname}${window.location.search}`;\r\n });\r\n } else {\r\n window.location.href = `/my-greyhound/login?returnUrl=${this.getReturnUrl()}`; // TODO refactor to use initial data like this.initialData.LoginUrl + this.bookingsService.buildReturnQueryParams(this.isPassBooking, this.initialData.Express.PassengersUrl);\r\n }\r\n }\r\n\r\n signUp = () => {\r\n //this.modalManager.openProcessingScreen(\"Loading signup page...\");// TODO change to ng2 modalmanager\r\n window.location.href = `/my-greyhound/join?returnUrl=${this.getReturnUrl()}`; // TODO refactor to use initial data like this.initialData.RegisterUrl + this.bookingsService.buildReturnQueryParams(this.isPassBooking, this.initialData.Express.PassengersUrl);\r\n }\r\n\r\n private getReturnUrl() {\r\n return encodeURIComponent(`${window.location.pathname}${window.location.search}`);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/my-greyhound-login/my-greyhound-login.component.ts","module.exports = \"
\\r\\n
\\r\\n Passenger Details\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/passenger-details-selector/passenger-detail-wrapper.component.html\n// module id = ./src/app/travel-products/product-passenger-details/passenger-details-selector/passenger-detail-wrapper.component.html\n// module chunks = travel-products.module","import { OnInit, Input, Output, Component, EventEmitter } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { PassengerFormModel } from 'app/shared/models/passenger.model';\r\nimport { ErrorService } from 'app/shared/services/error.service';\r\nimport { ApplicationError } from 'app/shared/errors/ApplicationError';\r\nimport { EventBusService } from 'app/shared/services/event-bus.service';\r\nimport { SavedFormEventWrapper } from 'app/shared/models/app-events.model';\r\nimport { SavedFormEvent } from 'app/shared/models/app-events-types.model';\r\nimport { GxConstants } from 'app/shared/constants/gx.constants';\r\n\r\n@Component({\r\n selector: 'gaweb-passenger-detail-wrapper',\r\n templateUrl: `./passenger-detail-wrapper.component.html`,\r\n styleUrls: []\r\n})\r\nexport class PassengerDetailWrapperComponent implements OnInit {\r\n @Input() isPassBooking: boolean;\r\n passengerForm: FormGroup;\r\n isFormSubmitted: boolean;\r\n passenger: PassengerFormModel;\r\n @Input()\r\n set model(m: PassengerDetailWrapperComponentModel) {\r\n this.passenger = m.passenger;\r\n this.maxPassengers = m.maxPassengers;\r\n this.hideConcessionCard1 = true;\r\n this.hideConcessionCard2 = true;\r\n if (!this.isPassBooking) {\r\n this.hideConcessionCard1 = !(this.passenger.concessionCount > 0);\r\n this.hideConcessionCard2 = this.passenger.concessionCount !== 2;\r\n }\r\n this.hideStudentCard1 = true;\r\n this.hideStudentCard2 = true;\r\n if (!this.isPassBooking) {\r\n this.hideStudentCard1 = !(this.passenger.studentCount > 0);\r\n this.hideStudentCard2 = this.passenger.studentCount !== 2;\r\n }\r\n var that = this;\r\n setTimeout(function(){\r\n if (!that.isPassBooking) {\r\n that.hideConcessionCard1 = !(that.passenger.concessionCount > 0);\r\n that.hideConcessionCard2 = that.passenger.concessionCount !== 2;\r\n }\r\n\r\n if (!that.isPassBooking) {\r\n that.hideStudentCard1 = !(that.passenger.studentCount > 0);\r\n that.hideStudentCard2 = that.passenger.studentCount !== 2;\r\n }\r\n }, 100);\r\n this.buildForm(this.passenger, this.hideConcessionCard1, this.hideConcessionCard2, this.hideStudentCard1, this.hideStudentCard2);\r\n }\r\n maxPassengers: number;\r\n @Input() nursedInfantCount: number;\r\n hideConcessionCard1: boolean;\r\n hideConcessionCard2: boolean;\r\n hideStudentCard1: boolean;\r\n hideStudentCard2: boolean;\r\n numberOfPassengersPrefixText: string;\r\n\r\n get males(): number { return this.passengerForm.get('males').value; }\r\n\r\n setMales(value: number) {\r\n this.errorService.reset();\r\n this.setFormMales(value);\r\n const passengersRemaining = (value + this.females) !== this.maxPassengers;\r\n if (passengersRemaining) {\r\n this.setFemales(this.maxPassengers - value);\r\n }\r\n\r\n this.checkIfFormIsValid(false);\r\n }\r\n get females(): number { return this.passengerForm.get('females').value; }\r\n\r\n setFemales(value: number) {\r\n this.errorService.reset();\r\n this.setFormFemales(value);\r\n const passengersRemaining = (value + this.males) !== this.maxPassengers;\r\n if (passengersRemaining) {\r\n this.setMales(this.maxPassengers - value);\r\n }\r\n\r\n this.checkIfFormIsValid(false); \r\n }\r\n private setFormFemales(value: number): void {\r\n this.passengerForm.patchValue({ 'females': value });\r\n }\r\n private setFormMales(value: number): void {\r\n this.passengerForm.patchValue({ 'males': value });\r\n }\r\n constructor(private _fb: FormBuilder,\r\n private errorService: ErrorService,\r\n private eventBusService: EventBusService) {\r\n this.isFormSubmitted = false;\r\n this.hideConcessionCard1 = false;\r\n this.hideConcessionCard2 = false;\r\n }\r\n ngOnInit(): void {\r\n this.numberOfPassengersPrefixText = (this.nursedInfantCount === 0 || !this.nursedInfantCount)\r\n ? 'Total'\r\n : 'Total Seated';\r\n }\r\n private buildForm(\r\n passenger: PassengerFormModel,\r\n hideConcessionCard1: boolean,\r\n hideConcessionCard2: boolean,\r\n hideStudentCard1: boolean,\r\n hideStudentCard2: boolean\r\n ) {\r\n const validatorsConcessionCard1 = hideConcessionCard1 ? null : Validators.required;\r\n const validatorsConcessionCard2 = hideConcessionCard2 ? null : Validators.required;\r\n const validatorsStudentCard1 = hideStudentCard1 ? null : Validators.required;\r\n const validatorsStudentCard2 = hideStudentCard2 ? null : Validators.required;\r\n const validatorsGender = this.isPassBooking ? Validators.required : null;\r\n\r\n if (passenger.firstName != null && passenger.firstName.length > 10) {\r\n passenger.firstName = passenger.firstName.substr(0, 10);\r\n }\r\n this.passengerForm = this._fb.group({\r\n males: [passenger.males, null],\r\n females: [passenger.females, null],\r\n firstName: [passenger.firstName,\r\n [\r\n Validators.required, Validators.maxLength(10),\r\n Validators.pattern(GxConstants.FIRST_LAST_NAME_PATTERN)\r\n ]],\r\n surname: [passenger.surname,\r\n [\r\n Validators.required,\r\n Validators.maxLength(30),\r\n Validators.pattern(GxConstants.FIRST_LAST_NAME_PATTERN)\r\n ]],\r\n email: [passenger.email,\r\n [\r\n Validators.required,\r\n Validators.email\r\n ]],\r\n phone: [passenger.phone,\r\n [\r\n Validators.pattern(GxConstants.PHONE_PATTERN),\r\n Validators.maxLength(15),\r\n Validators.required\r\n ]],\r\n country: [passenger.country, Validators.required],\r\n gender: [passenger.gender, validatorsGender],\r\n concessionCard1: [passenger.concessionCard1, validatorsConcessionCard1],\r\n concessionCard2: [passenger.concessionCard2, validatorsConcessionCard2],\r\n studentCard1: [passenger.studentCard1, validatorsStudentCard1],\r\n studentCard2: [passenger.studentCard2, validatorsStudentCard2]\r\n });\r\n\r\n if (passenger.males != null) {\r\n this.setMales(passenger.males);\r\n } else {\r\n this.setMales(this.maxPassengers);\r\n }\r\n const isSubmitting = false;\r\n if (!!passenger) {\r\n this.checkIfFormIsValid(isSubmitting);\r\n }\r\n this.passengerForm.get('firstName').valueChanges.subscribe(v => {\r\n this.checkIfFormIsValid(isSubmitting);\r\n });\r\n this.passengerForm.get('surname').valueChanges.subscribe(v => {\r\n this.checkIfFormIsValid(isSubmitting);\r\n });\r\n this.passengerForm.get('email').valueChanges.subscribe(v => {\r\n this.checkIfFormIsValid(isSubmitting);\r\n });\r\n // there is no phone because it's triggered from the child component\r\n this.passengerForm.get('country').valueChanges.subscribe(v => {\r\n this.checkIfFormIsValid(isSubmitting);\r\n });\r\n if (!!validatorsGender) {\r\n this.passengerForm.get('gender').valueChanges.subscribe(v => {\r\n this.onGenderChanged(v, isSubmitting);\r\n });\r\n }\r\n if (!!validatorsConcessionCard1) {\r\n this.passengerForm.get('concessionCard1').valueChanges.subscribe(v => {\r\n this.checkIfFormIsValid(isSubmitting);\r\n });\r\n }\r\n if (!!validatorsConcessionCard2) {\r\n this.passengerForm.get('concessionCard2').valueChanges.subscribe(v => {\r\n this.checkIfFormIsValid(isSubmitting);\r\n });\r\n }\r\n if (!!validatorsConcessionCard1) {\r\n this.passengerForm.get('studentCard1').valueChanges.subscribe(v => {\r\n this.checkIfFormIsValid(isSubmitting);\r\n });\r\n }\r\n if (!!validatorsConcessionCard2) {\r\n this.passengerForm.get('studentCard2').valueChanges.subscribe(v => {\r\n this.checkIfFormIsValid(isSubmitting);\r\n });\r\n }\r\n\r\n this.checkIfFormIsValid(false);\r\n }\r\n onGenderChanged = (gender: string, isSubmitting: boolean) => {\r\n if (gender === 'M') {\r\n this.setFormMales(1);\r\n this.setFormFemales(0);\r\n } else if (gender === 'F') {\r\n this.setFormFemales(1);\r\n this.setFormMales(0);\r\n }\r\n this.checkIfFormIsValid(isSubmitting);\r\n }\r\n public checkIfFormIsValid(isSubmitting: boolean): { sf: SavedFormEvent, form?: FormGroup } {\r\n this.errorService.reset();\r\n this.isFormSubmitted = false;\r\n let sf = new SavedFormEvent(this.isFormSubmitted);\r\n \r\n this.passengerForm.updateValueAndValidity();\r\n if (this.passengerForm.invalid) {\r\n if (isSubmitting) {\r\n this.errorService.dispatchFormError(this.passengerForm);\r\n } else {\r\n this.eventBusService.emit(new SavedFormEventWrapper(sf));\r\n }\r\n return { sf };\r\n }\r\n\r\n if (!this.isGenderSelectionValid()) {\r\n if (isSubmitting) {\r\n this.errorService.dispatchError(new\r\n ApplicationError(`Total of male and female passengers don't match total passengers.`),\r\n 'passengerForm');\r\n } else {\r\n this.eventBusService.emit(new SavedFormEventWrapper(sf));\r\n }\r\n return { sf };\r\n }\r\n this.isFormSubmitted = true;\r\n sf = new SavedFormEvent(this.isFormSubmitted, this.males, this.females);\r\n this.eventBusService.emit(new SavedFormEventWrapper(sf));\r\n return { sf, form: this.passengerForm };\r\n }\r\n isGenderSelectionValid() {\r\n if (this.isPassBooking) { return true; }\r\n return this.males + this.females === this.maxPassengers;\r\n }\r\n}\r\n\r\nexport class PassengerDetailWrapperComponentModel {\r\n constructor(public passenger: PassengerFormModel, public maxPassengers: number) { }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/passenger-details-selector/passenger-detail-wrapper.component.ts","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Please enter your first name.\\r\\n First name must be at least 2 characters.\\r\\n First name must be no longer than 10 characters.\\r\\n !\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Please enter your surname.\\r\\n Surname must be at least 2 characters.\\r\\n Surname must be no longer than 30 characters.\\r\\n !\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Please enter your email.\\r\\n Please enter a valid email.\\r\\n !\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Please enter your phone number.\\r\\n Please enter a valid phone number.\\r\\n Phone number must be no longer than 15 characters.\\r\\n !\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n Please select your country.\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/passenger-details-selector/passenger-details-selector.component.html\n// module id = ./src/app/travel-products/product-passenger-details/passenger-details-selector/passenger-details-selector.component.html\n// module chunks = travel-products.module","import { OnInit, Input, Output, Component, EventEmitter } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { InitialDataService } from 'app/initial-data.service';\r\nimport { PassengerFormModel } from 'app/shared/models/passenger.model';\r\n\r\n@Component({\r\n selector: 'gaweb-passenger-details-selector',\r\n templateUrl: `./passenger-details-selector.component.html`,\r\n styleUrls: []\r\n})\r\nexport class PassengerDetailSelectorComponent implements OnInit {\r\n @Input() isFormSubmitted: boolean;\r\n @Input() hideConcessionCard1: boolean;\r\n @Input() hideConcessionCard2: boolean;\r\n passengerForm: FormGroup;\r\n @Output() formChange = new EventEmitter();\r\n @Output() checkIfFormIsValid = new EventEmitter();\r\n @Input('form')\r\n set form(form: FormGroup) {\r\n this.passengerForm = form;\r\n if (this.passengerForm.controls['country'].value == null) {\r\n this.passengerForm.patchValue({ 'country': 'AU' });\r\n }\r\n this.formChange.emit(form);\r\n }\r\n get form(): FormGroup {\r\n return this.passengerForm;\r\n }\r\n @Input() showGender: boolean;\r\n @Input() isPass: boolean;\r\n countries: Array<{\r\n id: string,\r\n description: string\r\n }>;\r\n constructor(private initialData: InitialDataService) {\r\n this.countries = this.initialData.countries.map(function (country) {\r\n // should return Core SelectListDataItem\r\n return { id: country.Code, description: country.CountryName };\r\n });\r\n\r\n }\r\n onKeyUpPhone() {\r\n this.checkIfFormIsValid.emit(false);\r\n }\r\n ngOnInit(): void {\r\n\r\n }\r\n // onSelectionChanging(id) { // TODO check once select-list works\r\n // this.passenger.country = id;\r\n // }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/passenger-details-selector/passenger-details-selector.component.ts","module.exports = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n

Loading passenger information...

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n

Saving passenger information...

\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n * Required\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Please enter your first name.\\r\\n First name must be at least 2 characters.\\r\\n First name must be no longer than 10 characters.\\r\\n !\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n Please enter your surname.\\r\\n Surname must be at least 2 characters.\\r\\n Surname must be no longer than 30 characters.\\r\\n !\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Please enter your email.\\r\\n Please enter a valid email.\\r\\n !\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n Please enter your phone number.\\r\\n Please enter a valid phone number.\\r\\n Phone number must be no longer than 15 characters.\\r\\n !\\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Please select your country.\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n Please enter your visa grant number\\r\\n Please enter at least 13 digits\\r\\n !\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/passenger-details/passenger-details.component.html\n// module id = ./src/app/travel-products/product-passenger-details/passenger-details/passenger-details.component.html\n// module chunks = travel-products.module","import { Component, OnInit, Input, trigger, transition, style, animate, state, Output, EventEmitter } from '@angular/core';\r\nimport { Booking, TourOrExperience, FareType } from '../../../shared/models/booking.model';\r\nimport { Validators, FormGroup, FormArray, FormBuilder, AbstractControl } from '@angular/forms';\r\nimport { Passenger, PassengerFormModel, UpdatePassengerOption } from '../../../shared/models/passenger.model';\r\nimport { Country } from '../../../shared/models/country.model';\r\nimport { TravelProductService, TravelPackage, FareTypeChangedEvent } from '../../../shared/services/travel-product.service';\r\nimport { InitialDataService } from '../../../initial-data.service';\r\nimport { ActionUpdaterService, ApiError, ApiServerError } from '../../../shared/services/action-updater.service';\r\nimport { ProductTypeUrl } from 'app/shared/models/enums/ProductTypeUrl.enum';\r\nimport { hiddenCollapseAnimation } from 'app/shared/animations/hidden-collapse-animation';\r\nimport { UpdatePassengerGuidsOptions, UpdateBookingOptions } from 'app/shared/models/events.model';\r\nimport { PassengerOptionsStateService } from 'app/shared/services/passenger-options-state.service';\r\nimport { GxConstants } from '../../../shared/constants/gx.constants';\r\nimport { DeviceService } from '../../../shared/services/device.service';\r\nimport { LocalStorageService } from 'app/shared/services/local-storage.service';\r\n\r\n@Component({\r\n selector: 'gaweb-passenger-details',\r\n animations: [hiddenCollapseAnimation],\r\n templateUrl: `./passenger-details.component.html`\r\n})\r\nexport class PassengerDetailsComponent implements OnInit {\r\n @Output() onPassengerUpdated: EventEmitter = new EventEmitter();\r\n private _bookings: Array;\r\n @Input() set bookings(bs: Array) {// generated booking or loaded booking. Always generated when it's a package.\r\n this._bookings = bs;\r\n }\r\n get bookings() {\r\n return this._bookings;\r\n }\r\n private _generatedBookings: Array;\r\n @Input() set generatedBookings(value: Array) {\r\n this._generatedBookings = value;\r\n }\r\n get generatedBookings() {\r\n return this._generatedBookings;\r\n }\r\n @Input() loadingBookings: boolean;\r\n @Input()\r\n productType: ProductTypeUrl;\r\n showDetailsArray: Array = [];\r\n savingDataArray: Array = [];\r\n public passengerForm: FormGroup;\r\n countries: Array;\r\n defaultGender = 'M';\r\n defaultCountry = 'Home Country*';\r\n private bookingGuidToSavePassengers: string;\r\n requiresVisa = false;\r\n\r\n constructor(private _fb: FormBuilder,\r\n private travelPackageService: TravelProductService,\r\n private localStorageService: LocalStorageService,\r\n private actionUpdaterService: ActionUpdaterService,\r\n private initialDataService: InitialDataService,\r\n private passengerOptionsStateService: PassengerOptionsStateService,\r\n private deviceService: DeviceService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.travelPackageService.getCountries().subscribe(\r\n (countries) => this.countries = countries\r\n );\r\n\r\n this.passengerForm = this._fb.group({\r\n passengers: this._fb.array([\r\n // this.initPassenger(new Passenger()),\r\n ])\r\n });\r\n\r\n }\r\n // tslint:disable-next-line:max-line-length\r\n public setPassengersFromBookings(bookings: Booking[], generatedBookings: Booking[], savedPassengerGuid?: string, updatePassengers?: boolean): void {\r\n if (!!bookings && bookings.length > 0) {\r\n this.bookings = bookings;\r\n // tslint:disable-next-line:max-line-length\r\n this.bookingGuidToSavePassengers = this.bookings[0].BookingGuid; // TODO this shouldn't be necessary...but in savePassengerFormGroup the bookings[0] is different from this one?\r\n if (!updatePassengers) {\r\n return;\r\n }\r\n //this.clearPassengers();\r\n\r\n for(var i = 0; i < this.bookings.length; i++){\r\n var bkg = this.bookings[i];\r\n if(bkg.Package){\r\n if(bkg.Package.FareTypes){\r\n for(var n = 0; n < bkg.Package.FareTypes.length; n++){\r\n var ft = bkg.Package.FareTypes[n];\r\n if(ft.Farebasis.RequiresVisa){\r\n bkg.Passengers.forEach((p) => p.RequiresVisa = true);\r\n break;\r\n }\r\n }\r\n } \r\n }\r\n }\r\n\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n case ProductTypeUrl.experience:\r\n /*\r\n *originalPassengers* are the original passengers from the booking that we chose to use to pay so we need\r\n their data to fill out the Passenger details\r\n\r\n *generatedBookings* should have as many passengers as the user selected,\r\n same as bookings[0].Passengers.filter((p: Passenger) => p.Index === 0)\r\n */\r\n const originalPassengers = bookings[0].Passengers.filter((p: Passenger) => p.PurchaseNumber === 0);\r\n bookings[0].Passengers.filter((p: Passenger) => Object.setPrototypeOf(p, Passenger.prototype).isANewPassenger())\r\n .forEach((passenger, index) => {\r\n const generatedPassengerId = passenger.PassengerGuid;\r\n if (!!originalPassengers[index]) {\r\n passenger = originalPassengers[index];\r\n }\r\n this.addPassenger(passenger, index, false,\r\n bookings, generatedBookings, generatedPassengerId);\r\n });\r\n break;\r\n case ProductTypeUrl.package:\r\n default:\r\n bookings.forEach((booking, index) => {\r\n const pax = booking.Passengers[0];\r\n this.addPassenger(booking.Passengers[0], index, false,\r\n bookings, generatedBookings, booking.Passengers[0].PassengerGuid)\r\n });\r\n }\r\n\r\n (this.passengerForm.get('passengers') as FormArray).controls.forEach(control => {\r\n control.get('firstName').valueChanges.subscribe(v => {\r\n this.passengerOptionsStateService.broadcastShouldDisplayDialog();\r\n });\r\n control.get('surname').valueChanges.subscribe(v => {\r\n this.passengerOptionsStateService.broadcastShouldDisplayDialog();\r\n });\r\n control.get('gender').valueChanges.subscribe(v => {\r\n this.passengerOptionsStateService.broadcastShouldDisplayDialog();\r\n });\r\n control.get('country').valueChanges.subscribe(v => {\r\n this.passengerOptionsStateService.broadcastShouldDisplayDialog();\r\n });\r\n control.get('email').valueChanges.subscribe(v => {\r\n this.passengerOptionsStateService.broadcastShouldDisplayDialog();\r\n });\r\n control.get('phone').valueChanges.subscribe(v => {\r\n this.passengerOptionsStateService.broadcastShouldDisplayDialog();\r\n });\r\n if(control.get('requiresVisa').value){\r\n control.get('visaNumber').setValidators([Validators.required, Validators.minLength(13)]);\r\n } else {\r\n control.get('visaNumber').clearValidators();\r\n }\r\n control.get('visaNumber').updateValueAndValidity();\r\n control.get('visaNumber').valueChanges.subscribe(v => {\r\n this.passengerOptionsStateService.broadcastShouldDisplayDialog();\r\n }); \r\n });\r\n }\r\n }\r\n\r\n public updatePassengerGuids(options: UpdatePassengerGuidsOptions): void {\r\n const passengersToUpdate = (this.passengerForm.controls['passengers']).controls;\r\n const updatedPassengers = options.passengers;\r\n const newPassengers = updatedPassengers.filter((p: Passenger) => Object.setPrototypeOf(p, Passenger.prototype).isANewPassenger());\r\n let i = 0;\r\n for (const currentPassenger of passengersToUpdate) {\r\n passengersToUpdate[i].patchValue({ 'passengerGuid': newPassengers[i].PassengerGuid });\r\n i++;\r\n }\r\n }\r\n initPassenger(passenger: Passenger): FormGroup {\r\n // initialize our passenger\r\n return this._fb.group({\r\n // tslint:disable-next-line:max-line-length\r\n firstName: [passenger.FirstName, [Validators.required, Validators.maxLength(10), Validators.pattern(GxConstants.FIRST_LAST_NAME_PATTERN)]],\r\n // tslint:disable-next-line:max-line-length\r\n surname: [passenger.Surname, [Validators.required, Validators.maxLength(30), Validators.pattern(GxConstants.FIRST_LAST_NAME_PATTERN)]],\r\n visaNumber: [passenger.VisaNumber, []],\r\n gender: [passenger.Gender || 'M', []],\r\n country: [passenger.Country || 'AU', Validators.required],\r\n email: [passenger.Email, [Validators.email, Validators.required]],\r\n phone: [passenger.Phone, [Validators.pattern(GxConstants.PHONE_PATTERN), Validators.required, Validators.maxLength(15)]],\r\n fareTypeDescription: [passenger.fareTypeDescription, []],\r\n visible: [passenger.visible, []],\r\n header: [passenger.header, []],\r\n requiresVisa: [passenger.RequiresVisa, []],\r\n passengerGuid: [passenger.PassengerGuid, []],\r\n visaPromoCode: [passenger.VisaPromoCode, []]\r\n }); \r\n }\r\n\r\n public passengerGroupIsPristineAndValid(i: number) {\r\n const passengerArray = this.passengerForm.controls['passengers'];\r\n return !passengerArray.controls[i].invalid && passengerArray.controls[i].pristine;\r\n }\r\n\r\n addPassenger(passenger: Passenger, index: number, isBeingUpdated: boolean,\r\n bookings = this.bookings, generatedBookings, passengerGuid: string) {\r\n // add passenger to the list\r\n const control = this.passengerForm.controls['passengers'];\r\n\r\n const firstNameNullOrEmpty = firstname => firstname == null || firstname === '';\r\n let passengerToUser: Passenger = !!passenger ? passenger : new Passenger();\r\n if (index === 0 && !!this.initialDataService.userData && firstNameNullOrEmpty(passenger.FirstName)) {\r\n passengerToUser = new Passenger();\r\n passengerToUser.FirstName = this.initialDataService.userData.FirstName;\r\n passengerToUser.Surname = this.initialDataService.userData.Surname;\r\n passengerToUser.Country = this.initialDataService.userData.Country;\r\n passengerToUser.Email = this.initialDataService.userData.Email;\r\n passengerToUser.Phone = this.initialDataService.userData.PhoneNumber;\r\n passengerToUser.Gender = this.initialDataService.userData.Gender;\r\n \r\n if (passengerToUser.FirstName != null) {\r\n passengerToUser.FirstName = passengerToUser.FirstName.substr(0, 10);\r\n }\r\n } else {\r\n let booking = this.localStorageService.getOfflineBooking();\r\n if(!!!booking){\r\n passengerToUser = new Passenger();\r\n passengerToUser.FirstName = booking.Passengers[0].FirstName;\r\n passengerToUser.Surname = booking.Passengers[0].Surname;\r\n passengerToUser.Country = booking.Passengers[0].Country;\r\n passengerToUser.Email = booking.Passengers[0].Email;\r\n passengerToUser.Phone = booking.Passengers[0].Phone;\r\n passengerToUser.Gender = booking.Passengers[0].Gender;\r\n }\r\n }\r\n passengerToUser.fareTypeDescription = this.getFareTypeForBooking(index, bookings);\r\n const header = `Passenger ${index + 1}`;\r\n passengerToUser.header = header + (!!passengerToUser.fareTypeDescription ? ' - ' + passengerToUser.fareTypeDescription : '');\r\n passengerToUser.visible = this.shouldPassengerBeDisplayed(index, bookings);\r\n if (!!passengerGuid) {\r\n passengerToUser.PassengerGuid = passengerGuid;\r\n }\r\n\r\n let passengerControl: AbstractControl;\r\n if (isBeingUpdated) {\r\n control.controls[index] = this.initPassenger(passengerToUser);\r\n passengerControl = control.controls[index];\r\n } else {\r\n control.push(this.initPassenger(passengerToUser));\r\n passengerControl = control.controls[control.length - 1];\r\n }\r\n\r\n passengerControl.markAsDirty();\r\n this.showDetailsArray[index] = !this.passengerGroupIsPristineAndValid(index);\r\n this.savingDataArray[index] = false;\r\n passengerControl.updateValueAndValidity();\r\n // tslint:disable-next-line:max-line-length\r\n passengerControl.patchValue({ 'phone': passengerControl.get('phone').value }); // <-- otherwise the validity of the phone is not checked\r\n\r\n }\r\n\r\n removePassenger(i: number) {\r\n const control = this.passengerForm.controls['passengers'];\r\n control.removeAt(i);\r\n }\r\n clearPassengers = () => {\r\n if (this.passengerForm) {\r\n const control = this.passengerForm.controls['passengers'];\r\n const length = control.length;\r\n for (let index = 0; index < length; index++) {\r\n this.removePassenger(0);\r\n }\r\n }\r\n }\r\n\r\n savePassengerFormGroup(index: number) {\r\n this.savingDataArray[index] = true;\r\n const control = this.passengerForm.controls['passengers'];\r\n const selectedPassenger = control.controls[index];\r\n let bookingGuid;\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n case ProductTypeUrl.experience:\r\n bookingGuid = this.bookingGuidToSavePassengers;\r\n break;\r\n case ProductTypeUrl.package:\r\n default:\r\n bookingGuid = this.bookings[index].BookingGuid;\r\n }\r\n this.savePassenger(selectedPassenger, bookingGuid)\r\n .subscribe((booking) => {\r\n // tslint:disable-next-line:max-line-length\r\n this.onPassengerUpdated.emit({ booking: booking, index: index, savedPassengerGuid: selectedPassenger.value.passengerGuid, emitPassengers: false });\r\n this.savingDataArray[index] = false;\r\n if (!this.deviceService.IsDesktop()) {\r\n this.showDetailsArray[index] = false;\r\n }\r\n\r\n selectedPassenger.markAsPristine();\r\n (this.passengerForm.controls['passengers']).controls[index] = selectedPassenger;\r\n\r\n if (this.deviceService.IsMobile()) {\r\n jQuery('html, body').animate({\r\n // tslint:disable-next-line:max-line-length\r\n scrollTop: jQuery('#passengerSection' + (index + 1)).position().top + 20 + parseInt(jQuery('.navbar').css('height').replace(/\\D/g, ''), 10)\r\n }, 500);\r\n }\r\n this.passengerOptionsStateService.broadcastShouldDisplayDialog();\r\n this.localStorageService.saveOfflineBooking(booking);\r\n }, (error: ApiServerError | ApiError) => {\r\n this.savingDataArray[index] = false;\r\n this.actionUpdaterService.onError(error);\r\n });\r\n }\r\n\r\n private savePassenger(control: AbstractControl, bookingGuid: string) {\r\n const formGroup = control as FormGroup;\r\n let passengerPhone = formGroup.controls['phone'].value;\r\n passengerPhone = passengerPhone.replace(/\\s+/g, ''); // remove spaces\r\n const passenger = new Passenger();\r\n passenger.Country = formGroup.controls['country'].value;\r\n passenger.FirstName = formGroup.controls['firstName'].value;\r\n passenger.Surname = formGroup.controls['surname'].value;\r\n passenger.Gender = formGroup.controls['gender'].value;\r\n passenger.Email = formGroup.controls['email'].value;\r\n passenger.Phone = passengerPhone;\r\n passenger.PassengerGuid = formGroup.controls['passengerGuid'].value;\r\n passenger.RequiresVisa = formGroup.controls['requiresVisa'].value;\r\n passenger.VisaNumber = formGroup.controls['visaNumber'].value;\r\n passenger.VisaPromoCode = formGroup.controls['visaPromoCode'].value;\r\n const option = new UpdatePassengerOption(passenger, bookingGuid);\r\n return this.travelPackageService.updatePassenger(option);\r\n }\r\n private calculateIndexFromLoadedBooking(index: number, bookings: Booking[]): number {\r\n let firstNewPassengerIndex = bookings[0].Passengers.findIndex((p: Passenger) => p.Index === 0);\r\n if (firstNewPassengerIndex === -1) { // if not found, we will return the same index\r\n firstNewPassengerIndex = 0;\r\n }\r\n return index + firstNewPassengerIndex;\r\n }\r\n private getFareTypeForBooking(index: number, bookings: Booking[]) {\r\n let description = null;\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n case ProductTypeUrl.experience:\r\n index = this.calculateIndexFromLoadedBooking(index, bookings);\r\n if (!!bookings && !!bookings[0] && !!bookings[0].Passengers[index]) {\r\n const purchaseNumber: number = bookings[0].Passengers[index].PurchaseNumber;\r\n const tour: TourOrExperience = bookings[0].Tours.find((tourOrExperience: TourOrExperience) =>\r\n Number(tourOrExperience.PurchaseNumber) === purchaseNumber &&\r\n tourOrExperience.ProductStatus === 1);\r\n if (!!tour && !!tour.FareTypes) { // TODO necessary?\r\n description = tour.FareTypes.find((faretype: FareType) => faretype.FareTypeCode === tour.SelectedFareType).Farebasis.DisplayDescription;\r\n if (description == null) {\r\n description = tour.FareTypes.find((faretype: FareType) => faretype.FareTypeCode === tour.SelectedFareType).Description;\r\n }\r\n }\r\n }\r\n break;\r\n case ProductTypeUrl.package:\r\n default:\r\n if (!!bookings && !!bookings[index]) {\r\n // description = bookings[index].Package.Inclusions[0].FareTypes[0].OnlineName;\r\n description = bookings[index].Package.FareTypes[0].Farebasis.DisplayDescription;\r\n if (description == null) {\r\n description = bookings[index].Package.FareTypes[0].Description;\r\n }\r\n }\r\n break;\r\n }\r\n return description;\r\n }\r\n private shouldPassengerBeDisplayed(index: number, bookings: Booking[]) {\r\n let display = true;\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n case ProductTypeUrl.experience:\r\n index = this.calculateIndexFromLoadedBooking(index, bookings);\r\n if (!!bookings && !!bookings[0] && !!bookings[0].Passengers[index]) {\r\n const purchaseNumber: number = bookings[0].Passengers[index].PurchaseNumber;\r\n const tour: TourOrExperience = bookings[0].Tours.find((tourOrExperience: TourOrExperience) =>\r\n Number(tourOrExperience.PurchaseNumber) === purchaseNumber &&\r\n tourOrExperience.ProductStatus === 1);\r\n if (!!tour) {\r\n display = tour.ProductStatus === 1;\r\n }\r\n }\r\n break;\r\n case ProductTypeUrl.package:\r\n default:\r\n break;\r\n }\r\n return display;\r\n }\r\n\r\n copyPassenger(formGroupIndex: number) {\r\n const passengersArray = this.passengerForm.controls['passengers'] as FormArray;\r\n const firstPassenger = passengersArray.controls[0] as FormGroup;\r\n const selectedPassenger = passengersArray.controls[formGroupIndex] as FormGroup;\r\n selectedPassenger.controls['country'].patchValue(firstPassenger.controls['country'].value);\r\n selectedPassenger.controls['email'].patchValue(firstPassenger.controls['email'].value);\r\n selectedPassenger.controls['phone'].patchValue(firstPassenger.controls['phone'].value);\r\n selectedPassenger.controls['gender'].patchValue(firstPassenger.controls['gender'].value);\r\n // tslint:disable-next-line:max-line-length\r\n selectedPassenger.patchValue({ 'phone': selectedPassenger.get('phone').value }); // <-- otherwise the validity of the phone goes from true to false each time we click on COPY DETAOLS...\r\n }\r\n\r\n onHeaderClicked(i: number) {\r\n this.showDetailsArray[i] = !this.showDetailsArray[i];\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/passenger-details/passenger-details.component.ts","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { TravelPackage, FareType, FareTypeChangedEvent } from '../../../../shared/services/travel-product.service';\r\n\r\n@Component({\r\n selector: 'gaweb-fare-type',\r\n template: `\r\n
\r\n
\r\n
\r\n {{fareType.farebasis.DisplayDescription || fareType.internetDescription}}\r\n \r\n
\r\n {{'$' + fareType.totalPrice}} \r\n or {{fareType.salePriceKM}}KM\r\n
\r\n
\r\n \r\n
\r\n
\r\n `,\r\n styles: [`\r\n .fare-type {\r\n padding-bottom: 7px;\r\n margin-bottom: 7px;\r\n border-bottom: 1px solid #405f98;\r\n }\r\n .fare-type__desc{\r\n font-weight: bold;\r\n text-transform: uppercase;\r\n }\r\n .fare-type__subtext{\r\n font-size: 11px;\r\n }\r\n `]\r\n})\r\nexport class FareTypeComponent implements OnInit {\r\n @Input() fareType: FareType;\r\n @Input() usePayWithKMs: boolean;\r\n @Input() index: number;\r\n @Input() fareTypeCount: number;\r\n @Output() onPassengerSelection: EventEmitter = new EventEmitter();\r\n max = 7;\r\n min = 0;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n onCounterUpdated(count) {\r\n const eventObj = new FareTypeChangedEvent(this.fareType, count);\r\n this.onPassengerSelection.emit(eventObj);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/passenger-options/fare-type/fare-type.component.ts","module.exports = \"
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

Loading booking information...

\\r\\n
\\r\\n
\\r\\n

{{('PassengerOptionsText' | translate) | async }}

\\r\\n
\\r\\n {{passengerSummary}}\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
Total Fare
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{'$'}}{{total | number:'1.0-2'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n or {{farePriceKMS}}KM\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n before extras, discounts and fees\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Choose Passengers

\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

\\r\\n Booking for a large group of passengers?\\r\\n

\\r\\n

\\r\\n Use our\\r\\n \\r\\n enquiry form\\r\\n or call us on 1300473946\\r\\n

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{('PassengerOptionsWarningText' | translate) | async }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/passenger-options/passenger-options.component.html\n// module id = ./src/app/travel-products/product-passenger-details/passenger-options/passenger-options.component.html\n// module chunks = travel-products.module","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild\r\n} from \"@angular/core\";\r\nimport { Dictionary } from \"../../../shared/models/dictonary.model\";\r\nimport { ApiError } from \"../../../shared/services/action-updater.service\";\r\nimport * as _ from \"lodash\";\r\nimport { ModalDirective, BsModalRef } from \"ngx-bootstrap/modal\";\r\nimport { Booking } from \"app/shared/models/booking.model\";\r\nimport { KmPassService } from \"app/shared/services/km-pass.service\";\r\nimport { collapseAnimation } from \"app/shared/animations/collapse-animation\";\r\nimport { Passenger } from \"app/shared/models/passenger.model\";\r\nimport { Feature, FeatureService } from \"app/shared/services/feature.service\";\r\nimport { PassengerOptionsStateService } from \"app/shared/services/passenger-options-state.service\";\r\nimport {\r\n FareTypeChangedEvent,\r\n FareType\r\n} from \"app/shared/services/travel-product.service\";\r\n\r\nexport interface PassengercOptionsChanged {\r\n fareTypeCounts: Dictionary;\r\n isTriggered: boolean;\r\n passenger: Passenger;\r\n}\r\n\r\n@Component({\r\n selector: \"gaweb-passenger-options\",\r\n animations: [collapseAnimation],\r\n templateUrl: \"./passenger-options.component.html\"\r\n})\r\nexport class PassengerOptionsComponent implements OnInit {\r\n usePayWithKMs: any;\r\n public alerts: Array = [];\r\n @ViewChild(\"childModal\") public childModal: ModalDirective;\r\n @ViewChild(\"modal2\") public modal2: ModalDirective;\r\n\r\n private _fareTypeCounts: Dictionary;\r\n @Input() set fareTypeCounts(value: Dictionary) {\r\n if (value) {\r\n this._fareTypeCounts = value;\r\n this.passengerSummary = this.getPassengerSummary(value);\r\n this.total = this.getTotal();\r\n this.farePriceKMS = this.getCostPassengersInKMS();\r\n this.fareTypes = this.getFareTypes(value);\r\n if (!this.allValuesAreZero()) {\r\n this.showTotals = true;\r\n }\r\n }\r\n }\r\n get fareTypeCounts(): Dictionary {\r\n return this._fareTypeCounts;\r\n }\r\n private passengercOptionsChangedHasBeenTriggered: boolean;\r\n @Output() onPassengercOptionsChanged: EventEmitter<\r\n any\r\n > = new EventEmitter();\r\n\r\n passengerSummary: string;\r\n public modalRef: BsModalRef;\r\n public config = {\r\n animated: true,\r\n keyboard: true,\r\n backdrop: true,\r\n class: \"flip\",\r\n ignoreBackdropClick: false\r\n };\r\n total: number;\r\n fareTypes: Array;\r\n showTotals = false;\r\n showSpinner = false;\r\n isLoggedIn: boolean;\r\n farePriceKMS: number;\r\n bookingNumber: number;\r\n canBePayedUsingKms: boolean;\r\n showTick: boolean;\r\n right: boolean;\r\n somePassengerHasChanged: boolean;\r\n private margin: number;\r\n private shouldDisplayWarningDialog: boolean;\r\n\r\n constructor(\r\n private kmPassService: KmPassService,\r\n private featureService: FeatureService,\r\n private passengerOptionsStateService: PassengerOptionsStateService\r\n ) {\r\n this.shouldDisplayWarningDialog = false;\r\n this.somePassengerHasChanged = false;\r\n this.usePayWithKMs = this.featureService.GetFeatureStatus(\r\n Feature.UsePayWithKMs\r\n );\r\n this.passengerOptionsStateService.onShouldDisplayDialog.subscribe(\r\n () => {\r\n this.shouldDisplayWarningDialog = true;\r\n }\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.fareTypes = this.getFareTypes(this.fareTypeCounts);\r\n }\r\n onClick() {\r\n this.childModal.show();\r\n }\r\n onHeaderClicked() {\r\n this.right = !this.right;\r\n }\r\n done() {\r\n if (this.allValuesAreZero()) {\r\n this.showTotals = true;\r\n this.alerts = [\r\n new ApiError(\"Please choose at least one passenger\")\r\n ];\r\n } else {\r\n if (\r\n this.shouldDisplayWarningDialog &&\r\n this.somePassengerHasChanged\r\n ) {\r\n this.modal2.show();\r\n } else {\r\n this.save();\r\n }\r\n this.showTotals = true;\r\n }\r\n }\r\n okModal() {\r\n this.save();\r\n }\r\n private save() {\r\n this.somePassengerHasChanged = false;\r\n this.shouldDisplayWarningDialog = false;\r\n this.alerts = [];\r\n this.childModal.hide();\r\n this.modal2.hide();\r\n this.passengerSummary = this.getPassengerSummary(this.fareTypeCounts);\r\n this.total = this.getTotal();\r\n this.farePriceKMS = this.getCostPassengersInKMS();\r\n this.kmPassService.broadcastSavePassengerOptions();\r\n if (!this.passengercOptionsChangedHasBeenTriggered) {\r\n const passengercOptionsChanged: PassengercOptionsChanged = {\r\n fareTypeCounts: this.fareTypeCounts,\r\n passenger: null,\r\n isTriggered: false\r\n };\r\n this.onPassengercOptionsChanged.emit(passengercOptionsChanged);\r\n }\r\n this.passengercOptionsChangedHasBeenTriggered = false;\r\n }\r\n public triggerOnPassengercOptionsChanged(passenger: Passenger) {\r\n this.passengercOptionsChangedHasBeenTriggered = true;\r\n const passengercOptionsChanged: PassengercOptionsChanged = {\r\n fareTypeCounts: this.fareTypeCounts,\r\n passenger: passenger,\r\n isTriggered: true\r\n };\r\n this.onPassengercOptionsChanged.emit(passengercOptionsChanged);\r\n }\r\n cancelModal() {\r\n this.modal2.hide();\r\n }\r\n getFareTypes(fareTypeCounts: Dictionary) {\r\n return _(fareTypeCounts)\r\n .mapValues((event: FareTypeChangedEvent) => event.fareType)\r\n .toArray()\r\n .value();\r\n }\r\n\r\n onPassengerSelection(changedEvent: FareTypeChangedEvent) {\r\n this.somePassengerHasChanged = true;\r\n // if (changedEvent.count != 0) {\r\n this.fareTypeCounts[changedEvent.fareType.fareTypeCode] = changedEvent;\r\n // } else {\r\n // var result = _.omit(this.fareTypeCounts, [changedEvent.fareType.fareTypeCode]);\r\n // this.fareTypeCounts = result as Dictonary;\r\n // }\r\n }\r\n\r\n getPassengerSummary = (\r\n fareTypeCounts: Dictionary\r\n ) => {\r\n let result = _(fareTypeCounts)\r\n .mapValues((f: FareTypeChangedEvent) => {\r\n if (f.count > 0) {\r\n return `${f.count}x ${f.fareType.farebasis.DisplayDescription ||\r\n f.fareType.descriptionToDisplay}`;\r\n //// return `${f.count}x ${f.fareType.descriptionToDisplay}`;\r\n }\r\n })\r\n .values()\r\n .compact()\r\n .join(\", \");\r\n if (!result) {\r\n result = \"Passenger Options\";\r\n }\r\n return result;\r\n };\r\n\r\n getFareTypeCount(fareTypeCode) {\r\n const currentValue: FareTypeChangedEvent = this.fareTypeCounts[\r\n fareTypeCode\r\n ];\r\n return currentValue ? currentValue.count : 0;\r\n }\r\n\r\n allValuesAreZero() {\r\n return _(this.fareTypeCounts)\r\n .values()\r\n .every((i: FareTypeChangedEvent) => i.count === 0);\r\n }\r\n\r\n private getTotal() {\r\n return _(this.fareTypeCounts)\r\n .map((i: FareTypeChangedEvent) => i.fareType.totalPrice * i.count)\r\n .sum();\r\n }\r\n\r\n private getCostPassengersInKMS() {\r\n const fareKms = _(this.fareTypeCounts)\r\n .map((i: FareTypeChangedEvent) => i.fareType.salePriceKM * i.count)\r\n .sum();\r\n if (!!fareKms && this.farePriceKMS !== fareKms) {\r\n this.kmPassService.broadcastFarePriceKMS(fareKms);\r\n }\r\n return fareKms;\r\n }\r\n public onHideSpinner() {\r\n this.showSpinner = false;\r\n }\r\n\r\n public onShowSpinner() {\r\n this.showSpinner = true;\r\n }\r\n\r\n public hideChildModal(): void {\r\n this.childModal.hide();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/passenger-options/passenger-options.component.ts","module.exports = \"\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Back\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n

{{loadingText}}

\\r\\n
\\r\\n
\\r\\n \\r\\n

{{productTitle}}

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Please complete all required sections above.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/product-passenger-details.component.html\n// module id = ./src/app/travel-products/product-passenger-details/product-passenger-details.component.html\n// module chunks = travel-products.module","import { Component, OnInit, ViewChild, ChangeDetectorRef, EventEmitter, Output, Input } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\n\r\nimport { ActivatedRoute, Router, Event, NavigationStart, Params, NavigationEnd } from '@angular/router';\r\nimport {\r\n TravelProductService, TravelPackage, FareType, CreateBookingsOption, FareTypeChangedEvent, ProductType,\r\n TicketBookingOptions, AddTourToBookingOption, AddProductAndPassengerToBookingOptions\r\n} from '../../shared/services/travel-product.service';\r\nimport { ActionUpdaterService, ApiError } from '../../shared/services/action-updater.service';\r\nimport { PassengerDetailsComponent } from './passenger-details/passenger-details.component';\r\nimport { Booking, TourOrExperience } from '../../shared/models/booking.model';\r\nimport { Dictionary } from './../../shared/models/dictonary.model';\r\nimport { BookingTotalComponent } from './booking-total/booking-total.component';\r\nimport {\r\n InitialDataService, Packages, Experiences, Accommodation, ExpressInitialData, TravelPassesInitialData\r\n} from './../../initial-data.service';\r\nimport { FormGroup, FormArray } from '@angular/forms';\r\nimport { ItineraryComponent } from '../../shared/components/itinerary/itinerary.component';\r\nimport { PassengerOptionsComponent, PassengercOptionsChanged } from './passenger-options/passenger-options.component';\r\nimport { BookingService } from '../../shared/services/booking.service';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\nimport * as _ from 'lodash';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { LocalStorageService } from 'app/shared/services/local-storage.service';\r\nimport { ProductTypeUrl } from 'app/shared/models/enums/ProductTypeUrl.enum';\r\nimport { AfterViewInit } from '@angular/core/src/metadata/lifecycle_hooks';\r\nimport { BookingTotalKms } from 'app/shared/models/booking-total.model';\r\nimport { KmPassService } from 'app/shared/services/km-pass.service';\r\nimport { KmPassComponent } from 'app/travel-products/product-passenger-details/km-pass/km-pass.component';\r\nimport { UpdatePassengerGuidsOptions, UpdateBookingOptions } from 'app/shared/models/events.model';\r\nimport { GxConstants } from 'app/shared/constants/gx.constants';\r\nimport { ProductUrl } from 'app/shared/models/availability.model';\r\nimport { ProductSummaryComponent } from 'app/travel-products/product-passenger-details/product-summary/product-summary.component';\r\nimport { DeviceService } from '../../shared/services/device.service';\r\nimport { PromoCodeComponent } from './promo-code/promo-code.component';\r\n\r\n\r\n\r\ndeclare var $: any;\r\n@Component({\r\n selector: 'gaweb-passenger-product-details',\r\n templateUrl: './product-passenger-details.component.html',\r\n styles: [`\r\n .errors-exist-msg {\r\n border: solid 1px red;\r\n height: 50px;\r\n color: red;\r\n padding: 15px;\r\n text-align: center;\r\n margin: 10px;\r\n margin-bottom: 20px;\r\n }\r\n `]\r\n})\r\nexport class ProductPassengerDetailsComponent implements OnInit, AfterViewInit {\r\n @ViewChild(PassengerDetailsComponent) passengerDetailsComponent: PassengerDetailsComponent;\r\n @ViewChild(BookingTotalComponent) bookingTotalComponent;\r\n @ViewChild(ItineraryComponent) itineraryComponent: ItineraryComponent;\r\n @ViewChild(KmPassComponent) kmPassComponent: KmPassComponent;\r\n @ViewChild(PassengerOptionsComponent) passengerOptionsComponent: PassengerOptionsComponent;\r\n @ViewChild(PromoCodeComponent) promoCodeComponent: PromoCodeComponent;\r\n\r\n urlToGoBack: string;\r\n loadingData = false;\r\n acceptedTC = false;\r\n bookings: Array; // generated booking or loaded bookings\r\n generatedBookings: Array;\r\n private productRef: string;\r\n showLoginPrompt = true;\r\n productTitle: string;\r\n private _passengerCounts: Dictionary;\r\n set passengerCounts(p: Dictionary) {\r\n this._passengerCounts = p;\r\n this.setFareTypesDescFromDict(p);\r\n }\r\n get passengerCounts(): Dictionary {\r\n return this._passengerCounts;\r\n }\r\n loadingBookings = false;\r\n confirming = false;\r\n masterBookingGuid: string;\r\n ev: Subject;\r\n productType: ProductTypeUrl;\r\n productTypeName: string;\r\n loadingText: string;\r\n bookingTotal: BookingTotalKms;\r\n passengerGuidFromLoadedBooking: string;\r\n loadedBooking: Booking;\r\n @Output() showBookTravelSectionChange: EventEmitter = new EventEmitter();\r\n @Input()\r\n showBookTravelSection: boolean;\r\n productUrl: ProductUrl;\r\n isBookingVerified: boolean;\r\n fareTypesDescriptions: string[];\r\n fareTypeKey: string;\r\n hasTravel = false;\r\n isPayingKms = false;\r\n lastClick: Date;\r\n bookingTotalProductTitle: string;\r\n promoDescription: string;\r\n hasPromo: boolean;\r\n\r\n private setBookings(bookings: any) {\r\n\r\n console.log('setBookings', bookings);\r\n if (bookings.length) {\r\n console.log('flag a');\r\n this.bookings = bookings;\r\n } else {\r\n console.log('flag b');\r\n this.bookings = [bookings];\r\n }\r\n if (!this.generatedBookings && !!bookings && !!bookings.length) {\r\n // just for the first time so ItineraryComponent receives the object with data when the BookingGuid from the url is undefined\r\n this.generatedBookings = bookings;\r\n }\r\n\r\n this.bookings.forEach(booking => {\r\n if (booking.Sectors != null && booking.Sectors.length > 0) {\r\n this.hasTravel = true;\r\n }\r\n });\r\n\r\n this.localStorageService.saveOnlineBooking(this.bookings[0]);\r\n }\r\n private setBookingsAndPassengers(bookings: Booking[], updatePassengers: boolean, savedPassengerGuid?: string) {\r\n this.setBookings(bookings);\r\n this.passengerDetailsComponent.setPassengersFromBookings(bookings, this.generatedBookings, savedPassengerGuid, updatePassengers);\r\n }\r\n constructor(public travelPackageService: TravelProductService,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private actionUpdaterService: ActionUpdaterService,\r\n private bookingService: BookingService,\r\n private location: Location,\r\n private initialDataService: InitialDataService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private titleService: Title,\r\n private localStorageService: LocalStorageService,\r\n private kmPassService: KmPassService,\r\n private deviceService: DeviceService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n this.fareTypeKey = params['faretype'];\r\n });\r\n this.hasPromo = false;\r\n this.ev = new Subject();\r\n this.titleService.setTitle('Passengers details - Greyhound Australia');\r\n this.actionUpdaterService.announceClear(true);\r\n this.setBookings([]);\r\n this.showBookTravelSection = false;\r\n this.productUrl = new ProductUrl(this.router.url, this.initialDataService);\r\n this.productType = this.productUrl.ProductTypeUrl;\r\n this.productTypeName = this.productUrl.ProductName;\r\n this.loadingText = `Loading travel ${this.productTypeName} information...`;\r\n\r\n if (!this.travelPackageService.currentProduct) {\r\n this.loadingData = true;\r\n // this.passengerOptionsComponent.onShowLoading();\r\n const productReference = this.activatedRoute.snapshot.params['product-reference'];\r\n const categoryReference = this.activatedRoute.snapshot.params['category-reference'];\r\n // tslint:disable-next-line:max-line-length\r\n const rootPathBack = this.productType === ProductTypeUrl.expressBooking ? this.productUrl.ProductAvailability : '/packages/' + categoryReference + '/' + productReference; // const rootPathBack = this.productType === ProductTypeUrl.expressBooking ? this.productUrl.ProductAvailability : this.productUrl.ProductDetailsUrl;\r\n\r\n console.log('rootPathBack', rootPathBack);\r\n this.urlToGoBack = `${rootPathBack}?${this.productTypeName}=${productReference}`;\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n case ProductTypeUrl.experience:\r\n this.travelPackageService.getTourExperience(productReference)\r\n .subscribe(\r\n (travelPackage) => {\r\n // this.passengerOptionsComponent.onHideLoading();\r\n this.onPackageLoaded(travelPackage);\r\n },\r\n this.actionUpdaterService.onError);\r\n break;\r\n case ProductTypeUrl.package:\r\n default:\r\n this.travelPackageService.getPackage(productReference)\r\n .subscribe(\r\n (travelPackage) => {\r\n // this.passengerOptionsComponent.onHideLoading();\r\n this.onPackageLoaded(travelPackage);\r\n },\r\n this.actionUpdaterService.onError);\r\n break;\r\n }\r\n\r\n\r\n } else {\r\n /* this.setPackageDataAndPassengerCountTypes(this.travelPackageService.currentPackage.fareTypes,\r\n this.travelPackageService.currentPackage); */\r\n this.onPackageLoaded(this.travelPackageService.currentProduct);\r\n }\r\n\r\n this.ev.subscribe(envnt => {\r\n if (!(envnt instanceof NavigationEnd) && envnt !== null) {\r\n return;\r\n }\r\n if (envnt === null && !!this.localStorageService.getRedirect()) {\r\n const sectors = document.querySelectorAll('gaweb-sector');\r\n let correct = true;\r\n if (sectors.length > 0) {\r\n const tripAdded = sectors[sectors.length - 1];\r\n if (this.deviceService.IsMobile()) {\r\n tripAdded.scrollIntoView();\r\n }\r\n } else {\r\n const itinerary = document.querySelector('#itinerary');\r\n if (!!itinerary) {\r\n if (this.deviceService.IsMobile()) {\r\n itinerary.scrollIntoView();\r\n }\r\n } else {\r\n correct = false;\r\n }\r\n }\r\n if (correct) {\r\n if (this.deviceService.IsMobile()) {\r\n window.scrollBy(0, -1 * document.querySelector('nav').offsetHeight);\r\n }\r\n }\r\n this.showBookTravelSectionChange.emit(true);\r\n /* this.showBookTravelSectionChange.emit(this.showBookTravelSection); */\r\n this.localStorageService.removeRedirect();\r\n }\r\n });\r\n\r\n\r\n const that = this;\r\n $('.checkbox').on('click', function () {\r\n if (that.lastClick != null && new Date().getTime() - that.lastClick.getTime() < 100) {\r\n return;\r\n }\r\n that.lastClick = new Date();\r\n\r\n if ($('#dataCheckbox').hasClass('checked')) {\r\n $('#dataCheckbox').removeClass('checked');\r\n $('#dataCheckboxInput').val('false');\r\n that.acceptedTC = false;\r\n } else {\r\n $('#dataCheckbox').addClass('checked');\r\n $('#dataCheckboxInput').val('true');\r\n that.acceptedTC = true;\r\n }\r\n });\r\n }\r\n private onPackageLoaded(travelPackage: TravelPackage) {\r\n this.loadingData = false;\r\n this.setPackageDataAndPassengerCountTypes(travelPackage.fareTypes, travelPackage);\r\n this.travelPackageService.currentProduct = travelPackage;\r\n\r\n this.activatedRoute.params.subscribe((params: Params) => {\r\n this.masterBookingGuid = params['bookingGuid'];\r\n if (this.masterBookingGuid) {\r\n this.loadingData = false;\r\n this.bootstrapPageFromBookingGuid(this.masterBookingGuid, travelPackage);\r\n this.showBookTravelSection = false;\r\n } else {\r\n let pathParts = window.location.href.split('/');\r\n let lastPart = pathParts[pathParts.length-1];\r\n if(lastPart.length == 36){\r\n this.masterBookingGuid = lastPart;\r\n this.loadingData = false;\r\n this.bootstrapPageFromBookingGuid(this.masterBookingGuid, travelPackage);\r\n this.showBookTravelSection = false;\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n onshowBookTravelSectionChanged(ev) {\r\n this.showBookTravelSection = ev;\r\n }\r\n\r\n back() {\r\n window.history.go(-2);\r\n }\r\n\r\n ngAfterViewInit() {\r\n // This is to avoid hitting the api on route change as we do on browser refresh\r\n // this.bootstrapPageOnRouteChange();\r\n // this avoids the 'Expression has changed after it was checked' error\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.ev.next(null);\r\n this.router.events.subscribe((evt) => {\r\n if (!(evt instanceof NavigationEnd)) {\r\n return;\r\n }\r\n if (evt.urlAfterRedirects.indexOf('add=true') !== -1) {\r\n this.localStorageService.saveRedirect();\r\n }\r\n });\r\n }\r\n\r\n private setPackageDataAndPassengerCountTypes(fareTypes, travelPackage: TravelPackage) {\r\n this.passengerCounts = this.getEmptyPassengerCountTypes(fareTypes);\r\n this.productRef = travelPackage.packageReference || travelPackage.tourReference;\r\n this.productTitle = travelPackage.title;\r\n if (!this.activatedRoute.snapshot.params['bookingGuid']) {\r\n if (!!this.passengerCounts[this.fareTypeKey]) {\r\n this.passengerCounts[this.fareTypeKey].count = 1;\r\n } else {\r\n this.passengerCounts[Object.keys(this.passengerCounts)[0]].count = 1;\r\n }\r\n const passengercOptionsChanged: PassengercOptionsChanged = {\r\n fareTypeCounts: this.passengerCounts,\r\n passenger: null,\r\n isTriggered: false\r\n };\r\n this.onPassengercOptionsChanged(passengercOptionsChanged);\r\n }\r\n }\r\n private setFareTypesDescFromDict(dict: Dictionary) {\r\n this.fareTypesDescriptions = [];\r\n const justOneFareType = Object.keys(dict).length === 1;\r\n for (const key of Object.keys(dict)) {\r\n const faretype: FareType = dict[key].fareType;\r\n let count: number = dict[key].count;\r\n if (count === 0 && justOneFareType) {\r\n count = 1; // case it comes from getEmptyPassengerCountTypes\r\n } else if (count === 0) {\r\n continue;\r\n }\r\n // tslint:disable-next-line:max-line-length\r\n const desc = faretype.farebasis.DisplayDescription || (faretype.farebasis.InternetDescription || faretype.descriptionToDisplay);\r\n if (!!desc) {\r\n this.fareTypesDescriptions.push(`${count}x ${desc}`);\r\n this.bookingTotalProductTitle = count + \" x \" + this.productTitle;\r\n }\r\n }\r\n }\r\n\r\n private bootstrapPageFromBookingGuid(bookingGuid: string, travelPackage: TravelPackage) {\r\n const customerLoggedInButNoCustomerGuidOnBooking = booking => !!this.initialDataService.userData && !booking.CustomerGuid;\r\n this.passengerOptionsComponent.onShowSpinner();\r\n this.bookingService.getBookings(bookingGuid).subscribe(\r\n (bookings: Array) => {\r\n // if (!!bookings[0] && !!bookings[0].BookingNumber) {\r\n // this.reloadBlankPage();\r\n // return;\r\n // }\r\n this.loadingData = false;\r\n this.passengerOptionsComponent.onHideSpinner();\r\n if (!this.isBookingVerified) { // just if it's a generated booking\r\n this.generatedBookings = bookings;\r\n }\r\n this.updateBookings(bookings);\r\n this.passengerCounts = this.getPassengerCountsFromBooking(travelPackage.fareTypes, bookings);\r\n if (customerLoggedInButNoCustomerGuidOnBooking(bookings[0])) {\r\n this.addCustomerIfReturningFromLogin(bookings[0].BookingGuid);\r\n }\r\n\r\n this.onPromoCodeChange(bookings[0].FareBasis[0].PromotionDescription);\r\n\r\n }, this.actionUpdaterService.onError);\r\n }\r\n\r\n private addCustomerIfReturningFromLogin(bookingGuid: string) {\r\n this.travelPackageService.addCustomerToBooking(bookingGuid, this.initialDataService.userData.CustomerGuid)\r\n .subscribe((msg) => {\r\n }, this.actionUpdaterService.onError);\r\n }\r\n\r\n private getPassengerCountsFromBooking = (fareTypes: Array, bookings: Array) => {\r\n // new object returned to aid one way data binding change and 'this' issues\r\n const dictionary = this.getEmptyPassengerCountTypes(fareTypes);\r\n let selectedFareTypeCode;\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n case ProductTypeUrl.experience:\r\n bookings[0].Tours.forEach((t) => {\r\n selectedFareTypeCode = t.SelectedFareType;\r\n\r\n dictionary[selectedFareTypeCode].count = dictionary[selectedFareTypeCode].count + 1;\r\n });\r\n break;\r\n case ProductTypeUrl.package:\r\n default:\r\n bookings.forEach((b) => {\r\n selectedFareTypeCode = b.Package.SelectedFareType;\r\n if(!selectedFareTypeCode && !!b.Package.FareTypes && b.Package.FareTypes.length > 0){\r\n selectedFareTypeCode = b.Package.FareTypes[0].FareTypeCode;\r\n }\r\n dictionary[selectedFareTypeCode].count = dictionary[selectedFareTypeCode].count + 1;\r\n });\r\n break;\r\n }\r\n\r\n return dictionary;\r\n }\r\n\r\n private getEmptyPassengerCountTypes(fareTypes: Array) {\r\n const dictonary = new Dictionary();\r\n fareTypes.forEach((f) => {\r\n dictonary[f.fareTypeCode] = new FareTypeChangedEvent(f, 0);\r\n });\r\n return dictonary;\r\n }\r\n\r\n onPassengercOptionsChanged(passengercOptionsChanged: PassengercOptionsChanged) {\r\n const fareTypesCounts = passengercOptionsChanged.fareTypeCounts;\r\n this.loadingBookings = true;\r\n if (this.deviceService.IsMobile()) {\r\n $('html, body').animate({ scrollTop: $('gaweb-passenger-options').offset().top - 67 }, 200);\r\n }\r\n this.passengerOptionsComponent.onShowSpinner();\r\n\r\n const products: ProductType[] = _(fareTypesCounts).map((f) => {\r\n if (f.count > 0) {\r\n let product;\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n case ProductTypeUrl.experience:\r\n product = 'Experience';\r\n // return new ProductType(this.productRef, f.fareType.fareTypeCode, f.count, product);\r\n return _.fill(Array(f.count), new ProductType(this.productRef, f.fareType.fareTypeCode, 1, product));\r\n case ProductTypeUrl.package:\r\n default:\r\n product = 'Package';\r\n return new ProductType(this.productRef, f.fareType.fareTypeCode, f.count, product);\r\n }\r\n\r\n\r\n }\r\n }).flatten().compact().value();\r\n let options, func;\r\n if (this.isBookingVerified) {\r\n const addProductAndPassengerToBookingOptions = new AddProductAndPassengerToBookingOptions(this.loadedBooking.BookingGuid);\r\n addProductAndPassengerToBookingOptions.Products = products;\r\n options = addProductAndPassengerToBookingOptions;\r\n func = this.travelPackageService.addProductAndPassengerToBooking;\r\n } else {\r\n const createBookingsOption = new CreateBookingsOption();\r\n\r\n if (!!this.initialDataService.userData) { // if isLoggedIn\r\n createBookingsOption.CustomerGUID = this.initialDataService.userData.CustomerGuid;\r\n }\r\n\r\n createBookingsOption.Products = products;\r\n options = createBookingsOption;\r\n func = this.travelPackageService.createBookings;\r\n }\r\n if (products.length > 0) {\r\n func.call(this.travelPackageService, options)\r\n .subscribe((bookings: Array | Booking) => {\r\n let bookgs;\r\n if (bookings.constructor === Array) {\r\n bookgs = bookings;\r\n } else {\r\n bookgs = [bookings];\r\n }\r\n this.passengerDetailsComponent.clearPassengers();\r\n this.passengerOptionsComponent.onHideSpinner();\r\n if (this.isBookingVerified) { // pay using kms\r\n this.loadingBookings = false;\r\n this.setBookingsAndPassengers(bookgs, true);\r\n } else {\r\n this.generatedBookings = bookgs;\r\n this.updateBookings(bookgs);\r\n const fareTypes = this.travelPackageService.currentProduct.fareTypes;\r\n this.passengerCounts = this.getPassengerCountsFromBooking(fareTypes, this.bookings);\r\n this.hideLoadingAndPutMasterGuidInUrl(bookgs);\r\n\r\n }\r\n\r\n }, this.onError);\r\n }\r\n }\r\n\r\n\r\n hideLoadingAndPutMasterGuidInUrl(bookings: Array) {\r\n this.loadingBookings = false;\r\n if (bookings.length > 0) {\r\n const params = location.search;\r\n this.location.go(`${this.getUrlToBookNow()}/${bookings[0].BookingGuid}`);\r\n }\r\n }\r\n private getUrlToBookNow(): string {\r\n const urlToBookNowSection = location.pathname.substring(0, location.pathname.indexOf('book-now'));\r\n return `${urlToBookNowSection}book-now`;\r\n }\r\n hideLoginPrompt($event) {\r\n this.showLoginPrompt = false;\r\n }\r\n\r\n private getOriginalAmount() {\r\n let originalAmount = 0;\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n case ProductTypeUrl.experience:\r\n this.bookings[0].Tours.forEach((t) => {\r\n originalAmount = originalAmount + t.SelectedCurrencyAmount;\r\n });\r\n break;\r\n case ProductTypeUrl.package:\r\n default:\r\n this.bookings.forEach((b) => {\r\n originalAmount = originalAmount + b.Package.FareTypes[0].SalePrice;\r\n });\r\n break;\r\n }\r\n\r\n return (Math.round(originalAmount * 100) / 100);\r\n }\r\n\r\n onPromoCodeChange($event) {\r\n this.hasPromo = !!$event;\r\n this.promoDescription = $event;\r\n let originalAmount = this.getOriginalAmount();\r\n // this.bookingTotalComponent.updatePromoStatus(originalAmount, $event);\r\n this.bookingTotalComponent.updateCartTotal();\r\n let hideCancelPromo = !!this.bookings && !!this.bookings[0].BookingNumber;\r\n this.bookingTotalComponent.setPromo(this.hasPromo, $event, originalAmount, hideCancelPromo);\r\n }\r\n\r\n onRemovePromo($event) {\r\n this.promoCodeComponent.removePromoCode();\r\n }\r\n\r\n updateBooking(options: UpdateBookingOptions) {\r\n if (options.index === 0 && !!options.booking) {\r\n this.masterBookingGuid = options.booking.BookingGuid;\r\n this.bookings[options.index] = options.booking;\r\n this.setBookingsAndPassengers(this.bookings, options.emitPassengers, options.savedPassengerGuid);\r\n this.travelPackageService.bookings = this.bookings;\r\n }\r\n }\r\n updatePassengerGuidsFromBookings(options: UpdatePassengerGuidsOptions) {\r\n this.passengerDetailsComponent.updatePassengerGuids(options);\r\n }\r\n updateBookings(bookings: Array) {\r\n if (jQuery('.fa-exclamation-circle').length > 0) {\r\n jQuery('html, body').animate({ scrollTop: jQuery('.fa-exclamation-circle').offset().top - 97 }, 200);\r\n }\r\n\r\n this.masterBookingGuid = bookings[0] ? bookings[0].BookingGuid : null;\r\n this.setBookingsAndPassengers(bookings, true);\r\n this.travelPackageService.bookings = bookings;\r\n }\r\n\r\n confirmBooking = () => {\r\n const bookingToConfirm = this.isBookingVerified && !!this.loadedBooking ? this.loadedBooking : this.bookings[0];\r\n let options;\r\n this.confirming = true;\r\n let confirmBookingFunc;\r\n const bookingGuidUsedToPay = bookingToConfirm.BookingGuid;\r\n if (this.isBookingVerified) {\r\n confirmBookingFunc = this.travelPackageService.ticketBooking;\r\n options = new TicketBookingOptions(bookingGuidUsedToPay, null, null, 'KM');\r\n } else {\r\n confirmBookingFunc = this.travelPackageService.confirmBooking;\r\n options = bookingGuidUsedToPay;\r\n }\r\n confirmBookingFunc.call(this.travelPackageService, options)\r\n .subscribe((bookings: Booking[]) => {\r\n this.updateBookings(bookings);\r\n if (this.isBookingVerified) { // confirmation page\r\n // needs to be a full reload otherwise the booking.com won't be rendered\r\n // window.location.href = `coach-travel/confirmation?booking=${bookingGuidUsedToPay}&type=${GxConstants.PAYMENT_CONTEXT.CONFIRMATION}`;\r\n\r\n window.location.href = `${this.initialDataService.express.ConfirmationUrl}?booking=${bookingGuidUsedToPay}&type=${GxConstants.PAYMENT_CONTEXT.CONFIRMATION}`;\r\n } else { // payment page\r\n let foundTravel = false;\r\n bookings.forEach((booking: Booking) => {\r\n if (booking.Sectors.length > 0) {\r\n foundTravel = true;\r\n }\r\n });\r\n\r\n var productRef = window.location.pathname.split('/')[1];\r\n const categoryReference = this.activatedRoute.snapshot.params['category-reference'];\r\n const productReference = this.activatedRoute.snapshot.params['product-reference'];\r\n\r\n\r\n this.router.navigate([`/${productRef}/${categoryReference}/${productReference}/book-now/${bookingGuidUsedToPay}/pay-now`]);\r\n // if (foundTravel) {\r\n // this.router.navigate([`/${productRef}/${categoryReference}/${productReference}/book-now/${bookingGuidUsedToPay}/seats`]);\r\n // // this.router.navigate([`${this.productUrl.ProductPaymentUrl}/${this.productRef}/seat-confirmation/${bookingGuidUsedToPay}`]);\r\n // } else {\r\n // this.router.navigate([`/${productRef}/${categoryReference}/${productReference}/book-now/${bookingGuidUsedToPay}/pay-now`]);\r\n // //this.router.navigate([`${this.productUrl.ProductPaymentUrl}/${this.productRef}/pay-now/${bookingGuidUsedToPay}`]);\r\n // }\r\n }\r\n\r\n }, this.onError);\r\n\r\n }\r\n\r\n onError = (error) => {\r\n this.confirming = false;\r\n this.loadingBookings = false;\r\n this.loadingData = false;\r\n this.passengerOptionsComponent.onHideSpinner();\r\n this.actionUpdaterService.onError(error);\r\n }\r\n\r\n reloadBlankPage() {\r\n this.router.navigate([`${this.getUrlToBookNow()}/book-now`]);\r\n this.updateBookings([]);\r\n }\r\n\r\n pageValid() {\r\n const primaryBooking = this.bookings[0];\r\n const amountOfPassengers = (this.passengerDetailsComponent.passengerForm.controls.passengers).controls.length;\r\n for (let index = 0; index < amountOfPassengers; index++) {\r\n if (!this.passengerDetailsComponent.passengerGroupIsPristineAndValid(index)) {\r\n return false;\r\n }\r\n }\r\n if (!this.bookings || !primaryBooking || !primaryBooking.Package) {\r\n return false;\r\n }\r\n if (!this.kmPassComponent.isCorrectlyFilledOut()) {\r\n return false;\r\n }\r\n if (!this.itineraryComponent.isCorrectlyFilledOut()) {\r\n return false;\r\n }\r\n primaryBooking.Package.Inclusions.forEach(\r\n (inclusion) => {\r\n if (inclusion.FareTypes[0].RequiresUsageDate &&\r\n (!inclusion.SelectedDate || inclusion.SelectedDate === GxConstants.MIN_DATE)) {\r\n return false;\r\n }\r\n }\r\n );\r\n if (primaryBooking.Package.RequiresTravel && primaryBooking.Sectors.length === 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n onBookingVerified(data) {\r\n this.loadedBooking = data['booking'];\r\n const isLogout = data['isLogout'];\r\n const isBookingVerified = data['isBookingVerified'];\r\n const farePriceKMS = data['farePriceKMS'];\r\n\r\n const booking = this.loadedBooking;\r\n this.setBookings([booking]);\r\n const balanceBeforePayment = !!booking ? booking.balanceBeforePayment : null;\r\n const passenger = !!booking && !!booking.Passengers && !!booking.Passengers[0] ? booking.Passengers[0] : null;\r\n\r\n this.isBookingVerified = isBookingVerified;\r\n if (this.isBookingVerified == true) {\r\n this.isPayingKms = true;\r\n }\r\n this.bookingTotal = new BookingTotalKms(isBookingVerified, farePriceKMS, balanceBeforePayment, balanceBeforePayment - farePriceKMS,\r\n isLogout);\r\n // if the user logs in\r\n if (!isLogout && !!passenger) {\r\n this.passengerOptionsComponent.triggerOnPassengercOptionsChanged(passenger);\r\n this.passengerGuidFromLoadedBooking = passenger.PassengerGuid;\r\n } else if (isLogout) {\r\n // restore first generated booking from the url\r\n this.setBookingsAndPassengers(this.generatedBookings, true);\r\n const fareTypes = this.travelPackageService.currentProduct.fareTypes;\r\n this.passengerCounts = this.getPassengerCountsFromBooking(fareTypes, this.generatedBookings);\r\n }\r\n\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/product-passenger-details.component.ts","module.exports = \"\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n The promo code is invalid or expired\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/product-passenger-details/promo-code/promo-code.component.html\n// module id = ./src/app/travel-products/product-passenger-details/promo-code/promo-code.component.html\n// module chunks = travel-products.module","\r\nimport { Component, OnInit, Output, EventEmitter, Input, SimpleChanges } from '@angular/core';\r\nimport {\r\n TravelProductService, ApplyPromoToPackageOptions, RemovePromoFromPackage, ApplyPromoToTourOptions, RemovePromoFromTour, RemovePromoFromPass\r\n} from './../../../shared/services/travel-product.service';\r\nimport { ActionUpdaterService, ApiError } from './../../../shared/services/action-updater.service';\r\nimport { Booking, Pass, Addon, Totals, Package, TourOrExperience } from '../../../shared/models/booking.model';\r\nimport * as _ from 'lodash';\r\nimport { ProductTypeUrl } from 'app/shared/models/enums/ProductTypeUrl.enum';\r\nimport { OnChanges } from '@angular/core/src/metadata/lifecycle_hooks';\r\nimport { CartTotalService } from 'app/shared/services/cart-total.service';\r\nimport { LocalStorageService } from 'app/shared/services/local-storage.service';\r\nimport { GxConstants } from 'app/shared/constants/gx.constants';\r\nimport { Observable } from 'rxjs';\r\nimport { Experiences } from 'app/initial-data.service';\r\n\r\n@Component({\r\n selector: 'gaweb-promo-code',\r\n templateUrl: './promo-code.component.html'\r\n})\r\nexport class PromoCodeComponent implements OnInit, OnChanges {\r\n static FARETYPE_CODES_FARE_PRICE = 'FP';\r\n\r\n @Output() onPromoCodeChange: EventEmitter = new EventEmitter();\r\n @Output() parentBookingUpdated: EventEmitter = new EventEmitter();\r\n @Output() onCartTotalUpdatedByPromo: EventEmitter = new EventEmitter();\r\n @Input() bookings: Array;\r\n @Input() passAsAPackage: Package;\r\n @Input() addons: Addon[];\r\n @Input()\r\n productType: ProductTypeUrl;\r\n parentBooking: Booking;\r\n\r\n @Input() promoDescription: string;\r\n\r\n private _bookingGuid: string;\r\n set bookingGuid(guid: string) {\r\n this._bookingGuid = guid;\r\n this.promocodeIsReady = !!guid;\r\n }\r\n get bookingGuid() {\r\n return this._bookingGuid;\r\n }\r\n tourGuid: string;\r\n hasPromo: boolean;\r\n promoCode: string | null;\r\n message: string | null;\r\n isError: boolean;\r\n isFocus: boolean;\r\n promocodeBeingChecked: boolean;\r\n promocodeIsReady: boolean;\r\n\r\n constructor(private travelPackageService: TravelProductService,\r\n private actionUpdaterService: ActionUpdaterService,\r\n private cartTotalService: CartTotalService,\r\n private localStorageService: LocalStorageService) {\r\n this.promocodeBeingChecked = false;\r\n this.promocodeIsReady = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.promoCode = null;\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!!changes['productType']) {\r\n this.productType = changes['productType'].currentValue;\r\n }\r\n if (!!changes['bookings'] && (this.productType !== null || this.productType !== undefined)) {\r\n const value = changes['bookings'].currentValue;\r\n if (value && value.length > 0) {\r\n this.parentBooking = value[0];\r\n this.setupValues();\r\n }\r\n }\r\n if (changes.pass) {\r\n if (changes.pass.isFirstChange()) { return; };\r\n const { currentValue } = changes.pass;\r\n this.passAsAPackage = _.cloneDeep(currentValue);\r\n }\r\n }\r\n private setupValues() {\r\n const mainObj = Booking.getMainObject(this.parentBooking, this.productType, true);\r\n if (this.parentBooking) {\r\n this.bookingGuid = this.parentBooking.BookingGuid;\r\n if (!!mainObj) {\r\n this.tourGuid = mainObj.TourGuid;\r\n this.hasPromo = !!mainObj.PromotionCode;\r\n }\r\n }\r\n\r\n if (this.hasPromo) {\r\n if (!!mainObj) {\r\n const rawPromoDesc = mainObj.PromotionDescription,\r\n promoDescription = rawPromoDesc.substring(0, rawPromoDesc.indexOf('. '));\r\n\r\n this.message = !!promoDescription ? promoDescription : rawPromoDesc;\r\n }\r\n } else {\r\n this.message = null;\r\n }\r\n this.isError = false;\r\n if(!!this.message) this.onPromoCodeChange.emit(this.message);\r\n }\r\n\r\n public removePromoCode = () => {\r\n let removePromoFunc;\r\n const optionsList = [];\r\n let options;\r\n const mainObj = Booking.getMainObject(this.parentBooking, this.productType, true);\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n this.removePromosToAllTours();\r\n return;\r\n case ProductTypeUrl.experience:\r\n this.removePromosToAllTours();\r\n break;\r\n case ProductTypeUrl.package:\r\n removePromoFunc = this.travelPackageService.removePromoFromPackage;\r\n options = new RemovePromoFromPackage(this.parentBooking.BookingGuid, (mainObj).PackageGuid);\r\n optionsList.push(options);\r\n break;\r\n case ProductTypeUrl.travelPasses:\r\n removePromoFunc = this.travelPackageService.removePromoFromPass;\r\n options = new RemovePromoFromPass(this.parentBooking.BookingGuid, (mainObj).PassGuid);\r\n optionsList.push(options);\r\n break;\r\n case ProductTypeUrl.expressBooking:\r\n removePromoFunc = this.travelPackageService.postCartTotal;\r\n options = this.cartTotalService.getPassCartTotalOptions(this.passAsAPackage, this.addons, null);\r\n optionsList.push(options);\r\n break;\r\n default:\r\n }\r\n this.promocodeBeingChecked = true;\r\n optionsList.forEach(option => {\r\n removePromoFunc.call(this.travelPackageService, option)\r\n .subscribe((bookingOrCartTotals: Booking | Totals) => {\r\n switch (this.productType) {\r\n case ProductTypeUrl.travelPasses:\r\n case ProductTypeUrl.expressBooking:\r\n if (bookingOrCartTotals instanceof Totals) {\r\n this.onCartTotalUpdatedByPromo.emit({ cartTotals: bookingOrCartTotals, promoCode: '' });\r\n this.localStorageService.removePromocodeFromOfflineBooking();\r\n }\r\n break;\r\n default:\r\n if (bookingOrCartTotals instanceof Booking) {\r\n this.parentBookingUpdated.emit({ bookingOrCartTotals, index: 0 });\r\n }\r\n }\r\n this.onPromoCodeChange.emit(null);\r\n this.isError = false;\r\n this.message = 'Promo code removed';\r\n this.hasPromo = false;\r\n this.promoCode = null;\r\n this.promocodeBeingChecked = false;\r\n this.localStorageService.removePromoCode();\r\n }, this.handleErrorRemovePromocode);\r\n });\r\n\r\n\r\n this.promoCode = null;\r\n }\r\n\r\n private handleErrorRemovePromocode = (error: ApiError) => {\r\n this.promocodeBeingChecked = false;\r\n this.actionUpdaterService.onError(error);\r\n }\r\n\r\n removePromosToAllTours() {\r\n const tours = this.parentBooking.Tours;\r\n const tourFunctions = [];\r\n let that = this;\r\n tours.forEach(async (tour) => {\r\n tourFunctions.push(function() {\r\n return that.travelPackageService.removePromoFromTour(new RemovePromoFromTour(that.parentBooking.BookingGuid, tour.TourGuid));\r\n });\r\n });\r\n\r\n this.removePromoTourWork(tourFunctions);\r\n\r\n setTimeout(function() {\r\n that.cartTotalService.getCartTotal(that.parentBooking.BookingGuid, (cartTotal) => {\r\n that.onCartTotalUpdatedByPromo.emit({ cartTotals: cartTotal, promoCode: '' });\r\n }, null, null, null);\r\n }, 1000);\r\n }\r\n\r\n applyPromosToAllTours() {\r\n const tours = this.parentBooking.Tours;\r\n const tourFunctions = [];\r\n let that = this;\r\n tours.forEach(async (tour) => {\r\n tourFunctions.push(function() {\r\n return that.travelPackageService.applyPromoToTour(new ApplyPromoToTourOptions(that.promoCode, that.bookingGuid, tour.TourGuid));\r\n });\r\n });\r\n\r\n this.applyPromoTourWork(tourFunctions);\r\n\r\n setTimeout(function(){\r\n that.cartTotalService.getCartTotal(that.parentBooking.BookingGuid, (cartTotal) => {\r\n that.onCartTotalUpdatedByPromo.emit({ cartTotals: cartTotal, promoCode: '' });\r\n }, null, null, null);\r\n }, 1000);\r\n }\r\n\r\n removePromoTourWork(tourFunctions: any) {\r\n let that = this;\r\n\r\n tourFunctions[tourFunctions.length - 1]().subscribe((result) => {\r\n if (tourFunctions.length === 1) {\r\n this.promocodeBeingChecked = false;\r\n this.parentBookingUpdated.emit(result);\r\n this.parentBooking = result;\r\n this.onPromoCodeChange.emit(null);\r\n this.setupValues();\r\n that.cartTotalService.getCartTotal(that.parentBooking.BookingGuid, (cartTotal) => {\r\n that.onCartTotalUpdatedByPromo.emit({ cartTotals: cartTotal, promoCode: '' });\r\n }, null, null, null);\r\n }\r\n tourFunctions.pop();\r\n if (tourFunctions.length > 0) {\r\n that.applyPromoTourWork(tourFunctions);\r\n }\r\n this.localStorageService.removePromoCode();\r\n }, this.handleError);\r\n }\r\n\r\n applyPromoTourWork(tourFunctions: any) {\r\n let that = this;\r\n\r\n tourFunctions[tourFunctions.length - 1]().subscribe((result) => {\r\n if (tourFunctions.length === 1) {\r\n this.promocodeBeingChecked = false;\r\n this.parentBookingUpdated.emit(result);\r\n this.parentBooking = result;\r\n this.onPromoCodeChange.emit(this.message);\r\n this.setupValues();\r\n\r\n that.cartTotalService.getCartTotal(that.parentBooking.BookingGuid, (cartTotal) => {\r\n that.onCartTotalUpdatedByPromo.emit({ cartTotals: cartTotal, promoCode: '' });\r\n }, null, null, null);\r\n }\r\n tourFunctions.pop();\r\n if (tourFunctions.length > 0) {\r\n that.applyPromoTourWork(tourFunctions);\r\n }\r\n this.localStorageService.applyPromoCode(this.message);\r\n }, this.handleError);\r\n }\r\n\r\n applyPromoCode = () => {\r\n this.setupValues(); // make sure we have everything\r\n\r\n this.promocodeBeingChecked = true;\r\n let applyPromoFunc;\r\n let optionsList = [];\r\n switch (this.productType) {\r\n case ProductTypeUrl.accommodation:\r\n this.applyPromosToAllTours();\r\n break;\r\n case ProductTypeUrl.experience:\r\n this.applyPromosToAllTours();\r\n break;\r\n case ProductTypeUrl.package:\r\n optionsList = [new ApplyPromoToPackageOptions(this.promoCode, this.bookingGuid)];\r\n applyPromoFunc = this.travelPackageService.applyPromoToPackage;\r\n break;\r\n case ProductTypeUrl.expressBooking:\r\n optionsList = [this.cartTotalService.getPassCartTotalOptions(this.passAsAPackage, this.addons, this.promoCode)];\r\n applyPromoFunc = this.travelPackageService.postCartTotal;\r\n break;\r\n case ProductTypeUrl.travelPasses:\r\n optionsList = [new ApplyPromoToPackageOptions(this.promoCode, this.bookingGuid)];\r\n applyPromoFunc = this.travelPackageService.applyPromoToPass;\r\n break;\r\n default:\r\n }\r\n\r\n optionsList.forEach(options => {\r\n applyPromoFunc.call(this.travelPackageService, options)\r\n .subscribe((bookingOrCartTotals: Booking | Totals) => {\r\n switch (this.productType) {\r\n case ProductTypeUrl.expressBooking:\r\n if (bookingOrCartTotals instanceof Totals) {\r\n const farePriceItem = bookingOrCartTotals.PaymentItems\r\n .filter(item => item.Sku === GxConstants.FARETYPE_CODES.FARE_PRICE)[0],\r\n farePriceItemMessage = farePriceItem.Message;\r\n const promocodeValid = _.isEmpty(farePriceItemMessage);\r\n if (promocodeValid) {\r\n this.message = farePriceItem.Items[0].PromoDescription;\r\n this.onCartTotalUpdatedByPromo.emit({ cartTotals: bookingOrCartTotals, promoCode: this.promoCode });\r\n this.localStorageService.addPromocodeToOfflineBooking(this.promoCode, this.message);\r\n this.hasPromo = true;\r\n this.isError = false;\r\n } else {\r\n this.message = farePriceItemMessage;\r\n this.hasPromo = false;\r\n this.isError = true;\r\n }\r\n }\r\n break;\r\n default:\r\n if (bookingOrCartTotals instanceof Booking) {\r\n var promoDesc = bookingOrCartTotals.PromotionDescription;\r\n this.parentBookingUpdated.emit(bookingOrCartTotals);\r\n this.parentBooking = bookingOrCartTotals;\r\n this.onPromoCodeChange.emit(promoDesc);\r\n this.localStorageService.applyPromoCode(promoDesc);\r\n this.setupValues();\r\n }\r\n }\r\n this.promocodeBeingChecked = false;\r\n }, this.handleError);\r\n });\r\n }\r\n private handleError = (error: ApiError) => {\r\n this.isError = true;\r\n // const additionalDetails = error.details[0] ? `: ${error.details[0]}` : null;\r\n const additionalDetails = error.details[0] ? `${error.details[0]}` : null;\r\n // this.message = `${error.summary}${additionalDetails}`;\r\n this.message = `${additionalDetails}`;\r\n this.hasPromo = false;\r\n this.promocodeBeingChecked = false;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/product-passenger-details/promo-code/promo-code.component.ts","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { GenericContentPage } from '../../shared/resolver/generic-content-page.model';\r\nimport { TravelProductService, TravelPackage } from '../../shared/services/travel-product.service';\r\nimport { ActionUpdaterService, ApiError } from '../../shared/services/action-updater.service';\r\n\r\n@Component({\r\n selector: 'gaweb-packages-search',\r\n template: `\r\n\r\n
\r\n
\r\n
\r\n

{{title}}

\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n

Loading travel package information...

\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n `,\r\n styles: []\r\n})\r\nexport class ProductsSearchComponent implements OnInit {\r\n\r\n loadingData: boolean = true;\r\n packages: Array;\r\n title: string;\r\n content: string;\r\n contentFooter: string;\r\n\r\n constructor(private travelPackageService: TravelProductService,\r\n private activatedRoute: ActivatedRoute,\r\n private actionUpdaterService: ActionUpdaterService) { }\r\n\r\n ngOnInit() {\r\n const genericData: GenericContentPage = this.activatedRoute.snapshot.data['content'];\r\n this.title = genericData.title;\r\n this.content = genericData.content;\r\n this.contentFooter = genericData.contentFooter;\r\n this.travelPackageService.getPackages()\r\n .subscribe(\r\n (packages) => {\r\n this.packages = packages;\r\n this.loadingData = false;\r\n },\r\n this.actionUpdaterService.onError);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/products-search/products-search.component.ts","module.exports = \"/*\\n -apple-system, // Safari for OS X and iOS (San Francisco)\\n BlinkMacSystemFont,// Chrome for OS X (San Francisco)\\n \\\"Segoe UI\\\",// Windows\\n \\\"Roboto\\\",// Android\\n \\\"Oxygen\\\", // Linux\\n \\\"Ubuntu\\\",// KDE\\n \\\"Cantarell\\\", // GNOME\\n \\\"Droid Sans\\\",// Older Android\\n \\\"Helvetica Neue\\\", Arial, sans-serif !default; // Basic web fallback */\\n.package-detail {\\n cursor: pointer;\\n border: 1px solid #223250;\\n border-radius: 2px;\\n}\\n.package-detail .package-details-header {\\n background-color: #223250;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-orient: horizontal;\\n -webkit-box-direction: normal;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n -webkit-box-pack: start;\\n -ms-flex-pack: start;\\n justify-content: flex-start;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n}\\n.package-detail .package-details-header .package-details-header-icon {\\n background-color: #223250;\\n color: white;\\n overflow: hidden;\\n margin-right: 8px;\\n min-width: 50px;\\n}\\n.package-detail .package-details-header .package-details-header-title {\\n text-transform: uppercase;\\n color: white;\\n font-weight: bold;\\n font-size: 18px;\\n}\\n.package-detail .package-details-body {\\n background-color: #fff;\\n color: #223250;\\n padding: 10px 0;\\n}\\n.package-detail .package-details-footer {\\n background-color: #fff;\\n color: #223250;\\n padding: 10px 0;\\n}\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/app/travel-products/products-search/travel-product-detail/travel-product-detail.component.less\n// module id = ./src/app/travel-products/products-search/travel-product-detail/travel-product-detail.component.less\n// module chunks = travel-products.module","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'gaweb-travel-product-detail',\r\n template: `\r\n
\r\n
\r\n
\r\n \"{{title}}\"\r\n \r\n
\r\n
\r\n {{title}} \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{description}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n `,\r\n styleUrls: ['./travel-product-detail.component.less']\r\n})\r\nexport class TravelProductDetailComponent implements OnInit {\r\n\r\n @Input() icon: string;\r\n @Input() title: string;\r\n @Input() description: string;\r\n @Input() packageReference: string;\r\n\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/products-search/travel-product-detail/travel-product-detail.component.ts","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { TravelProductDetailComponent } from './products-search/travel-product-detail/travel-product-detail.component';\r\nimport { GenericContentPageResolve } from '../shared/resolver/generic.resolve';\r\nimport { PassengerOptionsComponent } from './product-passenger-details/passenger-options/passenger-options.component';\r\nimport { FareTypeComponent } from './product-passenger-details/passenger-options/fare-type/fare-type.component';\r\nimport { ProductsSearchComponent } from './products-search/products-search.component';\r\nimport { ProductInfoComponent } from './product-info/product-info.component';\r\nimport { ProductPassengerDetailsComponent } from './product-passenger-details/product-passenger-details.component';\r\nimport { PassengerDetailsComponent } from './product-passenger-details/passenger-details/passenger-details.component';\r\nimport { ValidationOnBlurDirective } from './validate-onblur.directive';\r\nimport { MyGreyhoundLoginComponent } from './product-passenger-details/my-greyhound-login/my-greyhound-login.component';\r\nimport { PromoCodeComponent } from './product-passenger-details/promo-code/promo-code.component';\r\nimport { PaymentFormComponent } from './product-payment/payment-form/payment-form.component';\r\nimport { DecimalPipe } from '@angular/common';\r\nimport { ProductConfirmationComponent } from './product-confirmation/product-confirmation.component';\r\nimport { PopoverModule } from 'ngx-bootstrap/popover';\r\nimport { MyGreyhoundModule } from '../my-greyhound/my-greyhound.module';\r\nimport { KmPassComponent } from 'app/travel-products/product-passenger-details/km-pass/km-pass.component';\r\nimport { KmPassService } from 'app/shared/services/km-pass.service';\r\nimport { PassengerOptionsStateService } from 'app/shared/services/passenger-options-state.service';\r\nimport {\r\n PassengerDetailWrapperComponent\r\n} from 'app/travel-products/product-passenger-details/passenger-details-selector/passenger-detail-wrapper.component';\r\nimport {\r\n PassengerDetailSelectorComponent\r\n} from 'app/travel-products/product-passenger-details/passenger-details-selector/passenger-details-selector.component';\r\nimport {\r\n ExpressAndTravelPassPassengerDetailsComponent\r\n} from 'app/travel-products/product-passenger-details/express-and-travel-pass-passenger-details.component';\r\nimport { LoyaltyDetailsComponent } from 'app/travel-products/product-passenger-details/loyalty-details/loyalty-details.component';\r\nimport { AddonsComponent } from 'app/travel-products/product-passenger-details/addons/addons.component';\r\nimport {\r\n LoyaltyProgramListComponent\r\n} from 'app/travel-products/product-passenger-details/loyalty-program-list/loyalty-program-list.component';\r\nimport {\r\n AvailabilityWrapperComponent\r\n} from 'app/shared/components/itinerary/travel-dates/availability-wrapper/availability-wrapper.component';\r\nimport { ProductPaymentComponent } from 'app/travel-products/product-payment/product-payment.component';\r\nimport { SeatConfirmationComponent } from 'app/travel-products/seat-confirmation/seat-confirmation.component';\r\n\r\n\r\nconst travelProductsRoutes: Routes = [\r\n\r\n {\r\n path: '',\r\n component: ExpressAndTravelPassPassengerDetailsComponent,\r\n // component: ProductsSearchComponent,\r\n // resolve: {\r\n // content: GenericContentPageResolve,\r\n // }\r\n },\r\n {\r\n path: 'confirmation',\r\n component: ProductConfirmationComponent,\r\n },\r\n {\r\n path: 'travel-passes/book-now',\r\n component: ExpressAndTravelPassPassengerDetailsComponent,\r\n },\r\n {\r\n path: 'travel-passes/availability',\r\n component: AvailabilityWrapperComponent,\r\n },\r\n {\r\n path: 'express-booking/book-now',\r\n component: ExpressAndTravelPassPassengerDetailsComponent,\r\n },\r\n {\r\n path: ':product-reference/pay-now',\r\n component: ProductPaymentComponent,\r\n },\r\n {\r\n path: ':product-reference/payment',\r\n component: ProductPaymentComponent,\r\n },\r\n {\r\n path: ':product-reference/seat-confirmation',\r\n component: SeatConfirmationComponent,\r\n },\r\n {\r\n path: 'Product/:product-reference',\r\n component: ProductInfoComponent,\r\n },\r\n {\r\n path: 'availability',\r\n component: AvailabilityWrapperComponent,\r\n },\r\n {\r\n path: 'book-now',\r\n component: ExpressAndTravelPassPassengerDetailsComponent,\r\n },\r\n {\r\n path: 'checkout',\r\n component: ExpressAndTravelPassPassengerDetailsComponent,\r\n },\r\n {\r\n path: 'pay-now',\r\n component: ProductPaymentComponent,\r\n },\r\n {\r\n path: 'payment',\r\n component: ProductPaymentComponent,\r\n },\r\n {\r\n path: 'seat-confirmation', \r\n component: SeatConfirmationComponent,\r\n },\r\n {\r\n path: ':product-reference/availability',\r\n component: AvailabilityWrapperComponent,\r\n },\r\n {\r\n path: ':product-reference/availability/:bookingGuid',\r\n component: AvailabilityWrapperComponent,\r\n },\r\n {\r\n path: ':product-reference/book-now',\r\n component: ProductPassengerDetailsComponent,\r\n },\r\n {\r\n path: ':category-reference/:product-reference/book-now',\r\n component: ProductPassengerDetailsComponent,\r\n },\r\n {\r\n path: ':category-reference/:product-reference/book-now/:bookingGuid/availability',\r\n component: AvailabilityWrapperComponent,\r\n },\r\n {\r\n path: ':category-reference/:product-reference/book-now/:bookingGuid/pay-now',\r\n component: ProductPaymentComponent,\r\n },\r\n {\r\n path: ':category-reference/:product-reference/book-now/:bookingGuid/payment',\r\n component: ProductPaymentComponent,\r\n },\r\n {\r\n path: ':category-reference/:product-reference/book-now/:bookingGuid/seat-confirmation',\r\n component: SeatConfirmationComponent,\r\n },\r\n {\r\n path: ':category-reference/:product-reference/book-now/:bookingGuid/seats',\r\n component: SeatConfirmationComponent,\r\n },\r\n {\r\n path: ':product-reference/book-now/:bookingGuid',\r\n component: ProductPassengerDetailsComponent,\r\n },\r\n {\r\n path: ':category-reference/:product-reference/book-now/:bookingGuid',\r\n component: ProductPassengerDetailsComponent,\r\n },\r\n {\r\n path: ':product-reference/pay-now/:bookingGuid',\r\n component: ProductPaymentComponent,\r\n },\r\n {\r\n path: ':product-reference/payment/:bookingGuid',\r\n component: ProductPaymentComponent,\r\n },\r\n {\r\n path: ':product-reference/seat-confirmation/:bookingGuid',\r\n component: SeatConfirmationComponent,\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n PopoverModule.forRoot(),\r\n SharedModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ModalModule.forRoot(),\r\n RouterModule.forChild(travelProductsRoutes),\r\n MyGreyhoundModule,\r\n ],\r\n declarations: [\r\n TravelProductDetailComponent,\r\n PassengerOptionsComponent,\r\n KmPassComponent,\r\n FareTypeComponent,\r\n ProductsSearchComponent,\r\n ProductInfoComponent,\r\n ProductPassengerDetailsComponent,\r\n PassengerDetailsComponent,\r\n ValidationOnBlurDirective,\r\n MyGreyhoundLoginComponent,\r\n PromoCodeComponent,\r\n ProductConfirmationComponent,\r\n PassengerDetailWrapperComponent,\r\n PassengerDetailSelectorComponent,\r\n ExpressAndTravelPassPassengerDetailsComponent,\r\n LoyaltyDetailsComponent,\r\n LoyaltyProgramListComponent,\r\n AddonsComponent],\r\n providers: [\r\n DecimalPipe\r\n ]\r\n})\r\nexport class TravelProductsModule { }\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/travel-products.module.ts","import { Directive } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[validate-onblur]',\r\n host: {\r\n '(focus)': 'onFocus($event)',\r\n '(blur)': 'onBlur($event)',\r\n '(keyup)': 'onKeyup($event)',\r\n '(change)': 'onChange($event)',\r\n '(ngModelChange)': 'onNgModelChange($event)'\r\n }\r\n })\r\n export class ValidationOnBlurDirective {\r\n private validators: any;\r\n private asyncValidators: any;\r\n private wasChanged: any;\r\n constructor(public formControl: NgControl) {\r\n }\r\n onFocus($event) {\r\n this.wasChanged = false;\r\n this.validators = this.formControl.control.validator;\r\n this.asyncValidators = this.formControl.control.asyncValidator;\r\n this.formControl.control.clearAsyncValidators();\r\n this.formControl.control.clearValidators();\r\n }\r\n onKeyup($event) {\r\n this.wasChanged = true; // keyboard change\r\n }\r\n onChange($event) {\r\n this.wasChanged = true; // copypaste change\r\n }\r\n onNgModelChange($event) {\r\n this.wasChanged = true; // ng-value change\r\n }\r\n onBlur($event) {\r\n this.formControl.control.setAsyncValidators(this.asyncValidators);\r\n this.formControl.control.setValidators(this.validators);\r\n if (this.wasChanged)\r\n this.formControl.control.updateValueAndValidity();\r\n }\r\n }\n\n\n// WEBPACK FOOTER //\n// ./src/app/travel-products/validate-onblur.directive.ts"],"sourceRoot":"webpack:///"}