'use strict'; angular.module('dssWebApp') .directive('dssNotifications', function ($timeout, $rootScope, $q, NotificationModel, MESSAGE_EVENTS) { var markNotifications = function (scope) { scope.notifications.forEach(function (notification) { if (notification.accepted_date === null) { console.log(notification.id); notification.accepted_date = new Date(); NotificationModel.save(notification); scope.notificationCount--; } }); }; function getNotifications(scope) { var defer = $q.defer(); NotificationModel.ejectAll(); NotificationModel.findAll().then(function (results) { scope.notifications = results; scope.notificationCount = results.filter(function (x) { return x.accepted_date === null; }).length; defer.resolve(); }); return defer.promise; } return { restrict: 'E', templateUrl: 'app/directives/notifications/notifications.html', replace: true, link: function (scope, elem, attrs) { scope.notifications = []; getNotifications(scope); $('#navbar-notification-dropdown').on('hide.bs.dropdown', function () { markNotifications(scope); }); scope.$on(MESSAGE_EVENTS.broadcast, function (message) { getNotifications(scope) .then(function () { $rootScope.safeApply(); }); }); } } });