alphascript-server
Version:
CRUD operations for mongo and other functionalities to get started quickly in any CMS project
81 lines (67 loc) • 1.87 kB
JavaScript
var api = require('../../../../');
var moment = require('moment');
module.exports = {
collection: function (req) {
return api.common.Holiday;
},
populate: "country",
sort: { "name": 1 },
limit: 0,
beforeAdd: function (data, callback) {
callback(null, data);
},
afterAdd: function (data, callback) {
callback(null, data);
},
beforeEdit: function (data, callback) {
callback(null, data);
},
afterEdit: function (data, callback) {
callback(null, data);
},
remove: function (id, callback) {
callback("Não é permitido eliminar feriados");
},
getDayHolidays: function (day, callback) {
api.common.Holiday.find(function (err, holidays) {
if (err) {
api.error.log(err);
return callback(err);
}
callback(null, holidays.filter(function (holiday) {
return dayMatch(holiday, day);
}));
});
},
getDayHolidaysSync: function (day, holidays) {
return holidays.filter(function (holiday) {
return dayMatch(holiday, day);
});
}
};
function dayMatch(holiday, thisDate) {
thisDate = moment(thisDate);
if (!thisDate.isValid()) return false;
var thisYear = parseInt(thisDate.format('YYYY'));
var date;
switch (holiday.format) {
case 'static':
var parts = holiday.date.split('/');
var day = parts[0];
var month = parts[1];
date = moment([thisYear, month, day].join('-'), 'YYYY-MM-DD').toDate();
break;
case 'dynamic':
try {
eval('my_function = ' + holiday.formula);
date = my_function(thisYear);
} catch (err) {
api.error.log(err);
return false;
}
break;
}
var thisDay = parseInt(thisDate.format('DD'));
var thisMonth = parseInt(thisDate.format('MM'));
return (thisDay === date.getDate() && thisMonth === (date.getMonth() + 1));
}