/*- * ============LICENSE_START========================================== * ONAP Portal * =================================================================== * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * =================================================================== * * Unless otherwise specified, all software contained herein is licensed * under the Apache License, Version 2.0 (the "License"); * you may not use this software except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Unless otherwise specified, all documentation contained herein is licensed * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); * you may not use this documentation except in compliance with the License. * You may obtain a copy of the License at * * https://creativecommons.org/licenses/by/4.0/ * * Unless required by applicable law or agreed to in writing, documentation * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ============LICENSE_END============================================ * * ECOMP is a trademark and service mark of AT&T Intellectual Property. */ 'use strict'; (function () { class userNotificationsCtrl { constructor($scope, $log, notificationService, filterFilter,confirmBoxService, $modal, ngDialog, $state) { var priorityItems={"1":"Normal","2":"Important"}; $scope.priorityItems=priorityItems; $scope.searchString=''; $scope.externalNotification="External System"; $scope.itemExpired={"background-color":"silver "}; $scope.showInput = true; $scope.totalPages1 = 0; $scope.viewPerPage1 = 15; $scope.currentPage1 = 1; $scope.startIndex=0; $scope.showLoader = false; $scope.firstPlay = true; // Start with empty list to silence error in console $scope.tableData = []; $scope.tableAdminNotifItems = []; let getAdminNotifications = () => { $scope.isLoadingTable = true; notificationService.getAdminNotification().then(res => { $scope.adminNotifications = res.data; $scope.isLoadingTable = false; $scope.tableData = res.data; var totalItems = $scope.tableData.length; $scope.totalPages1 = Math.ceil(totalItems / $scope.viewPerPage1); $scope.showLoader = false; $scope.currentPage1=1; $scope.tableAdminNotifItems = $scope.tableData; }).catch(err => { $log.error('userNotificationsCtrl:getAdminNotifications:: error ', err); $scope.isLoadingTable = false; }); } getAdminNotifications(); $scope.$watch('searchString', function (searchKey) { var search = searchKey; this.totalPage1 = filterFilter($scope.tableData, search); var resultLen = this.totalPage1.length; $scope.totalPage1 = Math.ceil(resultLen/$scope.viewPerPage1); $scope.currentPage1 = 1; }); $scope.updateTable = (num) => { this.startIndex=this.viewPerPage1*(num-1); this.currentPage1 = num; }; this.removeUserNotification = (selectedAdminNotification) => { selectedAdminNotification.activeYn = 'N'; confirmBoxService.deleteItem(selectedAdminNotification.msgHeader) .then(isConfirmed => { if (isConfirmed) { notificationService.updateAdminNotification(selectedAdminNotification) .then(() => { getAdminNotifications(); }).catch(err => { switch (err.status) { case '409': // Conflict // handleConflictErrors(err); break; case '500': // Internal Server // Error confirmBoxService.showInformation('There was a problem updating the notification. ' + 'Please try again later. Error: ' + err.status).then(isConfirmed => { }); break; case '403': // Forbidden... // possible // webjunction error // to try again confirmBoxService.showInformation('There was a problem updating the notification. ' + 'Please try again. If the problem persists, then try again later. Error: ' + err.status).then(isConfirmed => { }); break; default: confirmBoxService.showInformation('There was a problem updating the notification. ' + 'Please try again. If the problem persists, then try again later. Error: ' + err.status).then(isConfirmed => { }); } $log.error('UserNotifCtlr::updateAdminNOtif failed: ' + JSON.stringify(err)); }).finally(() => { var objOffsetVersion = objAgent.indexOf("MSIE"); if (objOffsetVersion != -1) { $window.location.reload(); } }); } }).catch(err => { $log.error('UserNotifCtlr::deleteItem error: ' + err); }); } this.showDetailedJsonMessage = (selectedAdminNotification) => { notificationService.getMessageRecipients(selectedAdminNotification.notificationId).then(res =>{ $scope.messageRecipients = res; var messageObject=JSON.parse(selectedAdminNotification.msgDescription); var modalInstance = $modal.open({ templateUrl: 'app/views/user-notifications-admin/user.notifications.json.details.modal.page.html', controller: 'userNotificationCtrl', sizeClass: 'modal-large', resolve: { items: function () { var items = { title: '', selectedAdminNotification:selectedAdminNotification,messageObject:messageObject,messageRecipients:$scope.messageRecipients }; return items; } } }) }).catch(err => { $log.error('userNotificationsCtrl:getMessageRecipients:: error ', err); $scope.isLoadingTable = false; }); }; this.editUserNotificationModal = (selectedAdminNotification) => { // retrieve roleIds here selectedAdminNotification.roleIds = null; notificationService.getNotificationRoles(selectedAdminNotification.notificationId) .then(res => { selectedAdminNotification.roleIds = res.data; this.openUserNotificationModal(selectedAdminNotification); }).catch(err => { $log.error('UserNotifCtlr:getNotificationRoles:: error ', err); }); } this.openUserNotificationModal = (selectedAdminNotification) => { let data = null; if (selectedAdminNotification) { data = { notif: selectedAdminNotification } } var modalInstance = $modal.open({ templateUrl: 'app/views/user-notifications-admin/user.notifications.modal.page.html', controller: 'userNotificationsModalCtrl as userNotifModal', sizeClass: 'modal-large', resolve: { items: function () { return data; } } }) modalInstance.result.finally(function () { getAdminNotifications(); }); } $scope.customPageHandler = function(num) { $scope.currentPage1=num; this.startIndex=$scope.viewPerPage1*(num-1); }; } } userNotificationsCtrl.$inject = ['$scope', '$log', 'notificationService','filterFilter', 'confirmBoxService', '$modal', 'ngDialog', '$state']; angular.module('ecompApp').controller('userNotificationsCtrl', userNotificationsCtrl); })();