33 lines
966 B
JavaScript
33 lines
966 B
JavaScript
// js/utils/PointsCalculator.js
|
|
export class PointsCalculator {
|
|
calculate({ checkins, latePoints = 0 }) {
|
|
const totalPoints = this.calculateTotalPoints(checkins);
|
|
const buyPoints = this.calculateBuyPoints(checkins);
|
|
|
|
return {
|
|
totalPoints,
|
|
buyPoints,
|
|
latePoints,
|
|
finalPoints: totalPoints + buyPoints + latePoints
|
|
};
|
|
}
|
|
|
|
calculateTotalPoints(checkins) {
|
|
return checkins.reduce((total, checkin) => {
|
|
if (checkin.validate_location && !checkin.buy_flag) {
|
|
return total + (checkin.checkin_point || 0);
|
|
}
|
|
return total;
|
|
}, 0);
|
|
}
|
|
|
|
calculateBuyPoints(checkins) {
|
|
return checkins.reduce((total, checkin) => {
|
|
if (checkin.validate_location && checkin.buy_flag) {
|
|
return total + (checkin.buy_point || 0);
|
|
}
|
|
return total;
|
|
}, 0);
|
|
}
|
|
}
|