Skip to content

Commit 69f7c27

Browse files
authored
Merge pull request #9 from TourConnect/feature/additional_custom_params
Added 3 new custom fields origin country, travel agency & famils
2 parents 9a1ea1a + 85a7c8a commit 69f7c27

File tree

1 file changed

+71
-21
lines changed

1 file changed

+71
-21
lines changed

index.js

+71-21
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@ const wildcardMatch = require('./utils/wildcardMatch');
88
const { translateProduct } = require('./resolvers/product');
99
const { translateAvailability } = require('./resolvers/availability');
1010
const { translateBooking } = require('./resolvers/booking');
11-
const EQUIPMENT_COUNT_FIELD_IDS = {
11+
const CUSTOM_FIELD_IDS = {
1212
EBIKE_COUNT: 1,
1313
BABYSEATS_COUNT: 2,
1414
TRAILALONGS_COUNT: 3,
1515
KIDDIECARRIER_COUNT: 4,
1616
SMALLKIDSBIKE_COUNT: 5,
1717
LARGEKIDSBIKE_COUNT: 6,
18+
ORIGINCOUNTRY: 7,
19+
TRAVELAGENCY: 8,
20+
FAMILS: 9,
1821
}
1922
const EQUIPMENT_FIELD_IDS = {
2023
EBIKE: 1001,
@@ -376,18 +379,27 @@ class Plugin {
376379
// Get Equipment Details
377380
console.log("customFieldValues: " + JSON.stringify(customFieldValues));
378381
// Example:
379-
// [{"field":{"id":"EBIKE_COUNT","title":"Enter e-Bike(s) Required","subtitle":"Enter the equipment you need",
380-
// "type":"count","isPerUnitItem":false},"value":"1"},
382+
// [
383+
// {"field":{"id":7,"title":"Entry Origin Country","subtitle":"Enter the traveler's country of origin",
384+
// "type":"short","isPerUnitItem":false},"value":"USA"},
385+
// {"field":{"id":8,"title":"Entry Travel Agency","subtitle":"Enter the travel agency name",
386+
// "type":"short","isPerUnitItem":false},"value":"BONZA PARTNER USA"}
387+
// {"field":{"id":9,"title":"Is it Famil?","subtitle":"Entry whether this is a famil booking",
388+
// "type":"yes-no","isPerUnitItem":false},"value":false}
389+
// {"field":{"id":"EBIKE_COUNT","title":"Enter e-Bike(s) Required","subtitle":"Enter the equipment you need",
390+
// "type":"count","isPerUnitItem":false},"value":"1"},
381391
// {"field":{"id":"TRAILALONGS_COUNT","title":"Enter Trail Alongs(s) Required","subtitle":"Enter the equipment you need",
382-
// "type":"count","isPerUnitItem":false},"value":"2"},
392+
// "type":"count","isPerUnitItem":false},"value":"2"},
383393
// {"field":{"id":"KIDDIECARRIER_COUNT","title":"Enter Kiddie Carrier(s) Required","subtitle":"Enter the equipment you need",
384-
// "type":"count","isPerUnitItem":false},"value":"3"},
394+
// "type":"count","isPerUnitItem":false},"value":"3"},
385395
// {"field":{"id":"SMALLKIDSBIKE_COUNT","title":"Enter Small Kids Bike(s) Required","subtitle":"Enter the equipment you need",
386-
// "type":"count","isPerUnitItem":false},"value":"4"},
396+
// "type":"count","isPerUnitItem":false},"value":"4"},
387397
//{"field":{"id":"LARGEKIDSBIKE_COUNT","title":"Enter Large Kids Bike(s) Required","subtitle":"Enter the equipment you need",
388-
//"type":"count","isPerUnitItem":false},"value":"5"},
398+
// "type":"count","isPerUnitItem":false},"value":"5"},
389399
// {"field":{"id":"BABYSEATS_COUNT","title":"Enter Baby Seat(s) Required", "subtitle":"Enter the equipment you need",
390-
// "type":"count","isPerUnitItem":false},"value":"6"}]
400+
// "type":"count","isPerUnitItem":false},"value":"6"}
401+
// ]
402+
391403
let eBikeCount = 0;
392404
let babySeatCount = 0;
393405
let kiddieCarrierCount = 0;
@@ -398,9 +410,29 @@ class Plugin {
398410
let kid_equipments = [];
399411
let infant_equipment = [];
400412

413+
let originCountry = "";
414+
let travelAgency = "";
415+
let famils = 0;
416+
401417
if (customFieldValues && customFieldValues.length) {
402418
console.log("Len: " + customFieldValues.length);
403419

420+
customFieldValues.forEach(function (unit, d) {
421+
console.log('unit.value: ', unit.value);
422+
switch(parseInt(unit.field.id)) {
423+
case CUSTOM_FIELD_IDS.ORIGINCOUNTRY:
424+
originCountry = !isNilOrEmpty(unit.value) ? unit.value : "";
425+
break;
426+
case CUSTOM_FIELD_IDS.TRAVELAGENCY:
427+
travelAgency = !isNilOrEmpty(unit.value) ? unit.value : "";
428+
break;
429+
case CUSTOM_FIELD_IDS.FAMILS:
430+
let booleanFamils = !isNilOrEmpty(unit.value) ? unit.value : "";
431+
famils = booleanFamils === true ? 1 : 0;
432+
break;
433+
}
434+
})
435+
404436
const unitItemCFV = customFieldValues.filter(o => (!R.isNil(o.value) && (o.value > 0) && !o.field.isPerUnitItem));
405437
console.log("unitItemCFV: " + JSON.stringify(unitItemCFV));
406438

@@ -410,42 +442,42 @@ class Plugin {
410442
console.log('Count : ', count);
411443

412444
switch(parseInt(unit.field.id)) {
413-
case EQUIPMENT_COUNT_FIELD_IDS.EBIKE_COUNT:
445+
case CUSTOM_FIELD_IDS.EBIKE_COUNT:
414446
eBikeCount = count;
415447
adult_equipment.push({
416448
id : EQUIPMENT_FIELD_IDS.EBIKE,
417449
count: count
418450
});
419451
break;
420-
case EQUIPMENT_COUNT_FIELD_IDS.BABYSEATS_COUNT:
452+
case CUSTOM_FIELD_IDS.BABYSEATS_COUNT:
421453
babySeatCount = count;
422454
infant_equipment.push({
423455
id : EQUIPMENT_FIELD_IDS.BABYSEATS,
424456
count: count
425457
});
426458
break;
427-
case EQUIPMENT_COUNT_FIELD_IDS.KIDDIECARRIER_COUNT:
459+
case CUSTOM_FIELD_IDS.KIDDIECARRIER_COUNT:
428460
kiddieCarrierCount = count;
429461
kid_equipments.push ({
430462
id : EQUIPMENT_FIELD_IDS.KIDDIECARRIER,
431463
count: count
432464
});
433465
break;
434-
case EQUIPMENT_COUNT_FIELD_IDS.TRAILALONGS_COUNT:
466+
case CUSTOM_FIELD_IDS.TRAILALONGS_COUNT:
435467
trailAlongsCount = count;
436468
kid_equipments.push ({
437469
id : EQUIPMENT_FIELD_IDS.TRAILALONGS,
438470
count: count
439471
});
440472
break;
441-
case EQUIPMENT_COUNT_FIELD_IDS.SMALLKIDSBIKE_COUNT:
473+
case CUSTOM_FIELD_IDS.SMALLKIDSBIKE_COUNT:
442474
smallKidsBikeCount = count;
443475
kid_equipments.push ({
444476
id : EQUIPMENT_FIELD_IDS.SMALLKIDSBIKE,
445477
count: count
446478
});
447479
break;
448-
case EQUIPMENT_COUNT_FIELD_IDS.LARGEKIDSBIKE_COUNT:
480+
case CUSTOM_FIELD_IDS.LARGEKIDSBIKE_COUNT:
449481
largeKidsBikeCount = count;
450482
kid_equipments.push ({
451483
id : EQUIPMENT_FIELD_IDS.LARGEKIDSBIKE,
@@ -533,6 +565,9 @@ class Plugin {
533565
let dataForBooking = {};
534566
dataForBooking.productId = inputDataForBooking.productId;
535567
dataForBooking.tourDate = inputDataForBooking.tourDate;
568+
dataForBooking.originCountry = originCountry;
569+
dataForBooking.travelAgency = travelAgency;
570+
dataForBooking.famils = famils;
536571

537572
if (isFamilyBooking) {
538573
// add additional pax
@@ -813,6 +848,16 @@ class Plugin {
813848
resellerId,
814849
});
815850

851+
const addCustomField = (id, title, subtitle, type) => {
852+
customFieldsToShow.push ({
853+
id: id,
854+
title: title,
855+
subtitle: subtitle,
856+
type: type,
857+
isPerUnitItem: false,
858+
})
859+
}
860+
816861
const getEquipmentCountField = (id, name) => {
817862
customFieldsToShow.push ({
818863
id: id,
@@ -825,18 +870,18 @@ class Plugin {
825870
}
826871

827872
const getAdultEquipmentFields = () => {
828-
getEquipmentCountField(EQUIPMENT_COUNT_FIELD_IDS.EBIKE_COUNT, constants.LABELS.EBIKE);
873+
getEquipmentCountField(CUSTOM_FIELD_IDS.EBIKE_COUNT, constants.LABELS.EBIKE);
829874
}
830875

831876
const getChildEquipmentFields = () => {
832-
getEquipmentCountField(EQUIPMENT_COUNT_FIELD_IDS.TRAILALONGS_COUNT, constants.LABELS.TRAIL_ALONG);
833-
getEquipmentCountField(EQUIPMENT_COUNT_FIELD_IDS.KIDDIECARRIER_COUNT, constants.LABELS.KIDDIE_CARRIER);
834-
getEquipmentCountField(EQUIPMENT_COUNT_FIELD_IDS.SMALLKIDSBIKE_COUNT, constants.LABELS.SMALL_KIDS_BIKE);
835-
getEquipmentCountField(EQUIPMENT_COUNT_FIELD_IDS.LARGEKIDSBIKE_COUNT, constants.LABELS.LARGE_KIDS_BIKE);
877+
getEquipmentCountField(CUSTOM_FIELD_IDS.TRAILALONGS_COUNT, constants.LABELS.TRAIL_ALONG);
878+
getEquipmentCountField(CUSTOM_FIELD_IDS.KIDDIECARRIER_COUNT, constants.LABELS.KIDDIE_CARRIER);
879+
getEquipmentCountField(CUSTOM_FIELD_IDS.SMALLKIDSBIKE_COUNT, constants.LABELS.SMALL_KIDS_BIKE);
880+
getEquipmentCountField(CUSTOM_FIELD_IDS.LARGEKIDSBIKE_COUNT, constants.LABELS.LARGE_KIDS_BIKE);
836881
}
837882

838883
const getInfantEquipmentFields = () => {
839-
getEquipmentCountField(EQUIPMENT_COUNT_FIELD_IDS.BABYSEATS_COUNT, constants.LABELS.BABY_SEAT);
884+
getEquipmentCountField(CUSTOM_FIELD_IDS.BABYSEATS_COUNT, constants.LABELS.BABY_SEAT);
840885
}
841886

842887
console.log("productId : " + productId);
@@ -850,7 +895,12 @@ class Plugin {
850895
console.log("Len: " + selectedUnits.length);
851896

852897
let customFieldsToShow = [];
853-
898+
// The custom field's type. Supported types: yes-no, short, long, count, and extended-option.
899+
900+
addCustomField(CUSTOM_FIELD_IDS.ORIGINCOUNTRY, "Entry Origin Country", "Enter the traveler's country of origin", "short");
901+
addCustomField(CUSTOM_FIELD_IDS.TRAVELAGENCY, "Entry Travel Agency", "Enter the travel agency name", "short");
902+
addCustomField(CUSTOM_FIELD_IDS.FAMILS, "Is it famils booking?", "Entry whether this is a famil booking", "yes-no");
903+
854904
selectedUnits.forEach(function (unit, d) {
855905
console.log('unit.unitId: ', String(unit.unitId));
856906
console.log('unit.quantity: ', unit.quantity);

0 commit comments

Comments
 (0)