asksuite-core
Version:
81 lines (67 loc) • 2.24 kB
JavaScript
const requestPromise = require('request-promise-native');
module.exports = config => {
const requester = {};
requester.getBookingRooms = async (
idHotel,
checkin,
checkout,
adultos,
criancas,
cupom,
childAges,
otherParams,
quotationIdentifier,
) => {
try {
const options = {
uri: config.CRAWLER_ENDPOINT + '/generic/booking-pricing',
qs: {
idHotel: idHotel,
checkin: checkin,
checkout: checkout,
adultos: adultos,
criancas: criancas,
cupom: cupom,
childAges: childAges,
otherParams: otherParams,
quotationIdentifier: quotationIdentifier,
},
json: true, // Automatically parses the JSON string in the response
};
const response = await requestPromise.get(options);
return Promise.resolve(response);
} catch (err) {
console.log('caiu aqui no erro');
console.error(err.error);
return Promise.reject(err.error);
}
};
const transformSearchEngineValueToNumbers = item => {
return parseFloat(item.total.replace(/\D/g, '')) / 100;
};
const calculatePercentage = (minPriceBooking, minPriceEngine) => {
const difference = minPriceBooking - minPriceEngine;
const division = difference / minPriceBooking;
return division * 100;
};
requester.calculateDiscountAgainstBooking = (bookingPrices, searchEnginePrices) => {
const bookingPricesFilteredPrices = bookingPrices.map(item => {
return item.total;
});
const searchEngineFilteredPrices = searchEnginePrices.map(transformSearchEngineValueToNumbers);
const minPriceBooking = Math.min(...bookingPricesFilteredPrices);
//Simulates higher price to show card at chat please comment the other minPriceBooking
//const minPriceBooking = 1300;
const minPriceEngine = Math.min(...searchEngineFilteredPrices);
if (minPriceBooking <= minPriceEngine) {
return false;
} else {
if ((minPriceEngine - minPriceBooking) * -1 < 1) {
return false;
}
const resultPercentage = calculatePercentage(minPriceBooking, minPriceEngine);
return resultPercentage;
}
};
return requester;
};