webstaff: UI for delete subscription
authorJason Etheridge <jason@equinoxinitiative.org>
Tue, 23 May 2017 21:37:44 +0000 (17:37 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Tue, 30 May 2017 16:06:49 +0000 (12:06 -0400)
and distribution and stream

Signed-off-by: Jason Etheridge <jason@equinoxinitiative.org>
Open-ILS/src/templates/staff/serials/index.tt2
Open-ILS/src/templates/staff/serials/t_subscription_manager.tt2
Open-ILS/web/js/ui/default/staff/serials/directives/subscription_manager.js

index ab7dccb..36b7ddc 100644 (file)
 angular.module('egCoreMod').run(['egStrings', function(s) {
     s.SERIALS_SUBSCRIPTION_SUCCESS_CLONE = "[% l('Cloned serial subscription') %]";
     s.SERIALS_SUBSCRIPTION_FAIL_CLONE = "[% l('Failed to clone serial subscription') %]";
+    s.SERIALS_SUBSCRIPTION_SUCCESS_DELETE = "[% l('Deleted serial subscription') %]";
+    s.SERIALS_SUBSCRIPTION_FAIL_DELETE = "[% l('Failed to delete serial subscription') %]";
+    s.SERIALS_DISTRIBUTION_SUCCESS_DELETE = "[% l('Deleted serial distribution') %]";
+    s.SERIALS_DISTRIBUTION_FAIL_DELETE = "[% l('Failed to delete serial distribution') %]";
+    s.SERIALS_STREAM_SUCCESS_DELETE = "[% l('Deleted serial stream') %]";
+    s.SERIALS_STREAM_FAIL_DELETE = "[% l('Failed to delete serial stream') %]";
     s.SERIALS_ISSUANCE_FAIL_SAVE = "[% l('Failed to save issuance') %]";
     s.SERIALS_ISSUANCE_SUCCESS_SAVE = "[% l('Issuance saved') %]";
     s.SERIALS_DISTRIBUTION_SUCCESS_LINK_MFHD = "[% l('Distribution linked to MFHD') %]";
@@ -29,6 +35,13 @@ angular.module('egCoreMod').run(['egStrings', function(s) {
     s.SERIALS_ISSUANCE_PREDICT = "[% l('Predict New Issues: Initial Values') %]";
     s.SERIALS_ISSUANCE_ADD = "[% l('Add folloing issue') %]";
 
+    s.CONFIRM_DELETE_SUBSCRIPTION = "[% l('Delete selected subscription(s)?') %]";
+    s.CONFIRM_DELETE_SUBSCRIPTION_MESSAGE = "[% l('Will delete {{count}} subscription(s)') %]";
+    s.CONFIRM_DELETE_DISTRIBUTION = "[% l('Delete selected distribution(s)?') %]";
+    s.CONFIRM_DELETE_DISTRIBUTION_MESSAGE = "[% l('Will delete {{count}} distribution(s)') %]";
+    s.CONFIRM_DELETE_STREAM = "[% l('Delete selected stream(s)?') %]";
+    s.CONFIRM_DELETE_STREAM_MESSAGE = "[% l('Will delete {{count}} stream(s)') %]";
+
     s.CONFIRM_CHANGE_ITEMS = {};
     s.CONFIRM_CHANGE_ITEMS_MESSAGE = {};
     s.CONFIRM_CHANGE_ITEMS.delete = "[% l('Delete selected item(s)?') %]";
index 076380f..afba744 100644 (file)
       label="[% l('Additional Routing') %]"></eg-grid-action>
     <eg-grid-action handler="link_mfhd" disabled="need_one_selected"
       label="[% l('Link MFHD') %]"></eg-grid-action>
+    <eg-grid-action handler="delete_subscription"
+      label="[% l('Delete Subscription') %]"></eg-grid-action>
+    <eg-grid-action handler="delete_distribution"
+      label="[% l('Delete Distribution') %]"></eg-grid-action>
+    <eg-grid-action handler="delete_stream"
+      label="[% l('Delete Stream') %]"></eg-grid-action>
     <eg-grid-action handler="clone_subscription"
       label="[% l('Clone Subscription') %]"></eg-grid-action>
 
index cbaa201..22fc1ba 100644 (file)
@@ -10,9 +10,9 @@ angular.module('egSerialsAppDep')
         templateUrl: './serials/t_subscription_manager',
         controller:
        ['$scope','$q','egSerialsCoreSvc','egCore','egGridDataProvider',
-        '$uibModal','ngToast',
+        '$uibModal','ngToast','egConfirmDialog',
 function($scope , $q , egSerialsCoreSvc , egCore , egGridDataProvider ,
-         $uibModal , ngToast ) {
+         $uibModal , ngToast , egConfirmDialog ) {
 
     function reload() {
         egSerialsCoreSvc.fetch($scope.bibId).then(function() {
@@ -142,6 +142,108 @@ function($scope , $q , egSerialsCoreSvc , egCore , egGridDataProvider ,
             form.$setPristine();
         });
     }
+    $scope.delete_subscription = function(rows) {
+        if (rows.length == 0) { return; }
+        var s_rows = rows.filter(function(el) {
+            return typeof el['id'] != 'undefined';
+        });
+        if (s_rows.length == 0) { return; }
+        egConfirmDialog.open(
+            egCore.strings.CONFIRM_DELETE_SUBSCRIPTION,
+            egCore.strings.CONFIRM_DELETE_SUBSCRIPTION_MESSAGE,
+            {count : s_rows.length}
+        ).result.then(function () {
+            var promises = [];
+            angular.forEach(s_rows, function(el) {
+                promises.push(
+                    egCore.net.request(
+                        'open-ils.serial',
+                        'open-ils.serial.subscription.safe_delete',
+                        egCore.auth.token(),
+                        el['id']
+                    ).then(function(resp){
+                        var evt = egCore.evt.parse(resp);
+                        if (evt) {
+                            ngToast.danger(egCore.strings.SERIALS_SUBSCRIPTION_FAIL_DELETE + ' : ' + evt.desc);
+                        } else {
+                            ngToast.success(egCore.strings.SERIALS_SUBSCRIPTION_SUCCESS_DELETE);
+                        }
+                    })
+                );
+            });
+            $q.all(promises).then(function() {
+                reload();
+            });
+        });
+    }
+    $scope.delete_distribution = function(rows) {
+        if (rows.length == 0) { return; }
+        var d_rows = rows.filter(function(el) {
+            return typeof el['sdist.id'] != 'undefined';
+        });
+        if (d_rows.length == 0) { return; }
+        egConfirmDialog.open(
+            egCore.strings.CONFIRM_DELETE_DISTRIBUTION,
+            egCore.strings.CONFIRM_DELETE_DISTRIBUTION_MESSAGE,
+            {count : d_rows.length}
+        ).result.then(function () {
+            var promises = [];
+            angular.forEach(d_rows, function(el) {
+                promises.push(
+                    egCore.net.request(
+                        'open-ils.serial',
+                        'open-ils.serial.distribution.safe_delete',
+                        egCore.auth.token(),
+                        el['sdist.id']
+                    ).then(function(resp){
+                        var evt = egCore.evt.parse(resp);
+                        if (evt) {
+                            ngToast.danger(egCore.strings.SERIALS_DISTRIBUTION_FAIL_DELETE + ' : ' + evt.desc);
+                        } else {
+                            ngToast.success(egCore.strings.SERIALS_DISTRIBUTION_SUCCESS_DELETE);
+                        }
+                    })
+                );
+            });
+            $q.all(promises).then(function() {
+                reload();
+            });
+        });
+    }
+    $scope.delete_stream = function(rows) {
+        if (rows.length == 0) { return; }
+        var s_rows = rows.filter(function(el) {
+            return typeof el['sstr.id'] != 'undefined';
+        });
+        if (s_rows.length == 0) { return; }
+        egConfirmDialog.open(
+            egCore.strings.CONFIRM_DELETE_STREAM,
+            egCore.strings.CONFIRM_DELETE_STREAM_MESSAGE,
+            {count : s_rows.length}
+        ).result.then(function () {
+            var promises = [];
+            angular.forEach(s_rows, function(el) {
+                promises.push(
+                    egCore.net.request(
+                        'open-ils.serial',
+                        'open-ils.serial.stream.safe_delete',
+                        egCore.auth.token(),
+                        el['sstr.id']
+                    ).then(function(resp){
+                        var evt = egCore.evt.parse(resp);
+                        if (evt) {
+                            ngToast.danger(egCore.strings.SERIALS_STREAM_FAIL_DELETE + ' : ' + evt.desc);
+                        } else {
+                            ngToast.success(egCore.strings.SERIALS_STREAM_SUCCESS_DELETE);
+                        }
+                    })
+                );
+            });
+            $q.all(promises).then(function() {
+                reload();
+            });
+        });
+    }
     $scope.additional_routing = function(rows) {
         if (!rows) { return; }
         var row = rows[0];