UNPKG

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