UNPKG

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
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)); }