/** * 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.dataAccesses = {}; function callbackWrapper(callback) { return function (eventName, entityType, oldEntity, newEntity) { var dataAccess = luNotificationsBusiness.dataAccesses[entityType]; if (dataAccess != null && dataAccess.initDbo != null) { oldEntity = dataAccess.initDbo(oldEntity, dataAccess.TYPE_MODEL); newEntity = dataAccess.initDbo(newEntity, dataAccess.TYPE_MODEL); } return callback(eventName, entityType, oldEntity, newEntity); }; } luNotificationsBusiness.init = function (dataAccesses) { luNotificationsBusiness.dataAccesses = dataAccesses; 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; }]); })();