88 lines
3.1 KiB
JavaScript
88 lines
3.1 KiB
JavaScript
'use strict';
|
|
angular.module('lemur')
|
|
.service('NotificationApi', function (LemurRestangular) {
|
|
LemurRestangular.extendModel('notifications', function (obj) {
|
|
return angular.extend(obj, {
|
|
attachCertificate: function (certificate) {
|
|
this.selectedCertificate = null;
|
|
if (this.certificates === undefined) {
|
|
this.certificates = [];
|
|
}
|
|
if (this.addedCertificates === undefined) {
|
|
this.addedCertificates = [];
|
|
}
|
|
if (_.some(this.addedCertificates, function (cert) {
|
|
return cert.id === certificate.id;
|
|
})) {
|
|
return;
|
|
}
|
|
this.certificates.push(certificate);
|
|
this.addedCertificates.push(certificate);
|
|
if (this.removedCertificates !== undefined) {
|
|
const indexInRemovedList = _.findIndex(this.removedCertificates, function (cert) {
|
|
return cert.id === certificate.id;
|
|
});
|
|
this.removedCertificates.splice(indexInRemovedList, 1);
|
|
}
|
|
},
|
|
removeCertificate: function (index) {
|
|
if (this.removedCertificates === undefined) {
|
|
this.removedCertificates = [];
|
|
}
|
|
const removedCert = this.certificates.splice(index, 1)[0];
|
|
this.removedCertificates.push(removedCert);
|
|
if (this.addedCertificates !== undefined) {
|
|
const indexInAddedList = _.findIndex(this.addedCertificates, function (cert) {
|
|
return cert.id === removedCert.id;
|
|
});
|
|
this.addedCertificates.splice(indexInAddedList, 1);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
return LemurRestangular.all('notifications');
|
|
})
|
|
.service('NotificationService', function ($location, NotificationApi, PluginService) {
|
|
var NotificationService = this;
|
|
NotificationService.findNotificationsByName = function (filterValue) {
|
|
return NotificationApi.getList({'filter[label]': filterValue})
|
|
.then(function (notifications) {
|
|
return notifications;
|
|
});
|
|
};
|
|
|
|
NotificationService.getCertificates = function (notification) {
|
|
notification.getList('certificates', {showExpired: 0}).then(function (certificates) {
|
|
notification.certificates = certificates;
|
|
});
|
|
};
|
|
|
|
NotificationService.getPlugin = function (notification) {
|
|
return PluginService.getByName(notification.pluginName).then(function (plugin) {
|
|
notification.plugin = plugin;
|
|
});
|
|
};
|
|
|
|
|
|
NotificationService.loadMoreCertificates = function (notification, page) {
|
|
notification.getList('certificates', {page: page, showExpired: 0}).then(function (certificates) {
|
|
_.each(certificates, function (certificate) {
|
|
notification.roles.push(certificate);
|
|
});
|
|
});
|
|
};
|
|
|
|
NotificationService.create = function (notification) {
|
|
return NotificationApi.post(notification);
|
|
};
|
|
|
|
NotificationService.update = function (notification) {
|
|
return notification.put();
|
|
};
|
|
|
|
NotificationService.updateActive = function (notification) {
|
|
notification.put();
|
|
};
|
|
return NotificationService;
|
|
});
|