/** * Created by robin on 12/11/16. */ (function () { 'use strict'; angular.module('luticate2Utils') .factory('luNotificationsBusiness', ['luNotificationsDataAccess', function(luNotificationsDataAccess) { var luNotificationsBusiness = {}; luNotificationsBusiness.EVENT_CREATE = 'EVENT_CREATE'; luNotificationsBusiness.EVENT_UPDATE = 'EVENT_UPDATE'; luNotificationsBusiness.EVENT_DELETE = 'EVENT_DELETE'; luNotificationsBusiness.businesses = {}; function callbackWrapper(callback) { return function (eventName, entityType, oldEntity, newEntity) { var business = luNotificationsBusiness.businesses[entityType]; if (business != null && business.initDbo != null) { oldEntity = business.initDbo(oldEntity); newEntity = business.initDbo(newEntity); } return callback(eventName, entityType, oldEntity, newEntity); }; } luNotificationsBusiness.init = function (businesses) { luNotificationsBusiness.businesses = businesses; luNotificationsDataAccess.init(); }; luNotificationsBusiness.addEventCreateCallback = function (entityType, callback) { luNotificationsDataAccess.addCallback(luNotificationsBusiness.EVENT_CREATE, entityType, callbackWrapper(callback)); }; luNotificationsBusiness.addEventUpdateCallback = function (entityType, callback) { luNotificationsDataAccess.addCallback(luNotificationsBusiness.EVENT_UPDATE, entityType, callbackWrapper(callback)); }; luNotificationsBusiness.addEventDeleteCallback = function (entityType, callback) { luNotificationsDataAccess.addCallback(luNotificationsBusiness.EVENT_DELETE, entityType, callbackWrapper(callback)); }; luNotificationsBusiness.addEventCrudCallback = function (entityType, callback) { luNotificationsBusiness.addEventCreateCallback(entityType, callback); luNotificationsBusiness.addEventUpdateCallback(entityType, callback); luNotificationsBusiness.addEventDeleteCallback(entityType, callback); }; return luNotificationsBusiness; }]); })();