zettapi_client
Version:
Client side CRUD operations in angular to use with zettapi_server rest api to get started quickly in any CMS project
58 lines (49 loc) • 1.9 kB
JavaScript
app.controller('holidayCtrl', function(ErrorSvc, $scope, $holiday) {
$scope.getError = function(holiday, holidays) {
$scope.nextOccurrence = null;
if (!holiday) {
return ErrorSvc.validationArgs(true);
}
if (!holiday.name) {
return ErrorSvc.validationArgs(true, "Introduza um nome do feriado");
}
if (holiday.name.trim() === "") {
return ErrorSvc.validationArgs(true, "Introduza um nome do feriado");
}
for (var i = 0; i < holidays.length; i++) {
if (holidays[i].name == holiday.name && holiday._id != holidays[i]._id) {
return ErrorSvc.validationArgs(true, "Feriado já existente");
}
}
if (!holiday.date && !holiday.formula) {
return ErrorSvc.validationArgs(true, "Impossivel calcular próxima ocorrência para este feriado");
}
if (holiday.date) {
var pattern = /^(?:(?:[12][0-9]|0[1-9])\/(02)|(?:30|[12][0-9]|0[1-9])\/(?:(?:0[469]|11))|(?:3[01]|[12][0-9]|0[1-9])\/(?:(?:0[13578]|1[02])))$/;
if (!pattern.test(holiday.date)) {
return ErrorSvc.validationArgs(true, "A data deve ser no formato dd/mm");
}
}
else if (holiday.formula) {
try {
var currentYear = new Date().getFullYear();
eval('my_function = ' + holiday.formula);
var d = my_function(currentYear);
if (Object.prototype.toString.call(d) === "[object Date]" ) {
//it is a date
if (isNaN(d.getTime())) {
return ErrorSvc.validationArgs(true, "Data inválida");
}
}
else {
return ErrorSvc.validationArgs(true, "Data inválida");
}
}
catch(err) {
return ErrorSvc.validationArgs(true, "A formula que introduziu contém um erro: " + err);
}
}
return ErrorSvc.validationArgs(false);
};
$scope.calculateNextOccurrence = $holiday.calculateNextOccurrence;
});