diff --git a/backend/util/scoreAndSearch.js b/backend/util/scoreAndSearch.js index d9aabbf..812b6e3 100644 --- a/backend/util/scoreAndSearch.js +++ b/backend/util/scoreAndSearch.js @@ -85,11 +85,13 @@ module.exports = function (dbConn) { reg.scores.push(finalScoreObj) }); + reg.price_tendency_relative = getAverageFromTrivago(travelPeriods, reg) // CALCULATE AVERAGE SCORE reg.score = calculateAverage(reg.scores) }) - return _.orderBy(regions, ({score}) => score || 0, 'desc') //.filter(el => !_.isNaN(el.score)) + return _.orderBy(regions, ({score}) => score || 0, 'desc') + .filter(el => !_.some(el.scores, score => _.isNaN(score.score) || _.isNull(score.score) || _.isUndefined(score.score)))//.filter(el => !_.isNaN(el.score)) } function calculateAverage(scores) { @@ -246,6 +248,37 @@ module.exports = function (dbConn) { return finScore } + function getAverageFromTrivago(travelPeriods, region) { + console.log('getAverageFromTrivago for', region.name) - //end + const singleScores = travelPeriods.map(period => { + let res = { + //region_id: x.region_id, + value: region.avg_price_relative[period.month - 1], + days: period.days + } + + return res + }) + + let averagedScore = { + value: 0, + days: 0 + } + singleScores.forEach(el => { + if (el.value !== null) { + averagedScore.value += (el.value * el.days) + averagedScore.days += (el.days) + } else { + console.log('skip averaging') + console.log(el) + + } + }) + averagedScore.value = _.round(averagedScore.value / averagedScore.days, 1) + + return averagedScore.value + } + +//end } \ No newline at end of file