__PACKAGE__->register_method(
method => 'safe_delete',
+ api_name => 'open-ils.serial.caption_and_pattern.safe_delete',
+ signature => q/
+ Deletes an existing caption and pattern object, but only
+ if there are no attached serial issuances.
+ @param authtoken The login session key
+ @param strid The id of the scap to delete
+ @return 1 on success - Event otherwise.
+ /
+);
+
+__PACKAGE__->register_method(
+ method => 'safe_delete',
api_name => 'open-ils.serial.subscription.safe_delete.dry_run',
);
__PACKAGE__->register_method(
method => 'safe_delete',
api_name => 'open-ils.serial.stream.safe_delete.dry_run',
);
+__PACKAGE__->register_method(
+ method => 'safe_delete',
+ api_name => 'open-ils.serial.caption_and_pattern.safe_delete.dry_run',
+);
sub safe_delete {
my( $self, $conn, $authtoken, $id ) = @_;
$obj = $sdist;
+ } elsif ($type eq 'caption_and_pattern') {
+ my $scap = $e->retrieve_serial_caption_and_pattern([
+ $id,
+ { flesh => 1, flesh_fields => { scap => ['subscription'] } }
+ ]) or return $e->die_event;
+
+ return $e->die_event unless
+ $e->allowed("ADMIN_SERIAL_CAPTION_PATTERN", $scap->subscription->owning_lib);
+
+ my $siss = $e->search_serial_issuance({
+ caption_and_pattern => $id
+ });
+
+ return OpenILS::Event->new('SERIAL_CAPTION_AND_PATTERN_HAS_ISSUANCES', payload=>$id)
+ if (@$siss);
+
+ $obj = $scap;
+
} else { # subscription
my $sub = $e->retrieve_serial_subscription([
$id, {
$e->$method($obj) or return $e->die_event;
$e->commit;
}
+
return 1;
}
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_SCAP_SUCCESS_DELETE = "[% l('Deleted serial prediction pattern') %]";
+ s.SERIALS_SCAP_FAIL_DELETE = "[% l('Failed to delete serial prediction pattern') %]";
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') %]";
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_DELETE_SCAP = "[% l('Delete prediction pattern?') %]";
+ s.CONFIRM_DELETE_SCAP_MESSAGE = "[% l('Will delete the prediction pattern if there are no attached issuances.') %]";
s.CONFIRM_CHANGE_ITEMS = {};
s.CONFIRM_CHANGE_ITEMS_MESSAGE = {};
templateUrl: './serials/t_prediction_manager',
controller:
['$scope','$q','egSerialsCoreSvc','egCore','egGridDataProvider',
- '$uibModal','$timeout','$location',
+ '$uibModal','$timeout','$location','egConfirmDialog','ngToast',
function($scope , $q , egSerialsCoreSvc , egCore , egGridDataProvider ,
- $uibModal , $timeout , $location) {
+ $uibModal , $timeout , $location , egConfirmDialog , ngToast) {
$scope.has_pattern_to_import = false;
egSerialsCoreSvc.fetch($scope.bibId).then(function() {
}
$scope.deleteScap = function(pred) {
var scap = egCore.idl.fromTypedHash(pred);
- // TODO ask to confirm
- // TODO check whether there are linked issuances
- egCore.pcrud.remove(scap).then(function() {
- // completely reset the model in order to reset the
- // forms; causes a blink, alas
- $scope.predictions = [];
- egSerialsCoreSvc.fetch($scope.bibId).then(function() {
- reload($scope.ssubId);
- });
+ egConfirmDialog.open(
+ egCore.strings.CONFIRM_DELETE_SCAP,
+ egCore.strings.CONFIRM_DELETE_SCAP_MESSAGE,
+ {}
+ ).result.then(function () {
+ egCore.net.request(
+ 'open-ils.serial',
+ 'open-ils.serial.caption_and_pattern.safe_delete',
+ egCore.auth.token(),
+ scap.id()
+ ).then(function(resp){
+ var evt = egCore.evt.parse(resp);
+ if (evt) {
+ ngToast.danger(egCore.strings.SERIALS_SCAP_FAIL_DELETE + ' : ' + evt.desc);
+ } else {
+ ngToast.success(egCore.strings.SERIALS_SCAP_SUCCESS_DELETE);
+ }
+
+ $scope.predictions = [];
+ egSerialsCoreSvc.fetch($scope.bibId).then(function() {
+ reload($scope.ssubId);
+ });
+ })
});
}
-
$scope.cancelNewScap = function() {
$scope.new_prediction = null;
}