added support for passing in key/val pairs for hold update, instead of the entire...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 23 Oct 2009 18:43:57 +0000 (18:43 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 23 Oct 2009 18:43:57 +0000 (18:43 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@14583 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Circ/Holds.pm

index 7a34a66..b0cab5b 100644 (file)
@@ -604,11 +604,50 @@ __PACKAGE__->register_method(
        on the hold, the requestor must have UPDATE_HOLDS permissions.
        NOTE
 
-sub update_hold {
-       my($self, $client, $auth, $hold) = @_;
+__PACKAGE__->register_method(
+       method  => "batch_update_hold",
+       api_name        => "open-ils.circ.hold.update.batch",
+       notes           => <<"  NOTE");
+       Updates the specified hold.  The login session
+       is the requestor and if the requestor is different from the usr field
+       on the hold, the requestor must have UPDATE_HOLDS permissions.
+       NOTE
 
+sub update_hold {
+       my($self, $client, $auth, $hold, $values) = @_;
     my $e = new_editor(authtoken=>$auth, xact=>1);
     return $e->die_event unless $e->checkauth;
+    my $resp = update_hold_impl($self, $e, $hold, $values);
+    return $resp if $U->event_code($resp);
+    $e->commit;
+    return $resp;
+}
+
+sub batch_update_hold {
+       my($self, $client, $auth, $hold_list, $values_list) = @_;
+    my $e = new_editor(authtoken=>$auth, xact => 1);
+    return $e->die_event unless $e->checkauth;
+
+    my $count = ($hold_list) ? scalar(@$hold_list) : scalar(@$values_list);
+    $hold_list ||= [];
+    $values_list ||= [];
+    for my $idx (0..$count-1) {
+        my $resp = update_hold_impl($self, $e, $hold_list->[$idx], $values_list->[$idx]);
+        return $resp if $U->event_code($resp);
+    }
+
+    $e->commit;
+    return 1;
+}
+
+sub update_hold_impl {
+    my($self, $e, $hold, $values) = @_;
+
+    unless($hold) {
+        $hold = $e->retrieve_action_hold_request($values->{id})
+            or return $e->die_event;
+        $hold->$_($values->{$_}) for keys %$values;
+    }
 
     my $orig_hold = $e->retrieve_action_hold_request($hold->id)
         or return $e->die_event;