var arrConfirmValidations = [];
var arrIsOptAirline = [];
var arrIsSupplierCheck = true;
var arrIsAirPortCheck = true;
var IsPreBookedSeatCheck = false;
var airlineClassData = null;
var pageLoadEventComplete = false;
var enquiryInfo_DepartureDate = $("#enquiryInfoViewModel_DepartureDate").val();
var G2BFlight = {
isFlightDatesAmend: false,
Supplier: {
Travel2: 'Travel2',
AC7ThomasCook: 'AC7 Thomas Cook',
AdvancedRegFlights: 'Advanced Reg Flights',
BADirect: 'BA Direct',
Easyjet_LowCost: 'Easyjet (Low-Cost)',
Jet2_LowCost: 'Jet 2 (Low-Cost)',
Monarch: 'Monarch',
OceanFlights: 'Ocean Flights',
Ryanair_LowCost: 'Ryanair (Low-Cost)',
ThomasCookContract: 'Thomas Cook Contract',
ThomsonFlyDrive: 'Thomson Fly Drive',
TUIAirfare: 'TUI Airfare'
}
};
/* DOM OBJECTS */
$tabFlights = $('#tabFlights');
/* ~END DOM OBJECTS */
function pad2(number) {
return (number < 10 ? '0' : '') + number
}
function G2BQuoteFlight(data) {
var self = this;
self.IsSupplierCheck = ko.observable(false);
self.ChosenSupplierName = ko.observable("");
self.Id = ko.observable(data.Id);
self.G2BQuoteId = ko.observable(data.G2BQuoteId);
self.CurrencyList = ko.observable(data.CurrencyList);
self.SupplierList = ko.observable(data.SupplierList);
self.SupplierId = ko.observable(data.SupplierId === 0 || Global.IsNull(data.SupplierId) ? "" : data.SupplierId);
self.ManualSupplierName = ko.observable(data.ManualSupplierName);
self.IsTravel2 = ko.observable(false);
self.IsLowCost = ko.observable(false);
self.G2BFlightTypeId = ko.observable(data.G2BFlightTypeId);
self.SupplierRef = ko.observable(data.SupplierRef);
self.IsFromTDLoad = ko.observable($('#enquiryInfoViewModel_IsFromTDLoad').val().toLowerCase());
self.IsCommitted = ko.observable($('#enquiryInfoViewModel_IsCommitted').val().toLowerCase());
self.IsFromFixedQueue = ko.observable($('#enquiryInfoViewModel_IsFromFixedQueue').val().toLowerCase());
self.HasFlight = ko.observable($('#HasFlight').val().toLowerCase());
self.CurrencyId = ko.observable(data.CurrencyId);
self.CERate = ko.observable(data.CERate);
self.AdultNett = ko.observable(data.AdultNett);
self.ChildNett = ko.observable(data.ChildNett);
self.InfantNett = ko.observable(data.InfantNett);
self.TeenNett = ko.observable(data.TeenNett);
self.AdultNettPound = ko.observable(data.AdultNettPound);
self.ChildNettPound = ko.observable(data.ChildNettPound);
self.InfantNettPound = ko.observable(data.InfantNettPound);
self.TeenNettPound = ko.observable(data.TeenNettPound);
self.TotalNett = ko.observable(data.TotalNett);
self.TotalNettPound = ko.observable(data.TotalNettPound);
self.PaymentMode = ko.observable(data.PaymentMode === 0 ? "" : data.PaymentMode);
self.Adult = $('#Adult').val();
self.Children = $('#Children').val();
self.Infant = $('#Infants').val();
self.IsGroupBooking = ko.observable(data.IsGroupBooking);
self.IsGroupBook = ko.observable(data.IsGroupBooking);
self.IsAdvanceRegistration = ko.observable(data.IsAdvanceRegistration);
self.IsAdvanceReg = ko.observable(false);
self.IsRequireChildMeal = ko.observable(data.IsRequireChildMeal);
self.IsRequireSkyCot = ko.observable(data.IsRequireSkyCot);
self.IsTDLoad = ko.observable(data.IsTDLoad);
self.Images = ko.observableArray(data.Images);
self.AirlineLocator = ko.observable(data.AirlineLocator);
self.LabelAirlineLocator = ko.observable('');
self.LabelSupplierRef = ko.observable('');
/*Comment as per G2B-FLT-CHANGE-001*/
/* self.CheckAdvanceRegistration = function (index, b) {
if (self.IsAdvanceRegistration() === true) {
alertify.error("You either select advanced Reg or select group booking for a flight.");
self.IsGroupBooking(false);
return false;
}
if ($('input[name="[' + index + '].IsGroupBooking"]').prop('checked')) {
Global.ConfirmWithDeferredWithLabelShowAsAlert("Information", "Group booking - customer cannot pre select their seats or manage booking online.", { 'ok': 'Acknowledged', 'cancel': 'Decline' }, Global.MessageType.Info, true)
.then(function () {
return true;
}).fail(function () {
return false;
});
}
return true;
}
self.CheckGroupBooking = function () {
var id = 0;
if (self.IsGroupBooking() === true) {
alertify.error("You either select advanced Reg or select group booking for a flight.");
self.IsAdvanceRegistration(false);
return false;
}
//else {
// for (var i = 0 ; i < self.SupplierList().length; i++) {
// if (self.SupplierList()[i].Text.trim() == 'Advanced Reg Flights') {
// self.ChosenSupplierName(self.SupplierList()[i].Text.toLowerCase());
// id = self.SupplierList()[i].Value;
// break;
// }
// }
// self.SupplierId(id);
//}
return true;
}*/
self.G2BFlightSupplementDetails = ko.observableArray([]);
$.each(data.G2BFlightSupplementDetails, function (i, item) {
var supplement = new G2BQuoteFlightSupplement(item);
self.G2BFlightSupplementDetails.push(supplement);
});
self.IsOverrideDeposit = ko.observable(data.IsOverrideDeposit);
self.IsSeatCheck = ko.observable(false);
self.PassengerList = ko.observableArray(data.PassengerList);
self.PassengerInfoList = ko.observableArray(data.PassengerInfoList);
self.Passengers = ko.observableArray(data.Passengers);
self.TeenAgerList = ko.observableArray(data.TeenAgerList);
self.TeenAgers = ko.observableArray(data.TeenAgers);
self.InBoundTextShow = ko.observable(false);
self.ShowSector = ko.observable(false);
self.NoOfOutBoundSectors = ko.observable(data.NoOfOutBoundSectors);
self.NoOfInBoundSectors = ko.observable(data.NoOfInBoundSectors);
self.NoOfOutBoundCount = ko.observable(0);
self.NoOfInBoundCount = ko.observable(0);
self.G2BFlightSectors = ko.observableArray();
self.SectorsHasData = ko.observable(data.SectorsHasData);
self.SupplierRefDisable = ko.observable(false);
self.SupplierRefLoaded = ko.observable(false);
self.supplierChange = function () {
self.SupplierRefLoaded(true);
};
self.ManualSupplierName.subscribe(function (val) {
if (!Global.IsNullOrEmptyString(val)) {
self.SupplierId("");
//self.IsTravel2(false);
}
});
self.ShowManualSupplierName = ko.computed(function () {
return EnquiryFromBrand == EnquiryBrands.WINGED_BOOTES ? true : false;
}, this);
self.SupplierId.subscribe(function (val) {
if (self.ShowManualSupplierName() && Global.IsNotNullResult(val)) {
self.ManualSupplierName("");
}
var advancedRegFlights = self.SupplierList().filter(function (el) { return el.Text.trim() == 'Advanced Reg Flights' && el.Value == val; });
if (advancedRegFlights.length > 0) {
self.SupplierRefDisable(true);
self.SupplierRef('TBAFLT');
}
else {
self.SupplierRefDisable(false);
if (self.SupplierRefLoaded() == true)
self.SupplierRef('');
}
for (var i = 0; i < self.SupplierList().length; i++) {
if (self.SupplierList()[i].Value == val) {
self.ChosenSupplierName(self.SupplierList()[i].Text.toLowerCase());
}
if ((self.SupplierList()[i].Text.trim() == 'Travel2' || self.SupplierList()[i].Text.trim() == G2BFlight.Supplier.OceanFlights) && self.SupplierList()[i].Value == self.SupplierId()) {
self.IsTravel2(true);
self.IsLowCost(false);
self.LabelAirlineLocator('Vendor Locator');
self.LabelSupplierRef('GAL Reference');
ResetValuesForLowCost(self);
break;
}
else if (self.SupplierList()[i].Text.indexOf("Low-Cost") >= 0 && self.SupplierList()[i].Value == self.SupplierId()) {
self.IsTravel2(false);
self.IsLowCost(true);
ResetFlightValues(self);
self.IsGroupBooking(false);
break;
}
else {
self.IsTravel2(false);
self.IsLowCost(false);
self.LabelAirlineLocator('AirLine Locator');
self.LabelSupplierRef('Supplier Ref.');
ResetValuesForLowCost(self);
}
}
});
self.SupplierId.valueHasMutated();
self.RemoveImage = function (parentid, index, data) {
var div_to_remove = $('#' + parentid + '_' + index + '_FlightImageName');
confirmImageDelete(function () {
$.get(WebDomain.webUrl + 'go2bookflight/DeleteFlightImage', {
id: data.ImageId
}, function (result) {
if (result.isSuccess) {
$('#' + index + '_' + parentid + '_FlightImageName').remove();
var _filescount = parseInt(UploadedFiles.value);
$(div_to_remove).remove();
UploadedFiles.value = (_filescount > 0 ? (--_filescount) : 0);
alertify.success("Successfully deleted!");
}
else
alertify.error("Error occurred while deleting flight image.");
}).fail(function () {
alertify.error("Error occurred while deleting flight image.");
});
});
}.bind(self);
self.G2BFlightTypeId.subscribe(function (val) {
if (self.SectorsHasData()) {
if (val == 1) {
self.InBoundTextShow(false);
self.Duration("0");
self.ShowSector(false);
}
else if (val == 3) {
self.InBoundTextShow(true);
self.ShowSector(false);
}
else if (val == 4) {
self.InBoundTextShow(true);
self.ShowSector(true);
}
else { // In case of 2 & 5
self.InBoundTextShow(false);
self.ShowSector(true);
}
self.SectorsHasData(false);
}
else {
self.SectorsHasData(false);
self.G2BFlightSectors([]);
self.NoOfOutBoundSectors(undefined);
self.NoOfInBoundSectors(undefined);
if (val == 1) {
self.InBoundTextShow(false);
self.ShowSector(false);
self.NoOfOutBoundCount(0);
self.NoOfOutBoundSectors(1);
}
else if (val == 3) {
self.InBoundTextShow(true);
self.ShowSector(false);
self.NoOfOutBoundCount(0);
self.NoOfOutBoundSectors(1);
self.NoOfInBoundCount(0);
self.NoOfInBoundSectors(1);
}
else if (val == 4) {
self.InBoundTextShow(true);
self.ShowSector(true);
self.NoOfOutBoundCount(0);
self.NoOfOutBoundSectors(2);
self.NoOfInBoundCount(0);
self.NoOfInBoundSectors(2);
}
else {
self.InBoundTextShow(false);
self.ShowSector(true);
self.NoOfOutBoundCount(0);
self.NoOfOutBoundSectors(2);
}
}
});
self.TempSectors = ko.observableArray();
self.TempInSectors = ko.observableArray();
self.TempOutSectors = ko.observableArray();
self.NoOfOutBoundSectors.subscribe(function (val) {
self.TempSectors([])
self.TempInSectors([])
self.TempOutSectors([])
if (self.NoOfOutBoundCount() < val) {
if (self.SectorsHasData()) {
$.each(data.G2BFlightSectors, function (i, item) {
if (item.IsInbound == false) {
var sector = new G2BQuoteFlightSector(item);
//var sector = new G2BQuoteFlightSector({
// IsInbound: true,
// counter: i + 1,
// DepartureDate: deptDate,
// ArrivalDate: deptDate
//});
self.G2BFlightSectors.push(sector);
}
});
}
else {
for (var i = Number(self.NoOfOutBoundCount()); i < val; i++) {
var sector = new G2BQuoteFlightSector({
IsInbound: false,
counter: i + 1,
DepartureDate: deptDate,
ArrivalDate: deptDate
});
self.G2BFlightSectors.push(sector);
}
}
}
else {
if (self.NoOfOutBoundCount() > 1) {
var item;
ko.utils.arrayForEach(self.G2BFlightSectors(), function (v) {
if (v.IsInbound() == false) {
self.TempOutSectors.push(v);
}
if (v.IsInbound() == true) {
self.TempInSectors.push(v);
}
});
ko.utils.arrayForEach(self.TempOutSectors(), function (v) {
if (v.IsInbound() == false && v.counter() > val) {
ko.utils.arrayRemoveItem(self.G2BFlightSectors(), v);
}
});
self.TempSectors(self.G2BFlightSectors());
self.G2BFlightSectors(self.TempSectors());
}
}
self.NoOfOutBoundCount(val);
bindSelect2('.select2bind');
bindSelect2WithoutSort();
}, null, "change");
self.NoOfOutBoundSectors.valueHasMutated();
self.NoOfInBoundSectors.subscribe(function (val) {
self.TempSectors([])
self.TempInSectors([])
self.TempOutSectors([])
if (self.NoOfInBoundCount() < val) {
if (self.SectorsHasData()) {
$.each(data.G2BFlightSectors, function (i, item) {
if (item.IsInbound == true) {
var sector = new G2BQuoteFlightSector(item);
self.G2BFlightSectors.push(sector);
}
});
}
else {
for (var i = Number(self.NoOfInBoundCount()); i < val; i++) {
var sector = new G2BQuoteFlightSector({
IsInbound: true,
counter: i + 1,
DepartureDate: deptDate,
ArrivalDate: deptDate
});
self.G2BFlightSectors.push(sector);
}
}
}
else {
if (self.NoOfInBoundCount() > 1) {
var item;
ko.utils.arrayForEach(self.G2BFlightSectors(), function (v) {
if (v.IsInbound() == false) {
self.TempOutSectors.push(v);
}
if (v.IsInbound() == true) {
self.TempInSectors.push(v);
}
});
ko.utils.arrayForEach(self.TempInSectors(), function (v) {
if (v.IsInbound() == true && v.counter() > val) {
ko.utils.arrayRemoveItem(self.G2BFlightSectors(), v);
}
});
self.TempSectors(self.G2BFlightSectors());
self.G2BFlightSectors(self.TempSectors());
}
}
self.NoOfInBoundCount(val);
bindSelect2('.select2bind');
bindSelect2WithoutSort();
}, null, "change");
self.NoOfInBoundSectors.valueHasMutated();
self.SectorGroup = ko.computed(function () {
var list = ko.utils.arrayMap(self.G2BFlightSectors(), function (item) {
return Boolean(item.IsInbound());
});
return ko.utils.arrayGetDistinctValues(list);
});
self.Symbol = ko.observable('£');
self.precision = ko.observable(2);
self.CurrencyId.subscribe(function (val) {
if (Global.IsNotNull(val)) {
if (val == 1) {
self.CERate(CERateInGBP);
self.Symbol('£');
self.AdultNettPound((self.AdultNett() * self.CERate()).toFixed(self.precision()));
self.ChildNettPound((self.ChildNett() * self.CERate()).toFixed(self.precision()));
self.InfantNettPound((self.InfantNett() * self.CERate()).toFixed(self.precision()));
self.TeenNettPound((self.TeenNett() * self.CERate()).toFixed(self.precision()));
self.TotalNettPound((self.TotalNett() * self.CERate()).toFixed(self.precision()));
} else if (val == 2) {
self.CERate(CERateInUSD);
self.Symbol('$');
self.AdultNettPound((self.AdultNett() * self.CERate()).toFixed(self.precision()));
self.ChildNettPound((self.ChildNett() * self.CERate()).toFixed(self.precision()));
self.InfantNettPound((self.InfantNett() * self.CERate()).toFixed(self.precision()));
self.TeenNettPound((self.TeenNett() * self.CERate()).toFixed(self.precision()));
self.TotalNettPound((self.TotalNett() * self.CERate()).toFixed(self.precision()));
}
}
});
self.RemoveImage = function (parentid, index, data) {
var div_to_remove = $('#' + index + '_' + parentid + '_G2BFlightImageName');
confirmImageDelete(function () {
$.get(WebDomain.webUrl + 'go2bookflight/DeleteFlightImage', {
id: data.ImageId
}, function (result) {
if (result.isSuccess) {
$(div_to_remove).remove();
var UploadinId = $('#' + index + '_FlightImageDiv').find(".uploader_UID").attr("data-uploadinid");
removeDeleteImage($('#' + UploadinId + '_hdnimagename'), data.ImageName)
UploadedFiles.value = parseInt(UploadedFiles.value) - 1;
alertify.success("Successfully deleted!");
}
else
alertify.error("Error occurred while deleting flight image.");
}).fail(function () {
alertify.error("Error occurred while deleting flight image.");
});
});
}.bind(self);
var flightSupplementId = 0;
self.addSupplement = function (item, event) {
var count = flightSupplementId + 1;
if (count > 9) {
alertify.error("There is a maximum of 10 supplements allowed.");
return false;
}
flightSupplementId = count;
var FlightSupplement = new G2BQuoteFlightSupplement({
SupplementQuantity: 0
});
self.G2BFlightSupplementDetails.push(FlightSupplement);
}.bind(self);
self.OutboundDepartureDates = ko.observableArray();
self.InboundArrivalDates = ko.observableArray();
self.Duration = ko.observable(data.Duration);
self.CalcuateDuration = function (item, event) {
var value = calcuateDurationFlight(self);
self.Duration(value[0]);
// set flag to check there is any change in departure date
if (vmFlight.IsModelSaved(self.Id()) == true) {
vmFlight.SetFlightDateAmended(self.Id());
G2BFlight.isFlightDatesAmend = true;
}
else {
G2BFlight.isFlightDatesAmend = false;
}
}.bind(self);
self.FillAirlineClass = function (val) {
IsPreBookedSeatCheck = false;
for (var i = 0; i < AirlineList.length; i++) {
if (Number(AirlineList[i].Value) == val.OperatingAirlineId()) {
val.ChosenOperatingAirlineName($.trim(AirlineList[i].Text.toLowerCase().split("-")[1]));
}
}
val.AirlineClassList("");
if (Global.IsNotNullResult(val.OperatingAirlineId())) {
$.ajax({
type: "POST",
url: "/enquiryquote/FillAirClassList",
data: "{ 'airlineId': " + val.OperatingAirlineId() + ",'brandId':" + $('#BrandId').val() + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
val.AirlineClassList(data.airClasses);
}
});
}
}.bind(self);
self.FillLuggage = function (val) {
if (Global.IsNotNullOrEmptyString(val.AirClassId())) {
val.ManualCabinClass("");
}
BindLuggage(val);
}.bind(self);
self.CalculatePassengerPrice = function (data, index, type) {
var passengerType = type.currentTarget.attributes.ptype.nodeValue;
var price = calculatepassengerprice(data, index, passengerType);
self.TotalNett(price[0]);
self.TotalNettPound(price[1]);
self.AdultNettPound(price[2]);
self.ChildNettPound(price[3]);
self.InfantNettPound(price[4]);
self.TeenNettPound(price[5]);
};
self.LoadToTd = function (count, data) {
if (Global.IsNotNullOrEmptyString(data)) {
for (var index = 0; index < data.G2BFlightSectors().length; index++) {
var internalnotes = data.G2BFlightSectors()[index].InternalNotes();
var clientnotes = data.G2BFlightSectors()[index].ClientNotes();
if (Global.IsNotNullOrEmptyString(internalnotes) && !data.G2BFlightSectors()[index].IsLoadInternalNotes()) {
Global.ShowMessage("Notes exist. Please check to confirm you have acknowledged these.", Global.MessageType.Error);
self.IsTDLoad(false);
return false;
}
if (Global.IsNotNullOrEmptyString(clientnotes) && !data.G2BFlightSectors()[index].IsLoadClientNotes()) {
Global.ShowMessage("Notes exist. Please check to confirm you have acknowledged these.", Global.MessageType.Error);
self.IsTDLoad(false);
return false;
}
}
}
$.ajax({
url: '/go2bookflight/loadflighttotd',
contentType: 'application/json',
data: ko.toJSON({
quoteFlightId: self.Id()
}),
type: "POST",
cache: false,
success: function (result) {
if (result.IsSuccess) {
alertify.success(result.Message);
}
else {
alertify.error(result.Data);
}
}
});
var counter = 0;
for (var i = 0; i < vmFlight.G2BQuoteFlights().length; i++) {
if (vmFlight.G2BQuoteFlights()[i].IsTDLoad()) {
counter++;
}
}
if (counter == vmFlight.G2BQuoteFlights().length) {
$tabFlights.find('a').addClass('bg_green');
}
else {
$tabFlights.find('a').removeClass('bg_green');
}
}.bind(self);
self.AirlineLocatorOptional = ko.computed(function () {
return EnquiryFromBrand == EnquiryBrands.WINGED_BOOTES ? false : true;
}, this);
self.ShowLowCostHelp = ko.computed(function () {
return EnquiryFromBrand == EnquiryBrands.WINGED_BOOTES ? true : false;
}, this);
self.ShowAirlineManualField = ko.computed(function () {
return EnquiryFromBrand == EnquiryBrands.WINGED_BOOTES ? true : false;
}, this);
if (data.SupplierId > 0) {
for (var i = 0; i < self.SupplierList().length; i++) {
if (Number(self.SupplierList()[i].Value) === data.SupplierId) {
self.ChosenSupplierName(self.SupplierList()[i].Text.toLowerCase());
}
if (Number(self.SupplierList()[i].Value) === data.SupplierId) {
self.SupplierId(self.SupplierList()[i].Value);
}
if ((self.SupplierList()[i].Text.trim() == G2BFlight.Supplier.Travel2 || self.SupplierList()[i].Text.trim() == G2BFlight.Supplier.OceanFlights) && self.SupplierList()[i].Value == self.SupplierId()) {
self.IsTravel2(true);
self.IsLowCost(false);
//ResetValuesForLowCost(self);
break;
}
else if (self.SupplierList()[i].Text.indexOf("Low-Cost") >= 0 && self.SupplierList()[i].Value == self.SupplierId()) {
self.IsTravel2(false);
self.IsLowCost(true);
self.IsGroupBooking(false);
break;
}
else {
self.IsTravel2(false);
self.IsLowCost(false);
}
}
}
else {
for (var i = 0; i < self.SupplierList().length; i++) {
if (self.SupplierList()[i].Text.trim() == 'Travel2' || self.SupplierList()[i].Text.trim() == G2BFlight.Supplier.OceanFlights) {
self.ChosenSupplierName(self.SupplierList()[i].Text.toLowerCase());
self.IsTravel2(true);
self.IsLowCost(false);
break;
}
}
}
}
function ResetValuesForLowCost(flightData) {
for (var index = 0; index < flightData.G2BFlightSupplementDetails().length; index++) {
flightData.G2BFlightSupplementDetails()[index].SupplementQuantity(0);
flightData.G2BFlightSupplementDetails()[index].Supplement('');
}
}
function ResetValuesForLuggage(flightData) {
flightData.AdultCount(0);
flightData.ChildCount(0);
flightData.InfantCount(0);
flightData.AdultKg('');
flightData.ChildKg('');
flightData.InfantKg('');
}
function ResetFlightValues(flightData) {
for (var index = 0; index < flightData.G2BFlightSectors().length; index++) {
flightData.G2BFlightSectors()[index].AirlineId('');
flightData.G2BFlightSectors()[index].OperatingAirlineId('');
flightData.G2BFlightSectors()[index].BookingClass('');
flightData.G2BFlightSectors()[index].AirlineReference('');
flightData.G2BFlightSectors()[index].FlightNumber('');
flightData.G2BFlightSectors()[index].FlightNumber('');
flightData.G2BFlightSectors()[index].LuggageAllowance('');
flightData.G2BFlightSectors()[index].ManualCabinClass('');
flightData.G2BFlightSectors()[index].AirClassId('');
//flightData.G2BFlightSectors()[index].IsManualLuggageAllow(false);
flightData.G2BFlightSectors()[index].IsBaggagePayLocally(false);
flightData.G2BFlightSectors()[index].AdultCount(0);
flightData.G2BFlightSectors()[index].ChildCount(0);
flightData.G2BFlightSectors()[index].InfantCount(0);
flightData.G2BFlightSectors()[index].AdultKg('');
flightData.G2BFlightSectors()[index].ChildKg('');
flightData.G2BFlightSectors()[index].InfantKg('');
flightData.IsGroupBooking(false);
flightData.IsAdvanceRegistration(false);
flightData.IsAdvanceReg(false);
}
}
function G2BQuoteFlightSupplement(data) {
var self = this;
self.Id = ko.observable(data.Id);
self.QuoteFlightId = ko.observable(data.QuoteFlightId);
self.SupplementQuantity = ko.observable(data.SupplementQuantity);
self.Supplement = ko.observable(data.Supplement);
}
function G2BQuoteFlightSector(data) {
var self = this;
self.Id = ko.observable(data.Id);
self.counter = ko.observable(data.counter);
self.G2BFlightId = ko.observable(data.G2BFlightId);
self.IsInbound = ko.observable(data.IsInbound);
self.AirlineId = ko.observable(data.AirlineId == 0 || Global.IsNull(data.AirlineId) ? "" : data.AirlineId);
self.OperatingAirlineId = ko.observable(data.OperatingAirlineId == 0 ? "" : data.OperatingAirlineId);
self.ChosenAirlineName = ko.observable("");
self.ChosenOperatingAirlineName = ko.observable("");
self.ChosenAirlineClassName = ko.observable("");
self.ChosenDepartureAirport = ko.observable("");
self.ChosenArrivalAirport = ko.observable("");
self.ManualCabinClass = ko.observable(data.ManualCabinClass);
self.selectedDepartureAirportOption = ko.observable();
self.SelectedDepartureAirportValue = ko.observable(data.SelectedDepartureAirportValue).extend({ validatable: true, required: { message: "*Required" } });
self.DepartureAirportId = ko.observable(data.DepartureAirportId);
//self.SelectedDepartureAirportValue.subscribe(function (val) {
// if (!Global.IsNullOrEmptyString(self.SelectedDepartureAirportValue()) && !Global.IsNullOrEmptyString(self.selectedDepartureAirportOption())) {
// if (self.SelectedDepartureAirportValue().toTitleCase() == self.selectedDepartureAirportOption().label.toTitleCase()) {
// self.DepartureAirportId(self.selectedDepartureAirportOption().value);
// }
// else {
// self.SelectedDepartureAirportValue(null);
// }
// }
// else {
// self.selectedDepartureAirportOption(null);
// self.SelectedDepartureAirportValue(null);
// }
//});
self.selectedDepartureAirportOption.subscribe(function (val) {
if (!Global.IsNullOrEmptyString(val) && !Global.IsNullOrEmptyString(val.value)) {
self.DepartureAirportId(val.value);
self.SelectedDepartureAirportValue(val.label);
}
else {
self.DepartureAirportId('');
self.selectedDepartureAirportOption('');
self.SelectedDepartureAirportValue('');
}
});
//self.DepartureAirportId = ko.observable(data.DepartureAirportId === 0 ? "" : data.DepartureAirportId).extend({ validatable: true, required: { message: "*Required" } });
self.DepartureDate = ko.observable(Global.IsNullOrEmptyString(data.DepartureDate) ? enquiryInfo_DepartureDate : data.DepartureDate).extend({ validatable: true, required: { message: "*Required" } });
self.DepartureHour = ko.observable(data.DepartureHour === 0 ? "" : data.DepartureHour).extend({ validatable: true, required: { message: "*Required" } });
self.DepartureMin = ko.observable(data.DepartureMin === 0 ? "" : data.DepartureMin).extend({ validatable: true, required: { message: "*Required" } });
self.selectedArrivalAirportOption = ko.observable();
self.SelectedArrivalAirportValue = ko.observable(data.SelectedArrivalAirportValue).extend({ validatable: true, required: { message: "*Required" } });
self.ArrivalAirportId = ko.observable(data.ArrivalAirportId);
//self.SelectedArrivalAirportValue.subscribe(function (val) {
// if (!Global.IsNullOrEmptyString(self.SelectedArrivalAirportValue()) && !Global.IsNullOrEmptyString(self.selectedArrivalAirportOption())) {
// if (self.SelectedArrivalAirportValue().toTitleCase() == self.selectedArrivalAirportOption().label.upperFirstAll().toTitleCase())
// self.ArrivalAirportId(self.selectedArrivalAirportOption().value);
// else
// self.SelectedArrivalAirportValue(null);
// }
// else {
// self.selectedArrivalAirportOption(null);
// self.SelectedArrivalAirportValue(null);
// }
//});
self.selectedArrivalAirportOption.subscribe(function (val) {
if (!Global.IsNullOrEmptyString(val) && !Global.IsNullOrEmptyString(val.value)) {
self.ArrivalAirportId(val.value);
self.SelectedArrivalAirportValue(val.label);
}
else {
self.ArrivalAirportId('');
self.selectedArrivalAirportOption('');
self.SelectedArrivalAirportValue('');
}
});
//self.ArrivalAirportId = ko.observable(data.ArrivalAirportId === 0 ? "" : data.ArrivalAirportId).extend({ validatable: true, required: { message: "*Required" } });
self.ArrivalDate = ko.observable(Global.IsNullOrEmptyString(data.ArrivalDate) ? enquiryInfo_DepartureDate : data.ArrivalDate).extend({ validatable: true, required: { message: "*Required" } });
self.ArrivalHour = ko.observable(data.ArrivalHour === 0 ? "" : data.ArrivalHour).extend({ validatable: true, required: { message: "*Required" } });
self.ArrivalMin = ko.observable(data.ArrivalMin === 0 ? "" : data.ArrivalMin).extend({ validatable: true, required: { message: "*Required" } });
self.BookingClass = ko.observable(data.BookingClass);
self.LuggageAllowance = ko.observable(data.LuggageAllowance);
self.AdultCount = ko.observable(data.AdultCount == 0 ? "" : data.AdultCount);
self.AdultKg = ko.observable(data.AdultKg);
self.ChildCount = ko.observable(data.ChildCount == 0 ? "" : data.ChildCount);
self.ChildKg = ko.observable(data.ChildKg);
self.InfantCount = ko.observable(data.InfantCount == 0 ? "" : data.InfantCount);
self.InfantKg = ko.observable(data.InfantKg);
//self.IsManualLuggageAllow = ko.observable(data.IsManualLuggageAllow);
self.IsBaggagePayLocally = ko.observable(data.IsBaggagePayLocally);
self.FlightNumber = ko.observable(data.FlightNumber);
self.AirlineReference = ko.observable(data.AirlineReference);
self.InternalNotes = ko.observable(Global.IsNotNullOrEmptyString(data.InternalNotes) ? data.InternalNotes : "").extend({ maxlength: 1000 });
self.ClientNotes = ko.observable(Global.IsNotNullOrEmptyString(data.ClientNotes) ? data.ClientNotes : "").extend({ maxlength: 1000 });
self.IsLoadClientNotes = ko.observable(data.IsLoadClientNotes || false);
self.IsLoadInternalNotes = ko.observable(data.IsLoadInternalNotes || false);
self.IsInternaNoteExist = ko.observable(Global.IsNotNullOrEmptyString(data.InternalNotes) ? true : false);
self.IsClientNoteExist = ko.observable(Global.IsNotNullOrEmptyString(data.ClientNotes) ? true : false);
self.AirlineClassList = ko.observableArray();
self.AirSelectedClassId = ko.observable(data.AirClassId);
self.SelectedAirlineId = ko.observable(data.OperatingAirlineId);
self.SelectedLuggageType = ko.observable(Global.IsNullOrEmptyString(data.SelectedLuggageType) ? '1' : data.SelectedLuggageType.toString());
/*For WB*/
self.ManualMarketingAirline = ko.observable(data.ManualMarketingAirline).extend({ maxlength: 100 });
self.ManualOperatingAirline = ko.observable(data.ManualOperatingAirline).extend({ maxlength: 100 });
/**/
self.DepartureDate.subscribe(function (val) {
self.ArrivalDate(val);
});
self.SelectedLuggageType.subscribe(function (val) {
if (val == "1") {
BindLuggage(self);
}
else
if (val == "2" || val == "4") {
self.LuggageAllowance("");
}
if (val != "2" || val != "4") {
ResetValuesForLuggage(self);
}
});
self.ManualCabinClass.subscribe(function (val) {
if (!Global.IsNullOrEmptyString(val)) {
self.AirClassId("");
}
});
//if (data.DepartureAirportId > 0) {
// for (var i = 0; i < AirPortList.length; i++) {
// if (AirPortList[i].Value == data.DepartureAirportId) {
// self.ChosenDepartureAirport($.trim(AirPortList[i].Text.toLowerCase().split("-")[1]));
// }
// }
//}
//if (data.ArrivalAirportId > 0) {
// for (var i = 0; i < AirPortList.length; i++) {
// if (AirPortList[i].Value == data.ArrivalAirportId) {
// self.ChosenArrivalAirport($.trim(AirPortList[i].Text.toLowerCase().split("-")[1]));
// }
// }
//}
self.ChosenDepartureAirport = ko.computed(function () {
if (Global.IsNotNullOrEmptyString(self.SelectedDepartureAirportValue())) {
return $.trim(self.SelectedDepartureAirportValue().toLowerCase().split("-")[1]);
}
});
self.ChosenArrivalAirport = ko.computed(function () {
if (Global.IsNotNullOrEmptyString(self.SelectedArrivalAirportValue())) {
return $.trim(self.SelectedArrivalAirportValue().toLowerCase().split("-")[1]);
}
});
self.AirClassId = ko.observable(data.AirClassId == 0 || Global.IsNull(data.AirClassId) ? "" : data.AirClassId);
if (data.OperatingAirlineId > 0 && airlineClassData != null) {
var _airlineClassData = $.grep(airlineClassData, function (val) { return val.AirlineId == data.OperatingAirlineId });
self.AirlineClassList(_airlineClassData);
for (var i = 0; i < self.AirlineClassList().length; i++) {
if (Number(self.AirlineClassList()[i].Value) == self.AirSelectedClassId()) {
self.ChosenAirlineClassName($.trim(self.AirlineClassList()[i].Text.toLowerCase()));
}
}
for (var i = 0; i < AirlineList.length; i++) {
if (Number(AirlineList[i].Value) == self.SelectedAirlineId()) {
self.ChosenOperatingAirlineName($.trim(AirlineList[i].Text.toLowerCase().split("-")[1]));
}
}
}
else if (data.OperatingAirlineId > 0 && airlineClassData == null) {
$.ajax({
type: "POST",
url: "/enquiryquote/FillAirClassList",
data: "{ 'airlineId': " + data.OperatingAirlineId + ",'brandId':" + $('#BrandId').val() + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
self.AirlineClassList(data.airClasses);
self.AirClassId(self.AirSelectedClassId());
for (var i = 0; i < self.AirlineClassList().length; i++) {
if (Number(self.AirlineClassList()[i].Value) == self.AirSelectedClassId()) {
self.ChosenAirlineClassName($.trim(self.AirlineClassList()[i].Text.toLowerCase()));
}
}
for (var i = 0; i < AirlineList.length; i++) {
if (Number(AirlineList[i].Value) == self.SelectedAirlineId()) {
self.ChosenOperatingAirlineName($.trim(AirlineList[i].Text.toLowerCase().split("-")[1]));
}
}
}
});
}
self.AirlineId.subscribe(function (val) {
IsPreBookedSeatCheck = false;
if (Global.IsNullOrEmptyString(val)) {
//self.OperatingAirlineId(0);
self.AirClassId(0);
}
for (var i = 0; i < AirlineList.length; i++) {
if (Number(AirlineList[i].Value) == val) {
self.ChosenAirlineName(AirlineList[i].Text.toLowerCase().split("-")[1]);
}
}
});
/*Do not remove*/
//self.OperatingAirlineId.subscribe(function (val) {
// IsPreBookedSeatCheck = false;
// for (var i = 0 ; i < AirlineList.length; i++) {
// if (Number(AirlineList[i].Value) == val) {
// self.ChosenOperatingAirlineName($.trim(AirlineList[i].Text.toLowerCase().split("-")[1]));
// }
// }
// self.AirlineClassList("");
// if (Global.IsNotNullResult(val)) {
// alert("df");
// $.ajax({
// type: "POST",
// url: "/enquiryquote/FillAirClassList",
// data: "{ 'airlineId': " + val + "}",
// contentType: "application/json; charset=utf-8",
// dataType: "json",
// success: function (data) {
// self.AirlineClassList(data);
// }
// });
// } else { }
//});
//self.AirClassId.subscribe(function (val) {
// if (Global.IsNotNullResult(val)) {
// $.ajax({
// type: "POST",
// url: "/go2bookquote/FillLuggageAllowance",
// data: "{ 'airclassId': " + val + "}",
// contentType: "application/json; charset=utf-8",
// dataType: "json",
// success: function (data) {
// self.LuggageAllowance(data);
// for (var i = 0 ; i < self.AirlineClassList().length; i++) {
// if (Number(self.AirlineClassList()[i].Value) == val) {
// self.ChosenAirlineClassName($.trim(self.AirlineClassList()[i].Text.toLowerCase()));
// }
// }
// }
// });
// }
// else {
// self.LuggageAllowance("");
// }
//});
/*End Do not remove*/
//self.DepartureAirportId.subscribe(function (val) {
// if (Global.IsNotNullResult(val)) {
// for (var i = 0; i < AirPortList.length; i++) {
// if (AirPortList[i].Value == val) {
// self.ChosenDepartureAirport($.trim(AirPortList[i].Text.toLowerCase().split("-")[1]));
// }
// }
// }
//});
//self.ArrivalAirportId.subscribe(function (val) {
// if (Global.IsNotNullResult(val)) {
// for (var i = 0; i < AirPortList.length; i++) {
// if (AirPortList[i].Value == val) {
// self.ChosenArrivalAirport($.trim(AirPortList[i].Text.toLowerCase().split("-")[1]));
// }
// }
// }
//});
self.QuoteFlightErrors = ko.validation.group(self, {
deep: true,
live: true
});
}
function BindLuggage(val) {
if (Global.IsNotNullOrEmptyString(val.AirClassId())) {
$.ajax({
type: "POST",
url: "/go2bookquote/FillLuggageAllowance",
data: "{ 'airclassId': " + val.AirClassId() + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
val.LuggageAllowance(data);
for (var i = 0; i < val.AirlineClassList().length; i++) {
if (Number(val.AirlineClassList()[i].Value) == val.AirClassId()) {
val.ChosenAirlineClassName($.trim(val.AirlineClassList()[i].Text.toLowerCase()));
}
}
}
});
}
else {
val.LuggageAllowance("");
}
}
function calcuateDurationFlight(parent) {
var outBound_dep_dates = [];
var inBound_dep_dates = [];
var dates_Dept = [];
var _deptDate = "";
ko.toJSON(parent.G2BFlightSectors());
ko.utils.arrayFilter(parent.G2BFlightSectors(), function (sectorItem) {
if (!sectorItem.IsInbound()) {
if (Global.IsNotNull(sectorItem.DepartureDate())) {
var deptDate = sectorItem.DepartureDate().split('/'), date, deptTime, hour, min;
var _deptDate = sectorItem.DepartureDate().split('/');
var _date = _deptDate[1] + '/' + _deptDate[0] + '/' + _deptDate[2];
dates_Dept.push(new Date(_date));
if (Global.IsNotNull(sectorItem.DepartureHour()))
hour = sectorItem.DepartureHour();
else
hour = "0";
if (Global.IsNotNull(sectorItem.DepartureMin()))
min = sectorItem.DepartureMin();
else
min = "0";
deptTime = hour + ":" + min;
date = new Date(deptDate[2] + '/' + deptDate[1] + '/' + deptDate[0] + " " + deptTime);
outBound_dep_dates.push(date);
}
}
else {
if (Global.IsNotNull(sectorItem.DepartureDate())) {
var arrDate = sectorItem.DepartureDate().split('/'), date, arrTime, hour, min;
var _deptDate = sectorItem.DepartureDate().split('/');
var _date = _deptDate[1] + '/' + _deptDate[0] + '/' + _deptDate[2];
dates_Dept.push(new Date(_date));
if (Global.IsNotNull(sectorItem.DepartureHour()))
hour = sectorItem.DepartureHour();
else
hour = "0";
if (Global.IsNotNull(sectorItem.DepartureMin()))
min = sectorItem.DepartureMin();
else
min = "0";
arrTime = hour + ":" + min;
date = new Date(arrDate[2] + '/' + arrDate[1] + '/' + arrDate[0] + " " + arrTime);
inBound_dep_dates.push(date);
}
}
});
var outbound_minDate = new Date(Math.min.apply(null, outBound_dep_dates));
var inbound_maxDate = new Date(Math.max.apply(null, inBound_dep_dates));
var minDate = new Date(Math.min.apply(null, dates_Dept));
var todayDate = new Date();
var _diff = minDate - todayDate;
var days = Math.round(_diff / 1000 / 60 / 60 / 24);
var diff = (inbound_maxDate - outbound_minDate) / (60 * 60 * 24 * 1000); //converted into years
if (days >= 330)
return [parent.InBoundTextShow() ? Math.floor(diff) : 0, true];
else
return [parent.InBoundTextShow() ? Math.floor(diff) : 0, false];
}
function calculatepassengerprice(count, data, passengerType) {
var msg = '';
if (Global.IsNotNullOrEmptyString(vmFlight) && (data.Passengers().length > 0 || data.TeenAgers().length > 0)) {
var currentflightsector = data.G2BFlightSectors();
var currentoutboundflightdeptdate = [];
var currentinboundflightdeptdate = [];
/*Get Current flight data*/
for (var index = 0; index < currentflightsector.length; index++) {
if (Global.IsNotNullOrEmptyString(currentflightsector[index].DepartureDate()) && Global.IsNotNullOrEmptyString(currentflightsector[index].ArrivalDate())) {
IsInbound = currentflightsector[index].IsInbound();
if (!IsInbound) {
var outBoundDepartureHour = Global.IsNotNull(currentflightsector[index].DepartureHour()) ? currentflightsector[index].DepartureHour() : "00";
var outBoundDepartureMin = Global.IsNotNull(currentflightsector[index].DepartureMin()) ? currentflightsector[index].DepartureMin() : "00";
var outboundDeparturedate = (currentflightsector[index].DepartureDate() + " " + outBoundDepartureHour + ":" + outBoundDepartureMin).split('/');
currentoutboundflightdeptdate.push(new Date(outboundDeparturedate[1] + '/' + outboundDeparturedate[0] + '/' + outboundDeparturedate[2]));
}
if (IsInbound) {
var inboundDepartureHour = Global.IsNotNull(currentflightsector[index].DepartureHour()) ? currentflightsector[index].DepartureHour() : "00";
var inboundDepartureMin = Global.IsNotNull(currentflightsector[index].DepartureMin()) ? currentflightsector[index].DepartureMin() : "00";
var inboundDeparturedate = (currentflightsector[index].DepartureDate() + " " + inboundDepartureHour + ":" + inboundDepartureMin).split('/');
currentinboundflightdeptdate.push(new Date(inboundDeparturedate[1] + '/' + inboundDeparturedate[0] + '/' + inboundDeparturedate[2]));
}
}
}
var currentflightPassenger = data.Passengers();
var currentflightTeenAger = data.TeenAgers();
/**/
var thisPassenger = "";
var thisTeenAger = "";
for (var pi = 0; pi < currentflightTeenAger.length; pi++) {
for (var pj = 0; pj < currentflightPassenger.length; pj++) {
if (currentflightTeenAger[pi] == currentflightPassenger[pj]) {
if (passengerType === 'Passenger') {
msg = "Pax already assigned as a teen.";
var test = $.grep(vmFlight.G2BQuoteFlights()[count].Passengers(), function (v) {
return v != currentflightPassenger[pj];
});
vmFlight.G2BQuoteFlights()[count].Passengers(test);
$('.multipleflight').multiselect('refresh');
break;
}
if (passengerType === 'Teen') {
msg = "Pax already assigned as a adult.";
var test = $.grep(vmFlight.G2BQuoteFlights()[count].TeenAgers(), function (v) {
return v != currentflightPassenger[pj];
});
vmFlight.G2BQuoteFlights()[count].TeenAgers(test);
$('.multipleflightTeen').multiselect('refresh');
break;
}
}
}
}
for (var i = 0; i < vmFlight.G2BQuoteFlights().length; i++) {
for (var j = 0; j < vmFlight.G2BQuoteFlights()[i].G2BFlightSectors().length; j++) {
if (Global.IsNotNullOrEmptyString(vmFlight.G2BQuoteFlights()[i].G2BFlightSectors()[j].DepartureDate()) && Global.IsNotNullOrEmptyString(vmFlight.G2BQuoteFlights()[i].G2BFlightSectors()[j].ArrivalDate())) {
if (i != count) {
thisPassenger = vmFlight.G2BQuoteFlights()[i].Passengers();
thisTeenAger = vmFlight.G2BQuoteFlights()[i].TeenAgers();
var sector = vmFlight.G2BQuoteFlights()[i].G2BFlightSectors()[j];
IsInbound = sector.IsInbound();
var departureHour = Global.IsNotNull(sector.DepartureHour()) ? sector.DepartureHour() : "00";
var departureMin = Global.IsNotNull(sector.DepartureMin()) ? sector.DepartureMin() : "00";
if (!IsInbound) {
var currentoutbounddepartureHour = departureHour;
var currentoutbounddepartureMin = departureMin;
var currentoutbounddepartureDate = (sector.DepartureDate() + " " + currentoutbounddepartureHour + ":" + currentoutbounddepartureMin).split('/');
var thisoutboundflightdeptdate = new Date(currentoutbounddepartureDate[1] + '/' + currentoutbounddepartureDate[0] + '/' + currentoutbounddepartureDate[2]);
if (currentoutboundflightdeptdate.length > 0) {
for (var ci = 0; ci < currentoutboundflightdeptdate.length; ci++) {
if (currentoutboundflightdeptdate[ci].getTime() == thisoutboundflightdeptdate.getTime()) {
if (passengerType === 'Passenger') {
for (var pi = 0; pi < currentflightPassenger.length; pi++) {
for (var pj = 0; pj < thisPassenger.length; pj++) {
if (currentflightPassenger[pi] == thisPassenger[pj]) {
msg = "Pax already assigned on other Flight with similar date bands.";
var test = $.grep(vmFlight.G2BQuoteFlights()[count].Passengers(), function (v) {
return v != thisPassenger[pj];
});
vmFlight.G2BQuoteFlights()[count].Passengers(test);
$('.multipleflight').multiselect('refresh');
break;
}
}
for (var pj = 0; pj < thisTeenAger.length; pj++) {
if (currentflightPassenger[pi] == thisTeenAger[pj]) {
msg = "Pax already assigned on other Flight with similar date bands.";
var test = $.grep(vmFlight.G2BQuoteFlights()[count].Passengers(), function (v) {
return v != thisTeenAger[pj];
});
vmFlight.G2BQuoteFlights()[count].Passengers(test);
$('.multipleflight').multiselect('refresh');
break;
}
}
}
}
if (passengerType === 'Teen') {
for (var pi = 0; pi < currentflightTeenAger.length; pi++) {
for (var pj = 0; pj < thisPassenger.length; pj++) {
if (currentflightTeenAger[pi] == thisPassenger[pj]) {
msg = "Pax already assigned on other Flight with similar date bands.";
var test = $.grep(vmFlight.G2BQuoteFlights()[count].TeenAgers(), function (v) {
return v != thisPassenger[pj];
});
vmFlight.G2BQuoteFlights()[count].TeenAgers(test);
$('.multipleflightTeen').multiselect('refresh');
break;
}
}
for (var pj = 0; pj < thisTeenAger.length; pj++) {
if (currentflightTeenAger[pi] == thisTeenAger[pj]) {
msg = "Pax already assigned on other Flight with similar date bands.";
var test = $.grep(vmFlight.G2BQuoteFlights()[count].TeenAgers(), function (v) {
return v != thisTeenAger[pj];
});
vmFlight.G2BQuoteFlights()[count].TeenAgers(test);
$('.multipleflightTeen').multiselect('refresh');
break;
}
}
}
}
}
}
}
}
else {
var currentinbounddepartureHour = departureHour;
var currentinbounddepartureMin = departureMin;
var currentinbounddepartureDate = (sector.DepartureDate() + " " + currentinbounddepartureHour + ":" + currentinbounddepartureMin).split('/');
var thistinboundflightdeptdate = new Date(currentinbounddepartureDate[1] + '/' + currentinbounddepartureDate[0] + '/' + currentinbounddepartureDate[2]);
if (currentinboundflightdeptdate.length > 0) {
for (var c = 0; c < currentinboundflightdeptdate.length; c++) {
if (currentinboundflightdeptdate[c].getTime() == thistinboundflightdeptdate.getTime()) {
if (passengerType === 'Passenger') {
for (var pi = 0; pi < currentflightPassenger.length; pi++) {
for (var pj = 0; pj < thisPassenger.length; pj++) {
if (currentflightPassenger[pi] == thisPassenger[pj]) {
msg = "Pax already assigned on other Flight with similar date bands.";
var test = $.grep(vmFlight.G2BQuoteFlights()[count].Passengers(), function (v) {
return v != thisPassenger[pj];
});
vmFlight.G2BQuoteFlights()[count].Passengers(test);
$('.multipleflight').multiselect('refresh');
break;
}
}
for (var pj = 0; pj < thisTeenAger.length; pj++) {
if (currentflightPassenger[pi] == thisTeenAger[pj]) {
msg = "Pax already assigned as a adult on other Flight with similar date bands.";
var test = $.grep(vmFlight.G2BQuoteFlights()[count].Passengers(), function (v) {
return v != thisTeenAger[pj];
});
vmFlight.G2BQuoteFlights()[count].Passengers(test);
$('.multipleflight').multiselect('refresh');
break;
}
}
}
}
if (passengerType === 'Teen') {
for (var pi = 0; pi < currentflightTeenAger.length; pi++) {
for (var pj = 0; pj < thisPassenger.length; pj++) {
if (currentflightTeenAger[pi] == thisPassenger[pj]) {
msg = "Pax already assigned on other Flight with similar date bands.";
var test = $.grep(vmFlight.G2BQuoteFlights()[count].TeenAgers(), function (v) {
return v != thisPassenger[pj];
});
vmFlight.G2BQuoteFlights()[count].TeenAgers(test);
$('.multipleflightTeen').multiselect('refresh');
break;
}
}
for (var pj = 0; pj < thisTeenAger.length; pj++) {
if (currentflightTeenAger[pi] == thisTeenAger[pj]) {
msg = "Pax already assigned as a adult on other Flight with similar date bands.";
var test = $.grep(vmFlight.G2BQuoteFlights()[count].TeenAgers(), function (v) {
return v != thisTeenAger[pj];
});
vmFlight.G2BQuoteFlights()[count].TeenAgers(test);
$('.multipleflightTeen').multiselect('refresh');
break;
}
}
}
}
}
}
}
}
}
}
}
}
if (Global.IsNotNullOrEmptyString(msg)) {
Global.ShowMessage(msg, Global.MessageType.Error);
//return false;
}
}
/**/
var totalAdult = 0;
var totalChild = 0;
var totalInfant = 0;
var totalTeen = data.TeenAgers().length;
for (var i = 0; i < data.PassengerInfoList().length; i++) {
for (var j = 0; j < data.Passengers().length; j++) {
if (data.PassengerInfoList()[i].Id == data.Passengers()[j]) {
var passengerType = data.PassengerInfoList()[i].PassengerType;
if (passengerType === 1)
totalAdult = totalAdult + 1;
else if (passengerType === 2)
totalChild = totalChild + 1;
else if (passengerType === 3)
totalInfant = totalInfant + 1;
}
}
}
var adultnettpound = 0; var childnettpound = 0; var infantnettpound = 0; var teennettpound = 0; var totalnettpound = 0;
if (Number(data.CurrencyId()) == 2) {
adultnettpound = Number(data.AdultNett()) > 0 ? ((Number(data.AdultNett())) * (data.CERate())).toFixed(2) : 0;
childnettpound = Number(data.ChildNett()) > 0 ? ((Number(data.ChildNett())) * (data.CERate())).toFixed(2) : 0;
infantnettpound = Number(data.InfantNett()) > 0 ? ((Number(data.InfantNett())) * (data.CERate())).toFixed(2) : 0;
teennettpound = Number(data.TeenNett()) > 0 ? ((Number(data.TeenNett())) * (data.CERate())).toFixed(2) : 0;
totalnettpound = ((Number(data.AdultNett() * totalAdult) + Number(data.ChildNett() * totalChild) + Number(data.InfantNett() * totalInfant) + Number(data.TeenNett() * totalTeen)) * data.CERate()).toFixed(2);
} else {
adultnettpound = Number(data.AdultNett()) > 0 ? ((Number(data.AdultNett()))).toFixed(2) : 0;
childnettpound = Number(data.ChildNett()) > 0 ? ((Number(data.ChildNett()))).toFixed(2) : 0;
infantnettpound = Number(data.InfantNett()) > 0 ? ((Number(data.InfantNett()))).toFixed(2) : 0;
teennettpound = Number(data.TeenNett()) > 0 ? ((Number(data.TeenNett()))).toFixed(2) : 0;
totalnettpound = ((Number(data.AdultNett() * totalAdult) + Number(data.ChildNett() * totalChild) + Number(data.InfantNett() * totalInfant) + Number(data.TeenNett() * totalTeen))).toFixed(2);
}
var totalnett = (Number(data.AdultNett() * totalAdult) + Number(data.ChildNett() * totalChild) + Number(data.InfantNett() * totalInfant) + Number(data.TeenNett() * totalTeen)).toFixed(2);
return [totalnett, totalnettpound, adultnettpound, childnettpound, infantnettpound, teennettpound];
}
function calculatePriceAfterSave(data, flightObject) {
var finalPassengerList = Global.IsNotNullOrEmptyString(flightObject) && Global.IsNotNullOrEmptyString(flightObject.PassengerInfoList) ? flightObject.PassengerInfoList : data.PassengerInfoList();
var flights = vmFlight.G2BQuoteFlights();
if (flights.length > 0) {
for (var f = 0; f < flights.length; f++) {
var totalAdult = 0, totalChild = 0, totalInfant = 0;
var totalnett = 0;
var selectedPassenger = flights[f].Passengers();
for (var i = 0; i < finalPassengerList.length; i++) {
for (var j = 0; j < selectedPassenger.length; j++) {
if (finalPassengerList[i].Id == selectedPassenger[j]) {
var passengerType = finalPassengerList[i].PassengerType;
if (passengerType == 1)
totalAdult = totalAdult + 1;
else if (passengerType == 2)
totalChild = totalChild + 1;
else if (passengerType == 3)
totalInfant = totalInfant + 1;
}
}
}
var adultnettpound = 0; var childnettpound = 0; var infantnettpound = 0; var totalnettpound = 0;
if (Number(flights[f].CurrencyId()) == 2) {
adultnettpound = Number(flights[f].AdultNett()) > 0 ? ((Number(flights[f].AdultNett())) * (flights[f].CERate())).toFixed(2) : 0;
childnettpound = Number(flights[f].ChildNett()) > 0 ? ((Number(flights[f].ChildNett())) * (flights[f].CERate())).toFixed(2) : 0;
infantnettpound = Number(flights[f].InfantNett()) > 0 ? ((Number(flights[f].InfantNett())) * (flights[f].CERate())).toFixed(2) : 0;
totalnettpound = ((Number(flights[f].AdultNett() * totalAdult) + Number(flights[f].ChildNett() * totalChild) + Number(flights[f].InfantNett() * totalInfant)) * flights[f].CERate()).toFixed(2);
} else {
adultnettpound = Number(flights[f].AdultNett()) > 0 ? ((Number(flights[f].AdultNett()))).toFixed(2) : 0;
childnettpound = Number(flights[f].ChildNett()) > 0 ? ((Number(flights[f].ChildNett()))).toFixed(2) : 0;
infantnettpound = Number(flights[f].InfantNett()) > 0 ? ((Number(flights[f].InfantNett()))).toFixed(2) : 0;
totalnettpound = ((Number(flights[f].AdultNett() * totalAdult) + Number(flights[f].ChildNett() * totalChild) + Number(flights[f].InfantNett() * totalInfant))).toFixed(2);
}
totalnett = (Number(flights[f].AdultNett() * totalAdult) + Number(flights[f].ChildNett() * totalChild) + Number(flights[f].InfantNett() * totalInfant)).toFixed(2);
flights[f].TotalNett(totalnett);
flights[f].TotalNettPound(totalnettpound);
flights[f].AdultNett(totalAdult > 0 ? flights[f].AdultNett() : 0);
flights[f].ChildNett(totalChild > 0 ? flights[f].ChildNett() : 0);
flights[f].InfantNett(totalInfant > 0 ? flights[f].InfantNett() : 0);
flights[f].AdultNettPound(totalAdult > 0 ? adultnettpound : 0);
flights[f].ChildNettPound(totalChild > 0 ? childnettpound : 0);
flights[f].InfantNettPound(totalInfant > 0 ? infantnettpound : 0);
}
}
}
var AirlineList;
var AirPortList;
function G2BQuoteFlightModel(arrayQuoteFlights) {
var self = this;
var flightid = 0;
self.FlightTypeList = arrayQuoteFlights[0].FlightTypeList;
self.SupplierList = arrayQuoteFlights[0].SupplierList;
self.PassengerList = arrayQuoteFlights[0].PassengerList;
self.TeenAgerList = arrayQuoteFlights[0].TeenAgerList;
self.PassengerInfoList = arrayQuoteFlights[0].PassengerInfoList;
self.CurrencyList = arrayQuoteFlights[0].CurrencyList;
self.PaymentModeList = arrayQuoteFlights[0].PaymentModeList;
//self.DepartureAirportList = ko.observableArray(arrayQuoteFlights[0].DepartureAirportList);
//self.ArrivalAirportList = ko.observableArray(arrayQuoteFlights[0].ArrivalAirportList);
self.AirlineList = ko.observableArray(arrayQuoteFlights[0].AirlineList);
AirlineList = arrayQuoteFlights[0].AirlineList;
//AirPortList = ko.observableArray(arrayQuoteFlights[0].DepartureAirportList);
self.OperatingAirlineList = arrayQuoteFlights[0].OperatingAirlineList;
self.ImagesDto = arrayQuoteFlights[0].Images;
self.LuggageTypeList = ko.observableArray(arrayQuoteFlights[0].LuggageTypeList);
//self.popularGroup = ko.computed(function () {
// var list = ko.utils.arrayMap(self.DepartureAirportList(), function (item) {
// return item.Group.Name;
// });
// return ko.utils.arrayGetDistinctValues(list);
//});
self.preferredGroup = ko.computed(function () {
var list = ko.utils.arrayMap(self.AirlineList(), function (item) {
return item.Group.Name;
});
return ko.utils.arrayGetDistinctValues(list);
});
self.DurationList = ko.computed(function () {
var arr = [];
for (var i = 1; i <= 60; i++) {
if (i == 1)
arr.push({
Value: i, Text: i + ' Night'
});
else
arr.push({
Value: i, Text: i + ' Nights'
});
}
return arr;
});
self.Sectors = ko.computed(function () {
var arr = [];
for (var i = 1; i < 11; i++) {
arr.push({
Value: i, Text: i
});
}
return arr;
});
self.Hours = ko.computed(function () {
var arr = [];
for (var i = 0; i < 24; i++) {
var a = pad2(i);
arr.push({
Value: i, Text: a
});
}
return arr;
});
self.Minutes = ko.computed(function () {
var arr = [];
for (var i = 0; i < 60; i++) {
var a = pad2(i);
arr.push({
Value: i, Text: a
});
}
return arr;
});
self.PersonList = ko.computed(function () {
var arr = [];
for (var i = 0; i <= 60; i++) {
var a = pad2(i);
arr.push({
Value: i, Text: i
});
}
return arr;
});
self.QuantityList = ko.computed(function () {
var arr = [];
for (var i = 0; i <= 10; i++) {
arr.push({
Value: i, Text: i
});
}
return arr;
});
self.G2BQuoteFlights = ko.observableArray([]);
$.each(arrayQuoteFlights, function (i, item) {
var flight = new G2BQuoteFlight(item);
self.G2BQuoteFlights.push(flight);
});
self.AddAnotherQuoteFlight = function () {
var flight = new G2BQuoteFlight({
Id: flightid,
FlightTypeList: self.FlightTypeList,
SupplierId: 0,
G2BFlightSupplementDetails: {
SupplementQuantity: 0
},
G2BFlightSectors: {
IsInbound: false,
//DepartureDate:deptDate
},
G2BFlightTypeId: 3,
CurrencyList: self.CurrencyList,
SupplierList: self.SupplierList,
PassengerList: self.PassengerList,
PassengerInfoList: self.PassengerInfoList,
TeenAgerList: self.TeenAgerList,
AdultNett: 0,
ChildNett: 0,
InfantNett: 0,
TeenNett: 0,
AdultNettPound: 0,
ChildNettPound: 0,
InfantNettPound: 0,
TeenNettPound: 0,
TotalNett: 0,
TotalNettPound: 0,
IsSupplierCheck: false,
arrIsSupplierCheck: true,
arrIsOptAirline: [],
IsPreBookedSeatCheck: false
});
self.G2BQuoteFlights.push(flight);
var id = '#' + (self.G2BQuoteFlights().length - 1).toString() + 'FlightType';
$(id).focus();
$tabFlights.markTabInComplete();
};
self.CopyQuoteFlightDetail = function (index) {
Global.showG2BTabloader();
$.ajax({
url: '/go2bookflight/CopyQuoteFlight',
contentType: 'application/json',
data: {
quoteFlightId: index.Id()
},
type: "GET",
cache: false,
success: function (result) {
if (result.IsSuccess) {
var flight = new G2BQuoteFlight(result.Response);
self.G2BQuoteFlights.push(flight);
alertify.success(result.Message);
Global.hideG2BTabloader();
$tabFlights.markTabInComplete();
G2BFlight.isFlightDatesAmend = false;
bindSelect2('.select2bind');
bindSelect2WithoutSort();
}
else {
alertify.error(result.Data);
Global.hideG2BTabloader();
}
}
});
};
self.RemoveQuoteFlight = function (item, event) {
Global.showloader();
if (item.Id() === 0) {
//$tabFlights.find('i').addClass('fa-remove').removeClass('fa-check');
self.G2BQuoteFlights.remove(item);
MarkProductTabStatus($tabFlights, self.G2BQuoteFlights(), function () { self.AddAnotherQuoteFlight(); });
Global.hideloader();
}
else {
$.ajax({
url: '/go2bookflight/RemoveQuoteFlight',
contentType: 'application/json',
data: ko.toJSON({
quoteFlightId: item.Id
}),
type: "POST",
cache: false,
success: function (result) {
if (result.IsSuccess) {
alertify.success(result.Message);
self.G2BQuoteFlights.remove(item);
MarkProductTabStatus($tabFlights, self.G2BQuoteFlights(), function () { self.AddAnotherQuoteFlight(); });
//if (self.G2BQuoteFlights().length == 0) {
// self.AddAnotherQuoteFlight();
// $tabFlights.find('i').addClass('fa-remove').removeClass('fa-check');
// $tabFlights.markTabEmpty();
//} else {
// var productCount = 0;
// for (var i = 0; i < self.G2BQuoteFlights().length; i++) {
// if (self.G2BQuoteFlights()[i].Id() > 0) {
// productCount++;
// }
// }
// if (productCount == 0) {
// $tabFlights.find('i').addClass('fa-remove').removeClass('fa-check');
// }
//}
Global.hideloader();
}
else {
alertify.error(result.Data);
Global.hideloader();
}
}
});
}
};
//function MarkFlightTabStatus() {
// if (self.G2BQuoteFlights().length == 0) {
// self.AddAnotherQuoteFlight();
// $tabFlights.find('i').addClass('fa-remove').removeClass('fa-check');
// $tabFlights.markTabEmpty();
// } else {
// var productCount = 0;
// var unsaveProduct = 0;
// for (var i = 0; i < self.G2BQuoteFlights().length; i++) {
// if (self.G2BQuoteFlights()[i].Id() == 0) {
// unsaveProduct++;
// }
// else{
// productCount++;
// }
// }
// if (unsaveProduct > 0) {
// $tabFlights.markTabInComplete();
// }
// else if (productCount == 0) {
// $tabFlights.find('i').addClass('fa-remove').removeClass('fa-check');
// $tabFlights.find('i').addClass('fa-remove').removeClass('fa-check');
// }
// else {
// $tabFlights.find('i').addClass('fa-check');
// $tabFlights.markTabComplete();
// }
// }
//}
self.SaveUpdateFlightQuote = function (index, data) {
var IsSkyCot = false;
var IsCodeShare = false;
var isValid = true;
arrIsAirPortCheck = true;
data.IsAdvanceRegistration(false);
for (var i = 0; i < data.G2BFlightSectors().length; i++) {
if (data.G2BFlightSectors()[i].QuoteFlightErrors().length !== 0) {
data.G2BFlightSectors()[i].QuoteFlightErrors.showAllMessages();
isValid = false;
}
}
if (!isValid) {
Global.setFocusOnError();
//Global.movePageOnControlForError();
return;
}
var totalAdult = 0;
var totalChild = 0;
var totalInfant = 0;
for (var i = 0; i < data.PassengerInfoList().length; i++) {
for (var j = 0; j < data.Passengers().length; j++) {
if (data.PassengerInfoList()[i].Id == data.Passengers()[j]) {
var passengerType = data.PassengerInfoList()[i].PassengerType;
if (passengerType === 1)
totalAdult = totalAdult + 1;
else if (passengerType === 2)
totalChild = totalChild + 1;
else if (passengerType === 3)
totalInfant = totalInfant + 1;
}
}
}
//if (data.Infant > 0 && IsSkyCot === false) IsSkyCot = true;/*Do not Delete*/
if (data.Infant > 0) data.IsRequireSkyCot(true);
if (Global.IsNullOrEmptyString(data.SupplierId()) && Global.IsNullOrEmptyString(data.ManualSupplierName()) && data.ShowManualSupplierName()) {
Global.ShowMessage("Please select either supplier or enter a supplier name manually for flight", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(index, 'SupplierId');
return false;
} else if (Global.IsNullOrEmptyString(data.SupplierId()) && !data.ShowManualSupplierName()) {
Global.ShowMessage("Please select supplier name for flight", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(index, 'SupplierId');
return false;
}
if (EnquiryFromBrand != EnquiryBrands.WINGED_BOOTES && (Global.IsNullOrEmptyString(data.SupplierRef()) && Global.IsNullOrEmptyString(data.ManualSupplierName()) && (data.ChosenSupplierName().contains('travel2') || data.ChosenSupplierName().contains(G2BFlight.Supplier.OceanFlights.toLowerCase())))) {
Global.ShowMessage("Please Fill Supplier Reference.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(index, 'SupplierRef');
//Global.movePageOnControlForAlert(index, 'SupplierRef');
return false;
}
else if (Global.IsNullOrEmptyString(data.PaymentMode()) && data.IsLowCost()) {
Global.ShowMessage("Please Select Payment Mode.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(index, 'PaymentMode');
// Global.movePageOnControlForAlert(index, 'PaymentMode');
return false;
}
if (data.Passengers().length === 0 && data.TeenAgers().length === 0) {
Global.ShowMessage("Please select at least one passenger for a Flight.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(index, 'Passengers');
// Global.movePageOnControlForAlert(index, 'Passengers');
return false;
}
if (Global.IsNotNullOrEmptyString(data.AirlineLocator()) && data.AirlineLocator().length > 10) {
Global.ShowMessage("Airline Locator must be no longer than 10 characters.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(index, 'AirlineLocator');
return false;
}
if (data.IsTravel2() && Global.IsNullOrEmptyString(data.AirlineLocator()) && EnquiryFromBrand != EnquiryBrands.WINGED_BOOTES) {
Global.ShowMessage("Please enter Airline Locator.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(index, 'AirlineLocator');
return false;
}
/**/
if (Number(data.G2BFlightTypeId()) === 3) {
var result = CheckInboundOutboundDate(data.G2BFlightSectors())
if (Global.IsNotNullOrEmptyString(result)) {
Global.ShowMessage(result, Global.MessageType.Error);
return false;
}
}
/**/
var returndateforflight = GetMaximumFlightDate(data.G2BFlightSectors());
var result1 = AdvanceRegCheck(data.G2BFlightSectors());
data.IsAdvanceReg(result1);
//if (Global.IsNotNullOrEmptyString(vmpassenger)) {
// var passengerList = vmpassenger.PassengerList();
// for (var i = 0; i < passengerList.length; i++) {
// var calculatedAge = calculatePassengerAge(passengerList[i].DOB(), returndateforflight);
// if (passengerList[i].PassengerType() == 2 && calculatedAge >= 12) {
// arrConfirmValidations.push({
// message: 'Please note that ' + passengerList[i].FirstName() + ' child is ' + calculatedAge + ' years by date of return.
Do you wish to accept?
If you select "Accept" then pax information change accordingly.
If you select "Decline" then pax information remain same and you change pax DOB and save again.',
// success: function () { true },
// fail: function () { false },
// show: true,
// title: 'Warning',
// messageType: Global.MessageType.Warning,
// labels: { 'ok': 'Accept', 'cancel': 'Decline' },
// isAlert: false
// });
// IsChildConvert++;
// } else if (passengerList[i].PassengerType() == 3 && calculatedAge >= 2) {
// arrConfirmValidations.push({
// message: 'Please note that ' + passengerList[i].FirstName() + ' infant is ' + calculatedAge + ' years by date of return.
Do you wish to accept?
If you select "Accept" then pax information change accordingly.
If you select "Decline" then pax information remain same and you change pax DOB and save again.',
// success: function () { true },
// fail: function () { false },
// show: true,
// title: 'Warning',
// messageType: Global.MessageType.Warning,
// labels: { 'ok': 'Accept', 'cancel': 'Decline' },
// isAlert: false
// });
// IsInfantConvert++;
// }
// }
//}
//else if (data.PassengerList().length > 0) {
// var passengerList = data.PassengerInfoList();
// for (var i = 0; i < passengerList.length; i++) {
// var calculatedAge = calculatePassengerAge(passengerList[i].DOB, returndateforflight);
// if (passengerList[i].PassengerType == 2 && calculatedAge >= 11) {
// arrConfirmValidations.push({
// message: 'Please note that ' + passengerList[i].FirstName + ' child is ' + calculatedAge + ' years by date of return.
Do you wish to accept?
If you select "Accept" then pax information change accordingly.
If you select "Decline" then pax information remain same and you change pax DOB and save again.',
// success: function () { true },
// fail: function () { false },
// show: true,
// title: 'Warning',
// messageType: Global.MessageType.Warning,
// labels: { 'ok': 'Accept', 'cancel': 'Decline' },
// isAlert: false
// });
// IsChildConvert++;
// } else if (passengerList[i].PassengerType == 3 && calculatedAge >= 2) {
// arrConfirmValidations.push({
// message: 'Please note that ' + passengerList[i].FirstName + ' infant is ' + calculatedAge + ' years by date of return.
Do you wish to accept?
If you select "Accept" then pax information change accordingly.
If you select "Decline" then pax information remain same and you change pax DOB and save again.',
// success: function () { true },
// fail: function () { false },
// show: true,
// title: 'Warning',
// messageType: Global.MessageType.Warning,
// labels: { 'ok': 'Accept', 'cancel': 'Decline' },
// isAlert: false
// });
// IsInfantConvert++;
// }
// }
//}
if (vmFlight.PassengerInfoList.length > 0) {
var passengerList = vmFlight.PassengerInfoList;
for (var i = 0; i < passengerList.length; i++) {
var calculatedAge = calculatePassengerAge(passengerList[i].DOB, returndateforflight);
if (passengerList[i].PassengerType == 2 && calculatedAge >= 12) {
arrConfirmValidations.push({
message: 'Please note that ' + passengerList[i].FirstName + ' child is ' + calculatedAge + ' years by date of return.
Do you wish to accept?
If you select "Accept" then pax information change accordingly.
If you select "Decline" then pax information remain same and you change pax DOB and save again.',
success: function () { true },
fail: function () { false },
show: true,
title: 'Warning',
messageType: Global.MessageType.Warning,
labels: { 'ok': 'Accept', 'cancel': 'Decline' },
isAlert: false
});
}
else if (passengerList[i].PassengerType == 3 && (calculatedAge >= 2 && calculatedAge <= 11)) {
arrConfirmValidations.push({
message: 'Please note that ' + passengerList[i].FirstName + ' infant is ' + calculatedAge + ' years by date of return.
Do you wish to accept?
If you select "Accept" then pax information change accordingly.
If you select "Decline" then pax information remain same and you change pax DOB and save again.',
success: function () { true },
fail: function () { false },
show: true,
title: 'Warning',
messageType: Global.MessageType.Warning,
labels: { 'ok': 'Accept', 'cancel': 'Decline' },
isAlert: false
});
}
else if (passengerList[i].PassengerType == 3 && calculatedAge >= 2) {
arrConfirmValidations.push({
message: 'Please note that ' + passengerList[i].FirstName + ' infant is ' + calculatedAge + ' years by date of return.
Do you wish to accept?
If you select "Accept" then pax information change accordingly.
If you select "Decline" then pax information remain same and you change pax DOB and save again.',
success: function () { true },
fail: function () { false },
show: true,
title: 'Warning',
messageType: Global.MessageType.Warning,
labels: { 'ok': 'Accept', 'cancel': 'Decline' },
isAlert: false
});
}
}
}
for (var i = 0; i < data.G2BFlightSectors().length; i++) {
var flightsector = data.G2BFlightSectors();
var IsInbound = flightsector[i].IsInbound();
if (!IsInbound) {
FillArrivalDate = Global.IsNotNullOrEmptyString(flightsector[i].ArrivalDate()) ? flightsector[i].ArrivalDate() : FillArrivalDate;
FillArrivalHH = Global.IsNotNullOrEmptyString(flightsector[i].ArrivalHour()) ? flightsector[i].ArrivalHour() : FillArrivalHH;
FillArrivalMM = Global.IsNotNullOrEmptyString(flightsector[i].ArrivalMin()) ? flightsector[i].ArrivalMin() : FillArrivalMM;
} else {
FillDepartureDate = Global.IsNotNullOrEmptyString(flightsector[i].DepartureDate()) ? flightsector[i].DepartureDate() : FillDepartureDate;
FillDepartureHH = Global.IsNotNullOrEmptyString(flightsector[i].DepartureHour()) ? flightsector[i].DepartureHour() : FillDepartureHH;
FillDepartureMM = Global.IsNotNullOrEmptyString(flightsector[i].DepartureMin()) ? flightsector[i].DepartureMin() : FillDepartureMM;
}
var fixedDate = new Date("03/15/2016");
var departuredate = data.G2BFlightSectors()[i].DepartureDate().split('/');
var newdeparturedate = new Date(departuredate[1] + '/' + departuredate[0] + '/' + departuredate[2]);
var arrivaldate = data.G2BFlightSectors()[i].ArrivalDate().split('/');
var newarrivaldate = new Date(arrivaldate[1] + '/' + arrivaldate[0] + '/' + arrivaldate[2]);
if ((data.IsSeatCheck() === false || IsPreBookedSeatCheck === false) && (data.G2BFlightSectors()[i].ChosenOperatingAirlineName().contains("virgin atlantic") || data.G2BFlightSectors()[i].ChosenOperatingAirlineName().contains("delta airlines"))
&& (data.G2BFlightSectors()[i].ChosenAirlineClassName().contains("virgin atlantic premium economy") || data.G2BFlightSectors()[i].ChosenAirlineClassName().contains("virgin atlantic upper class") ||
data.G2BFlightSectors()[i].ChosenAirlineClassName().contains("delta airlines economy comfort") || data.G2BFlightSectors()[i].ChosenAirlineClassName().contains("delta airlines business elite"))) {
arrIsOptAirline.push(0);
}
if (IsCodeShare == false && !data.IsLowCost()) {
if (data.G2BFlightSectors()[i].AirlineId() != data.G2BFlightSectors()[i].OperatingAirlineId())
IsCodeShare = true;
}
var isValidationForWB = EnquiryFromBrand == EnquiryBrands.WINGED_BOOTES ? true : false;
if (Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].AirlineId()) &&
(Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].ManualMarketingAirline()) && isValidationForWB) && !data.IsLowCost()) {
Global.ShowMessage("Please Select Marketing Airline or Enter Manually.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'AirlineId');
//Global.movePageOnControlForAlert(i, 'AirlineId');
return false;
} else if (Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].OperatingAirlineId())
&& (Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].ManualOperatingAirline()) && isValidationForWB)
&& !data.IsLowCost()) {
Global.ShowMessage("Please Select Operating Airline or Enter Manually.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'OperatingAirlineId');
//Global.movePageOnControlForAlert(i, 'OperatingAirlineId');
return false;
}
else if (Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].AirClassId()) && Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].ManualCabinClass()) && !data.IsLowCost()) {
Global.ShowMessage("Please Select Cabin Class or enter class manually.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'AirClassId');
// Global.movePageOnControlForAlert(i, 'AirClassId');
return false;
}
else
if (data.G2BFlightSectors()[i].SelectedLuggageType() != '3') {
debugger;
if (!data.IsLowCost() && !data.ChosenSupplierName().contains("thomas cook") && totalAdult > 0 && Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].LuggageAllowance())) {
if (data.G2BFlightSectors()[i].SelectedLuggageType() == '4') {
if (Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].AdultKg())) {
Global.ShowMessage("Please Select Luggage Allowance PP or select Combined Luggage for adult, child or infant.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'LuggageAllowance');
//Global.movePageOnControlForAlert(i, 'LuggageAllowance');
return false;
}
}
else
if (Number(data.G2BFlightSectors()[i].AdultCount()) === 0 || Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].AdultKg())) {
Global.ShowMessage("Please Select Luggage Allowance PP or select Manual Luggage for adult, child or infant.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'LuggageAllowance');
//Global.movePageOnControlForAlert(i, 'LuggageAllowance');
return false;
}
}
else if (!data.IsLowCost() && !data.ChosenSupplierName().contains("thomas cook") && totalChild > 0 && Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].LuggageAllowance())) {
if (data.G2BFlightSectors()[i].SelectedLuggageType() == '4') {
if (Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].ChildKg())) {
Global.ShowMessage("Please Select Luggage Allowance PP or select Combined Luggage for adult, child or infant.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'LuggageAllowance');
//Global.movePageOnControlForAlert(i, 'LuggageAllowance');
return false;
}
}
else
if (Number(data.G2BFlightSectors()[i].ChildCount()) === 0 || Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].ChildKg())) {
Global.ShowMessage("Please Select Luggage Allowance PP or select Manual Luggage for adult, child or infant.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'LuggageAllowance');
//Global.movePageOnControlForAlert(i, 'LuggageAllowance');
return false;
}
}
else if (!data.IsLowCost() && !data.ChosenSupplierName().contains("thomas cook") && totalInfant > 0 && Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].LuggageAllowance())) {
if (data.G2BFlightSectors()[i].SelectedLuggageType() == '4') {
if (Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].InfantKg())) {
Global.ShowMessage("Please Select Luggage Allowance PP or select Combined Luggage for adult, child or infant.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'LuggageAllowance');
//Global.movePageOnControlForAlert(i, 'LuggageAllowance');
return false;
}
}
else
if (Number(data.G2BFlightSectors()[i].InfantCount()) === 0 || Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].InfantKg())) {
Global.ShowMessage("Please Select Luggage Allowance PP or select Manual Luggage for adult, child or infant.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'LuggageAllowance');
//Global.movePageOnControlForAlert(i, 'LuggageAllowance');
return false;
}
}
else if (!data.IsLowCost() && !data.ChosenSupplierName().contains("thomas cook") && totalAdult > 0 && Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].LuggageAllowance()) && data.IsBaggagePayLocally()) {
if (Number(data.G2BFlightSectors()[i].AdultCount()) === 0 || Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].AdultKg())) {
Global.ShowMessage("Please select Luggage Allowance PP or enter manually because you tick Baggage Payable Locally option.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'LuggageAllowance');
// Global.movePageOnControlForAlert(i, 'LuggageAllowance');
return false;
}
}
else if (!data.IsLowCost() && !data.ChosenSupplierName().contains("thomas cook") && totalChild > 0 && Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].LuggageAllowance()) && data.IsBaggagePayLocally()) {
if (Number(data.G2BFlightSectors()[i].ChildCount()) === 0 || Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].ChildKg())) {
Global.ShowMessage("Please select Luggage Allowance PP or enter manually because you tick Baggage Payable Locally option.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'LuggageAllowance');
// Global.movePageOnControlForAlert(i, 'LuggageAllowance');
return false;
}
}
else if (!data.IsLowCost() && !data.ChosenSupplierName().contains("thomas cook") && totalInfant > 0 && Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].LuggageAllowance()) && data.IsBaggagePayLocally()) {
if (Number(data.G2BFlightSectors()[i].InfantCount()) === 0 || Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].InfantKg())) {
Global.ShowMessage("Please select Luggage Allowance PP or enter manually because you tick Baggage Payable Locally option.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'LuggageAllowance');
//Global.movePageOnControlForAlert(i, 'LuggageAllowance');
return false;
}
}
}
else if (Global.IsNullOrEmptyString(data.G2BFlightSectors()[i].FlightNumber()) && !data.IsLowCost()) {
Global.ShowMessage("Please fill Flight Number.", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'FlightNumber');
// Global.movePageOnControlForAlert(i, 'FlightNumber');
return false;
}
else if (newdeparturedate > newarrivaldate) {
Global.ShowMessage("Departure date will not be greater than arrival date for sector(s).", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'DepartureDate');
// Global.movePageOnControlForAlert(i, 'DepartureDate');
return false;
}
/*time check validation self.DepartureHour*/
if (newdeparturedate.getTime() == newarrivaldate.getTime()) {
if (Number(data.G2BFlightSectors()[i].ArrivalHour()) < Number(data.G2BFlightSectors()[i].DepartureHour())) {
Global.ShowMessage("Departure date will not be greater than arrival date for sector(s).", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'DepartureDate');
//Global.movePageOnControlForAlert(i, 'DepartureDate');
return false;
}
else {
if (Number(data.G2BFlightSectors()[i].ArrivalHour()) == Number(data.G2BFlightSectors()[i].DepartureHour())) {
if (Number(data.G2BFlightSectors()[i].DepartureMin()) >= Number(data.G2BFlightSectors()[i].ArrivalMin())) {
Global.ShowMessage("Departure date will not be greater than arrival date for sector(s).", Global.MessageType.Error);
Global.setFocusOnErrorForAlert(i, 'DepartureDate');
// Global.movePageOnControlForAlert(i, 'DepartureDate');
return false;
}
}
}
}
if (data.G2BFlightSectors()[i].DepartureAirportId() > 0 && (data.G2BFlightSectors()[i].ChosenDepartureAirport().contains("vancouver")
|| data.G2BFlightSectors()[i].ChosenDepartureAirport().contains("montreal")
|| data.G2BFlightSectors()[i].ChosenDepartureAirport().contains("toronto")
|| data.G2BFlightSectors()[i].ChosenDepartureAirport().contains("calgary")
|| data.G2BFlightSectors()[i].ChosenDepartureAirport().contains("ottawa")
|| data.G2BFlightSectors()[i].ChosenDepartureAirport().contains("winnipeg")
|| data.G2BFlightSectors()[i].ChosenDepartureAirport().contains("edmonton")) && newdeparturedate >= fixedDate) {
arrIsAirPortCheck = false;
}
if (data.G2BFlightSectors()[i].ArrivalAirportId() > 0 && (data.G2BFlightSectors()[i].ChosenArrivalAirport().contains("vancouver")
|| data.G2BFlightSectors()[i].ChosenArrivalAirport().contains("montreal")
|| data.G2BFlightSectors()[i].ChosenArrivalAirport().contains("toronto")
|| data.G2BFlightSectors()[i].ChosenArrivalAirport().contains("calgary")
|| data.G2BFlightSectors()[i].ChosenArrivalAirport().contains("ottawa")
|| data.G2BFlightSectors()[i].ChosenArrivalAirport().contains("winnipeg")
|| data.G2BFlightSectors()[i].ChosenArrivalAirport().contains("edmonton")) && newdeparturedate >= fixedDate) {
arrIsAirPortCheck = false;
}
if (!data.ChosenSupplierName().contains("travel2") || !data.ChosenSupplierName().contains(G2BFlight.Supplier.OceanFlights.toLowerCase())) {
arrIsSupplierCheck = false;
data.IsSupplierCheck(false);
} else {
arrIsSupplierCheck = true; data.IsSupplierCheck(true);
}
}
var isvalidseatcheck = $.grep(arrIsOptAirline, function (i) {
return i == 0;
});
//if (Number(data.AdultNett()) == 0 && Number(data.ChildNett()) == 0 && Number(data.InfantNett()) == 0 && Number(data.TeenNett()) == 0 ) {
if (Number(data.TotalNett()) == 0) {
arrConfirmValidations.push({
message: "Product has zero value. Do you want to proceed?",
success: function () { true },
fail: function () { false },
show: true,
title: 'Danger',
messageType: Global.MessageType.Error,
labels: { 'ok': 'Accept', 'cancel': 'Decline' }, isAlert: false
});
}
else {
var totalAdult = 0;
var totalChild = 0;
var totalInfant = 0;
var totalTeen = data.TeenAgers().length;
for (var i = 0; i < data.PassengerInfoList().length; i++) {
for (var j = 0; j < data.Passengers().length; j++) {
if (data.PassengerInfoList()[i].Id == data.Passengers()[j]) {
var passengerType = data.PassengerInfoList()[i].PassengerType;
if (passengerType === 1)
totalAdult = totalAdult + 1;
else if (passengerType === 2)
totalChild = totalChild + 1;
else if (passengerType === 3)
totalInfant = totalInfant + 1;
}
}
}
var pricemessage = '';
var pricemessagearray = [];
var totalPass = 0;
if (totalAdult > 0 && Number(data.AdultNett()) == 0) {
// pricemessage = "Adult";
totalPass = 1;
pricemessagearray.push("Adult");
}
if (totalTeen > 0 && Number(data.TeenNett()) == 0) {
totalPass++;
// pricemessage += pricemessage == '' ? "Teen" : ",teen";
pricemessagearray.push("Teen");
}
if (totalChild > 0 && Number(data.ChildNett()) == 0) {
totalPass++;
// pricemessage += pricemessage == '' ? "Child" : ",child";
pricemessagearray.push("Child");
}
if (totalInfant > 0 && Number(data.InfantNett()) == 0) {
totalPass++;
// pricemessage += pricemessage == '' ? "Infant" : ",infant";
pricemessagearray.push("Infant");
}
for (var i = 1; i <= pricemessagearray.length; i++) {
pricemessage += i == 1 ? pricemessagearray[i - 1] : ((i < totalPass && totalPass > 2) ? (", " + pricemessagearray[i - 1]) : ((totalPass == 2 ? " & " : " and ") + pricemessagearray[i - 1]));
}
if (pricemessage != '') {
arrConfirmValidations.push({
message: pricemessage + " has zero price. Do you want to proceed?",
success: function () { true },
fail: function () { false },
show: true,
title: 'Danger',
messageType: Global.MessageType.Error,
labels: { 'ok': 'Accept', 'cancel': 'Decline' }, isAlert: false
});
}
}
if (arrIsSupplierCheck == false && !data.IsSupplierCheck() && !data.ChosenSupplierName().contains('advanced reg flights') && !data.ChosenSupplierName().contains('ocean flights') || Global.IsNotNullOrEmptyString(data.ManualSupplierName())) {
arrConfirmValidations.push({
message: "Are you sure " + (Global.IsNotNullOrEmptyString(data.ManualSupplierName()) ? data.ManualSupplierName() : data.ChosenSupplierName()) + " is the correct supplier?",
success: function () { data.IsSupplierCheck(true) },
fail: function () { data.IsSupplierCheck(false) },
show: true,
title: 'Warning',
messageType: Global.MessageType.Warning,
labels: { 'ok': 'Accept', 'cancel': 'Decline' },
isAlert: false,
saveOnFail: false
});
}
if (isvalidseatcheck != null && isvalidseatcheck != undefined && isvalidseatcheck.length > 0) {
arrConfirmValidations.push({
message: "HAVE YOU PRE-BOOKED SEATS?",
success: function () { data.IsSeatCheck(true); IsPreBookedSeatCheck = true; },
fail: function () { data.IsSeatCheck(false); },
show: true,
title: 'Warning',
messageType: Global.MessageType.Warning,
labels: { 'ok': 'Acknowledged', 'cancel': 'Decline' },
isAlert: true,
saveOnFail: false
});
arrIsOptAirline = [];
}
else {
$.each(arrIsOptAirline, function (i, e) {
data.IsSeatCheck(i == 0 ? true : false);
IsPreBookedSeatCheck = (i == 0 ? true : false);
});
arrIsOptAirline = [];
}
if (arrIsAirPortCheck == false) {
arrConfirmValidations.push({
message: "Under Canada’s Electronic Travel Authorization (ETA) program, citizens from countries other than the United States (U.S.) who do not need a visa to enter Canada will need to obtain an online authorization before flying to Canada, unless otherwise exempted. This includes both passengers travelling to and transiting in Canada.
ETA is valid for 5 years or until passport expiry and the fee is CAD $7 (approximately £3.50 on today’s exchange rate).",
success: function () { },
fail: function () { },
show: true,
title: 'Warning',
messageType: Global.MessageType.Warning,
labels: { 'ok': 'Acknowledged', 'cancel': 'Decline' },
isAlert: true,
saveOnFail: false
});
}
/*Remove as per cathy comment do not delete*/
//if (data.IsGroupBooking()) {
// arrConfirmValidations.push({
// message: "Group booking - customer cannot pre select their seats or manage booking online.",
// success: function () { true; },
// fail: function () { false; },
// show: true,
// title: 'Warning',
// messageType: Global.MessageType.Warning,
// labels: { 'ok': 'Accept', 'cancel': 'Decline' }, isAlert: false
// });
//}
if (!data.IsLowCost() && data.ChosenSupplierName().contains('advanced reg flights')) {
data.IsAdvanceRegistration(true);
}
if (!data.IsLowCost() && data.IsAdvanceReg() && !data.ChosenSupplierName().contains('advanced reg flights')) {/*&& !data.IsAdvanceRegistration()*/
arrConfirmValidations.push({
message: "Is this an Advanced Reg Flight.
Accept will amend the supplier to Advanced Reg Flights.
Decline to continue with the current supplier.",
success: function () {
for (var i = 0; i < data.SupplierList().length; i++) {
if (data.SupplierList()[i].Text.trim() == 'Advanced Reg Flights') {
data.ChosenSupplierName(data.SupplierList()[i].Text.toLowerCase());
data.SupplierId(data.SupplierList()[i].Value);
break;
}
}
data.IsAdvanceRegistration(true);
},
fail: function () { data.IsAdvanceRegistration(false); },
show: true,
saveOnFail: true,
title: 'Warning',
messageType: Global.MessageType.Warning,
labels: { 'ok': 'Accept', 'cancel': 'Decline' },
isAlert: false
});
}
/*Remove as per cathy comment do not delete*/
//if (data.IsGroupBooking()) {
// Global.Alert("You've chosen this as group booking. Kindly read and check advised statement before saving.", function () { return false });
// return false;
//} if (data.IsAdvanceRegistration()) {
// Global.Alert("You've select this as advance registration. Kindly read and check advised statement before saving", function () { return false });
// return false;
//}
if (data.IsOverrideDeposit()) {
arrConfirmValidations.push({
message: "This is non-refundable flight.",
success: function () { data.IsOverrideDeposit(true) },
fail: function () { data.IsOverrideDeposit(false) },
show: true,
title: 'Information',
messageType: Global.MessageType.Info,
labels: { 'ok': 'Acknowledged', 'cancel': 'Decline' },
isAlert: true,
saveOnFail: false
});
}
if (data.ChosenSupplierName().contains("thomas cook airlines")) {
arrConfirmValidations.push({
message: "Full fare is required at time of booking and is non-refundable.",
success: function () { },
fail: function () { },
show: true,
title: 'Information',
messageType: Global.MessageType.Info,
labels: { 'ok': 'Acknowledged', 'cancel': 'Decline' },
isAlert: true,
saveOnFail: false
});
}
if (Global.IsNotNullOrEmptyString(data.PaymentMode()) && Number(data.PaymentMode()) === 2 && data.IsLowCost()) {
arrConfirmValidations.push({
message: "Payment has been made directly to the flight supplier and as such the flight cost will not display on your booking total on your main confirmation invoice.",
success: function () { },
fail: function () { },
show: true,
title: 'Information',
messageType: Global.MessageType.Info,
labels: { 'ok': 'Acknowledged', 'cancel': 'Decline' },
isAlert: true,
saveOnFail: false
});
}
if (IsSkyCot === true) {
arrConfirmValidations.push({
message: "You have an infant travelling on this flight. Please see the airlines website for details regarding the reservation of Sky Cots. These can be limited so please organise this at your earliest convenience to avoid disappointment. Please note that not all airlines offer this service and a small number of airlines do charge for this service.",
success: function () { },
fail: function () { },
show: true,
title: 'Warning',
messageType: Global.MessageType.Warning,
labels: { 'ok': 'Accept', 'cancel': 'Decline' },
isAlert: false,
saveOnFail: false
});
}
/*Remove as per cathy comment FLT047 04/05/2017 do not delete*/
//if (IsCodeShare === true && !data.IsLowCost()) {
// arrConfirmValidations.push({
// message: "At least one sector of your flight is booked on a codeshare agreement where two or more airlines share the same flight. Please be aware the operating carrier is the actual airline you will be flying on for that part of your journey.",
// success: function () { },
// fail: function () { },
// show: true,
// title: 'Warning',
// messageType: Global.MessageType.Warning,
// labels: { 'ok': 'Accept', 'cancel': 'Decline' }, isAlert: false
// });
//}
var isBuggageValidation = true;
//for (var k = 0; k < data.G2BFlightSectors().length; k++) {
// console.log(data.G2BFlightSectors()[k].IsManualLuggageAllow());
// if (isBuggageValidation) {
// if (!Global.IsNullOrEmptyString(data.G2BFlightSectors()[k].LuggageAllowance()) && data.G2BFlightSectors()[k].IsManualLuggageAllow() === true
// && data.G2BFlightSectors()[k].AdultCount() > 0 && data.G2BFlightSectors()[k].AdultKg() > 0) {
// arrConfirmValidations.push({
// message: "You already have Luggage Allowance, So Manual Baggage does not consider. Do you want to proceed?",
// success: function () { },
// fail: function () { },
// show: true,
// title: 'Warning',
// messageType: Global.MessageType.Warning,
// labels: { 'ok': 'Accept', 'cancel': 'Decline' },
// isAlert: false,
// saveOnFail: false
// });
// isBuggageValidation = false;
// }
// }
//}
if ((vmVehicle.IsModelSaved() == true || vmTransfer.IsModelSaved() == true) && (vmFlight.IsModelSaved(data.Id()) == true
&& vmFlight.CheckFlightDateAmended(data.Id()) == true && G2BFlight.isFlightDatesAmend == true)) {
arrConfirmValidations.push({
message: "Please check and amend Car Hire/Transfer dates/times accordingly.",
success: function () {
},
fail: function () { },
show: true,
saveOnFail: true,
title: 'Warning',
messageType: Global.MessageType.Warning,
labels: { 'ok': 'Acknowledge' },
isAlert: true
});
}
if (Number(data.AdultNett()) == 0 && Number(data.ChildNett()) == 0 && Number(data.InfantNett()) == 0) {
arrConfirmValidations.push({
message: "Product has zero value.Do you want to proceed?",
success: function () { true },
fail: function () { false },
show: true,
title: 'Danger',
messageType: Global.MessageType.Error,
labels: { 'ok': 'Accept', 'cancel': 'Decline' }, isAlert: false
});
}
processConfirmsFlight(index, data, function (data) {
$('#hdnPassengerLoad').val('false');
SaveUpdateFlight(index, data);
});
};
self.renderedFlightHandler = function (elements, data) {
$('.multipleflight').multiselect({
includeSelectAllOption: true,
numberDisplayed: 0
});
$('.multipleflightTeen').multiselect({
includeSelectAllOption: true,
numberDisplayed: 0
});
$('.decimal').keypress(function (event) {
if (this.value.charAt(0) === '0' || (this.value.length == 0 && event.which == 48)) {
this.value = this.value.slice(1);
return false;
}
if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57) && event.which != 8 && event.which != 0) {
event.preventDefault();
}
});
$('.decimal').blur(function (event) {
if (this.value == '' || this.value == '.') {
this.value = '0';
}
});
var class_count = $('.MainG2BQuoteFlightDivcls').length;
//Initiallize the uploader after item created in KO model
var max_vehicle_Image_upload = 3;
var ispublic = true;
initUploaderImage("divflight", "_MainG2BQuoteFlightDiv", class_count, max_vehicle_Image_upload, ispublic, true);
};
self.IsModelSaved = function (Id) {
var savedRecords = $.grep(vmFlight.G2BQuoteFlights(), function (v, i) { return (v.Id() > 0 && v.SupplierId() > 0 && (Global.IsNullOrEmptyString(Id) || v.Id() == Id)); })
return savedRecords.length > 0 ? true : false;
}
self.SetFlightDateAmended = function (Id) {
var thisFlightIndex = $.map(vmFlight.G2BQuoteFlights(), function (v, i) { return (v.Id() == Id ? i : null); });
if (thisFlightIndex) {
vmFlight.G2BQuoteFlights()[thisFlightIndex].isFlightDatesAmend = true;
return vmFlight.G2BQuoteFlights()[thisFlightIndex];
}
else
return null;
}
self.CheckFlightDateAmended = function (Id) {
var amendFlight = $.grep(vmFlight.G2BQuoteFlights(), function (v, i) { return (v.Id() == Id && v.isFlightDatesAmend == true); });
return amendFlight.length > 0 ? true : false;
}
}
function SaveUpdateFlight(index, data) {
Global.showloader();
/*save passenger fun. remain when child convert to adult or infant convert to child */
var UploadinId = $('#' + index + '_FlightImageDiv').find(".uploader_UID").attr("data-uploadinid");
var image_new_names = $('#' + UploadinId + '_hdnimagename').val();
var oldquoteimage = '';
var oldimageId = '';
if (Number(data.Id()) == 0) {
$('img[name="[' + index + '].G2BFlightImageName"]').each(
function () {
var valNew = $(this).attr('src').split('=');
var i = valNew[1].indexOf("&");
oldquoteimage += valNew[1].slice(0, i) + '#';
var j = valNew[3].indexOf("&");
oldimageId = valNew[3].slice(0, j);
});
}
oldquoteimage = oldquoteimage.slice(0, -1);
image_new_names = Global.IsNotNullOrEmptyString(image_new_names) ? oldquoteimage + '#' + image_new_names : oldquoteimage;
if ($.trim(data.AdultNett()).length == 0 || data.AdultNett() == '.' || data.AdultNett() == '0') {
data.AdultNett(0);
}
if ($.trim(data.ChildNett()).length == 0 || data.ChildNett() == '.' || data.ChildNett() == '0') {
data.ChildNett(0);
}
if ($.trim(data.InfantNett()).length == 0 || data.InfantNett() == '.' || data.InfantNett() == '0') {
data.InfantNett(0);
}
if ($.trim(data.TeenNett()).length == 0 || data.TeenNett() == '.' || data.TeenNett() == '0') {
data.TeenNett(0);
}
$.ajax({
url: '/go2bookflight/SaveQuoteFlight',
contentType: 'application/json',
data: ko.toJSON({ model: data, quoteId: $('#Go2BookQuoteId').val(), newimages: image_new_names, guid: UploadinId, oldimageId: oldimageId }),
type: "POST",
cache: false,
success: function (result) {
if (result.IsSuccess) {
$('#hdnIsPriceSave').val("0");
$('#hdnIsExtraSave').val("0");
$("#" + index + "_FlightId").val(result.Response.Id);
$("#" + index + "_FlightId").trigger("change");
vmFlight.G2BQuoteFlights()[index].Images(result.Response.Images);
var filelist = $('#' + index + '_FlightImageDiv').find(".filelist");
$('#' + filelist.attr("id") + ' #btntempremove').each(function () { $(this).trigger("click"); });
$tabFlights.find('i').removeClass('fa-remove');
$tabFlights.find('i').addClass('fa-check');
$('#Adult').val(result.Response.AdultCount);
$('#Children').val(result.Response.ChildCount);
$('#Infants').val(result.Response.InfantCount);
$('#lblAdult').text(result.Response.AdultCount);
$('#lblChild').text(result.Response.ChildCount);
$('#lblInfant').text(result.Response.InfantCount);
vmFlight.PassengerInfoList = result.Response.PassengerInfoList;
var isChange = result.Response.IsPassengerInfoChange;
calculatePriceAfterSave(data, vmFlight);
if (isChange) {
BindPassenger(true);
}
alertify.success(result.Message);
UpdateDateAndTime();
Global.hideloader();
try {
if ($('#SourceQuoteId').val() == 0 && vmTransfer.G2BQuoteTransfers()[0].Id() == 0) {
vmTransfer.G2BQuoteTransfers()[0].DropOffLocationPoint(result.Response.PickUpTransferId);
vmTransfer.G2BQuoteTransfers()[0].PickUpLocationPoint(result.Response.PickUpTransferId);
vmTransfer.G2BQuoteTransfers()[0].SelectedDropOffTransferValue(result.Response.SelectedTransfer);
vmTransfer.G2BQuoteTransfers()[0].SelectedPickupTransferValue(result.Response.SelectedTransfer);
}
} finally {
}
// checking all copied flight saved
var isNotSaved = $.grep(vmFlight.G2BQuoteFlights(), function (v, i) { return v.Id() == 0; });
if (vmFlight.G2BQuoteFlights().length > 1 && isNotSaved.length > 0)
$tabFlights.markTabInComplete();
else
$tabFlights.markTabComplete();
}
else {
alertify.error(result.Data);
Global.hideloader();
}
}
});
}
function AdvanceRegCheck(flightsector) {
var dates_Dept = [];
var isAdvanceReg = false;
for (var index = 0; index < flightsector.length; index++) {
var departureDate = flightsector[index].DepartureDate().split('/');
var newDeptDate = departureDate[1] + '/' + departureDate[0] + '/' + departureDate[2];
dates_Dept.push(new Date(newDeptDate));
}
var minDate = new Date(Math.min.apply(null, dates_Dept));
var todayDate = new Date();
var diff = minDate - todayDate;
var days = Math.round(diff / 1000 / 60 / 60 / 24);
if (days >= 330)
isAdvanceReg = true;
else
isAdvanceReg = false;
return isAdvanceReg;
}
function CheckInboundOutboundDate(flightsector) {
var msg = "";
var IsInbound = false;
var outBound_dep_dates = [];
var inBound_dep_dates = [];
var outBound_arrv_dates = [];
var inBound_arrv_dates = [];
for (var index = 0; index < flightsector.length; index++) {
IsInbound = flightsector[index].IsInbound();
if (!IsInbound) {
var outBoundDepartureHour = Global.IsNotNull(flightsector[index].DepartureHour()) ? flightsector[index].DepartureHour() : "00";
var outBoundDepartureMin = Global.IsNotNull(flightsector[index].DepartureMin()) ? flightsector[index].DepartureMin() : "00";
var outBoundArrivalHour = Global.IsNotNull(flightsector[index].ArrivalHour()) ? flightsector[index].ArrivalHour() : "00";
var outBoundArrivalMin = Global.IsNotNull(flightsector[index].ArrivalMin()) ? flightsector[index].ArrivalMin() : "00";
var outboundDeparturedate = (flightsector[index].DepartureDate() + " " + outBoundDepartureHour + ":" + outBoundDepartureMin).split('/');
var outBoundArrivaldate = (flightsector[index].ArrivalDate() + " " + outBoundArrivalHour + ":" + outBoundArrivalMin).split('/');
outBound_dep_dates.push(new Date(outboundDeparturedate[1] + '/' + outboundDeparturedate[0] + '/' + outboundDeparturedate[2]));
outBound_arrv_dates.push(new Date(outBoundArrivaldate[1] + '/' + outBoundArrivaldate[0] + '/' + outBoundArrivaldate[2]));
}
if (IsInbound) {
var inboundDepartureHour = Global.IsNotNull(flightsector[index].DepartureHour()) ? flightsector[index].DepartureHour() : "00";
var inboundDepartureMin = Global.IsNotNull(flightsector[index].DepartureMin()) ? flightsector[index].DepartureMin() : "00";
var inboundArrivalHour = Global.IsNotNull(flightsector[index].ArrivalHour()) ? flightsector[index].ArrivalHour() : "00";
var inboundArrivalMin = Global.IsNotNull(flightsector[index].ArrivalMin()) ? flightsector[index].ArrivalMin() : "00";
var inboundDeparturedate = (flightsector[index].DepartureDate() + " " + inboundDepartureHour + ":" + inboundDepartureMin).split('/');
var inboundArrivaldate = (flightsector[index].ArrivalDate() + " " + inboundArrivalHour + ":" + inboundArrivalMin).split('/');
inBound_dep_dates.push(new Date(inboundDeparturedate[1] + '/' + inboundDeparturedate[0] + '/' + inboundDeparturedate[2]));
inBound_arrv_dates.push(new Date(inboundArrivaldate[1] + '/' + inboundArrivaldate[0] + '/' + inboundArrivaldate[2]));
}
}
if (Number(outBound_dep_dates.length) == Number(inBound_dep_dates.length)) {
for (var i = 0; i < outBound_dep_dates.length; i++) {
if (inBound_dep_dates[i].getTime() < outBound_dep_dates[i].getTime() || inBound_arrv_dates[i].getTime() < outBound_arrv_dates[i].getTime()) {
msg = 'Inbound date cannot be before the outbound date.';
break;
}
}
}
else if (Number(outBound_dep_dates.length) > Number(inBound_dep_dates.length)) {
for (var i = 0; i < outBound_dep_dates.length; i++) {
for (var j = 0; j < inBound_dep_dates.length; j++) {
if (inBound_dep_dates[j].getTime() < outBound_dep_dates[i].getTime() || inBound_arrv_dates[j].getTime() < outBound_arrv_dates[i].getTime()) {
msg = 'Inbound date cannot be before the outbound date.';
break;
}
}
}
}
else if (Number(outBound_dep_dates.length) < Number(inBound_dep_dates.length)) {
for (var i = 0; i < inBound_dep_dates.length; i++) {
for (var j = 0; j < outBound_dep_dates.length; j++) {
if (inBound_dep_dates[i].getTime() < outBound_dep_dates[j].getTime() || inBound_arrv_dates[i].getTime() < outBound_arrv_dates[j].getTime()) {
msg = 'Inbound date cannot be before the outbound date.';
break;
}
}
}
}
return msg;
}
function UpdateDateAndTime() {
/*Accommodation*/
if (Global.IsNotNullOrEmptyString(vmProperty) && $('#tabAccomodation').find('i').hasClass('fa-remove')) {
if (Number(vmProperty.G2BQuoteProperties()[0].Id()) == 0) {
vmProperty.G2BQuoteProperties()[0].CheckInDate(FillArrivalDate);
}
}
/*End Accommodation*/
/*Car Hire*/
if (Global.IsNotNullOrEmptyString(vmVehicle) && $('#tabVehicle').find('i').hasClass('fa-remove')) {
if (Number(vmVehicle.G2BQuoteVehicles()[0].Id()) == 0 && Number($('#FromSPPQuoteId').val()) == 0) {
var date = getDatebyDuration(FillArrivalDate);
var arrhours = FillArrivalHH;
var arrMin = FillArrivalMM;
var depthours = FillDepartureHH;
var depMin = FillDepartureMM;
if (Number(arrhours) !== 23) {
vmVehicle.G2BQuoteVehicles()[0].PickUpDate(FillArrivalDate);
vmVehicle.G2BQuoteVehicles()[0].DropOffDate(date);
vmVehicle.G2BQuoteVehicles()[0].PickUpHour((Number(arrhours) + 1));
vmVehicle.G2BQuoteVehicles()[0].PickUpMin(arrMin);
} else {
var adate = GetDateByAddDays(FillArrivalDate, 1);
vmVehicle.G2BQuoteVehicles()[0].PickUpDate(adate);
vmVehicle.G2BQuoteVehicles()[0].PickUpHour("0");
vmVehicle.G2BQuoteVehicles()[0].PickUpMin(arrMin);
}
if (Number(depthours) >= 3) {
vmVehicle.G2BQuoteVehicles()[0].DropOffDate(date);
vmVehicle.G2BQuoteVehicles()[0].DropOffHour((Number(depthours) - 3));
vmVehicle.G2BQuoteVehicles()[0].DropOffMin(depMin);
} else {
var carHour = (Number(depthours) - 3);
var selectedHour = (carHour === -3 ? "21" : carHour === -2 ? "22" : carHour === -1 ? "20" : carHour);
vmVehicle.G2BQuoteVehicles()[0].DropOffHour(Number(selectedHour));
vmVehicle.G2BQuoteVehicles()[0].DropOffMin(Number(depMin));
var date1 = GetDateByAddDays(date, -1);
vmVehicle.G2BQuoteVehicles()[0].DropOffDate(date1);
}
}
}
/*End Car Hire*/
/*Transfer*/
if (Global.IsNotNullOrEmptyString(vmTransfer) && $('#tabTransfers').find('i').hasClass('fa-remove')) {
if (Number(vmTransfer.G2BQuoteTransfers()[0].Id()) === 0) {
var arrhours = FillArrivalHH;
var arrMin = FillArrivalMM;
var depthours = FillDepartureHH;
var depMin = FillDepartureMM;
if (Number(arrhours) !== 23) {
vmTransfer.G2BQuoteTransfers()[0].PickUpDate(FillArrivalDate);
}
else {
var date = GetDateByAddDays(FillArrivalDate, 1);
vmTransfer.G2BQuoteTransfers()[0].PickUpDate(date);
}
if (Number(FillDepartureHH) >= 3) {
vmTransfer.G2BQuoteTransfers()[0].DropOffDate(FillDepartureDate);
}
else {
var date = GetDateByAddDays(FillDepartureDate, -1);
vmTransfer.G2BQuoteTransfers()[0].DropOffDate(date);
}
}
}
/*End Transfer*/
/*Ticket*/
if (Number(vmTicket.G2BQuoteTickets()[0].Id()) === 0) {
var date = FillArrivalDate
vmTicket.G2BQuoteTickets()[0].ValidFromDate(Global.IsNotNullOrEmptyString(date) !== '' ? date : $('#enquiryInfoViewModel_DepartureDate').val());
vmTicket.G2BQuoteTickets()[0].SpecificDate1(Global.IsNotNullOrEmptyString(date) !== '' ? date : $('#enquiryInfoViewModel_DepartureDate').val());
vmTicket.G2BQuoteTickets()[0].SpecificDate2(Global.IsNotNullOrEmptyString(date) !== '' ? date : $('#enquiryInfoViewModel_DepartureDate').val());
vmTicket.G2BQuoteTickets()[0].SpecificDate3(Global.IsNotNullOrEmptyString(date) !== '' ? date : $('#enquiryInfoViewModel_DepartureDate').val());
}
/*End Ticket*/
}
function processConfirmsFlight(index, data, successCallback) {
if (Global.IsNotNullResult(arrConfirmValidations)) {
var item = arrConfirmValidations[0];
if (item.show) {
Global.ConfirmWithDeferredWithLabelShowAsAlert(item.title, item.message, item.labels, item.messageType, item.isAlert).then(function () {
item.success(data);
if (Global.IsNotNullResult(arrConfirmValidations)) {
arrConfirmValidations.splice(0, 1);
}
if (!Global.IsNotNullResult(arrConfirmValidations)) {
arrConfirmValidations = [];
successCallback(data);
} else {
window.setTimeout(function () {
processConfirmsFlight(index, data, successCallback);
}, 100);
}
}).fail(function () {
if (!Global.IsNull(item.saveOnFail) && item.saveOnFail) {
if (Global.IsNotNullResult(arrConfirmValidations)) {
arrConfirmValidations.splice(0, 1);
}
if (!Global.IsNotNullResult(arrConfirmValidations)) {
arrConfirmValidations = [];
successCallback(data);
} else {
window.setTimeout(function () {
processConfirmsFlight(index, data, successCallback);
}, 100);
}
} else {
item.fail();
arrConfirmValidations = [];
}
});
} else {
if (Global.IsNotNullResult(arrConfirmValidations)) {
arrConfirmValidations.splice(0, 1);
}
if (!Global.IsNotNullResult(arrConfirmValidations)) {
arrConfirmValidations = [];
successCallback(data);
} else {
window.setTimeout(function () {
processConfirmsFlight(index, data, successCallback);
}, 100);
}
}
} else {
arrConfirmValidations = [];
successCallback(data);
}
}
function bindSelect2(select2bind) {
setTimeout(function () {
$(select2bind).select2({
sorter: function (results) {
return Global.select2OptionGroupSorter(results);
}
});
}, 10);
}
function bindSelect2WithoutSort() {
setTimeout(function () {
$('.airline-select2bind').select2();
}, 10);
}
$(document).ready(function () {
$(document).on('focus', '.datepickerflight', function () {
if (Global.IsNull($(this).data('datepicker'))) {
$(this).datepicker('destroy').datepicker({
changeMonth: true, // provide option to select Month
changeYear: true, // provide option to select year
autoclose: true,
dateFormat: 'dd/mm/yy',
minDate: "+d",
});
}
});
window.returnelementvalid = [];
var model = {
BrandId: $('#BrandId').val(),
Deptdate: deptDate,
QuoteId: $('#Go2BookQuoteId').val(),
SourceQuoteId: $('#SourceQuoteId').val(),
FromSPPQuoteId: $('#FromSPPQuoteId').val()
};
$.ajax({
type: "GET",
url: "/enquiryquote/FillG2BAirClassList",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
airlineClassData = data;
$.ajax({
type: "GET",
url: '/go2bookflight/GetG2BQuoteFlight',
contentType: "application/json; charset=utf-8",
data: model,
dataType: "json",
success: function (results) {
if (results.Response[0].Id > 0) {
$tabFlights.find('i').removeClass('fa-remove');
$tabFlights.find('i').addClass('fa-check');
}
vmFlight = new G2BQuoteFlightModel(results.Response);
ko.applyBindings(vmFlight, $("#g2bquoteflights")[0]);
$('#flightloader').remove();
var isNotSaved = $.grep(results.Response[0], function (v, i) { return v.Id() == 0; });
if (G2BQuote.IsCopyQuote == true && results.Response[0].SupplierId > 0)
$tabFlights.markTabInComplete();
else if (isNotSaved.length == 0)
$tabFlights.enableQuoteTab();
else
$tabFlights.markTabEmpty();
bindSelect2('.airline-select2bind');
bindSelect2WithoutSort();
},
error: function () {
console.log(results.Message);
alertify.error(results.Message);
}
});
}, error: function () {
console.log("Error in Bind Airline Class.");
alertify.error("Flight could not bind. please contact to administrator.");
}
});
});