alphascript-server
Version:
CRUD operations for mongo and other functionalities to get started quickly in any CMS project
77 lines (64 loc) • 2.02 kB
JavaScript
var api = require('../../../../');
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("Não é permitido alterar feriados");
},
afterEdit: function(data, callback) {
callback("Não é permitido alterar feriados");
},
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, thisDay) {
var date;
thisDay = new Date(thisDay);
var dayToday = thisDay.getDate();
var monthToday = thisDay.getMonth() + 1;
var currentYear = thisDay.getFullYear();
switch (holiday.format) {
case 'static':
var day = holiday.date.split('/')[0];
var month = holiday.date.split('/')[1];
date = new Date(currentYear + '/' + month + '/' + day);
break;
case 'dynamic':
try {
eval('my_function = ' + holiday.formula);
date = my_function(currentYear);
} catch (err) {
api.error.log(err);
return false;
}
break;
}
return (dayToday === date.getDate() && monthToday === (date.getMonth() + 1));
}