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

60 lines (51 loc) 1.94 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.items.forEach(function (item) { item.next = $holiday.calculateNextOccurrence(item); }); });