}
);
+sub fetch_appointments { # returns appointment for user at location
+ my ($self, $conn, $authtoken, $usr, $org) = @_;
+
+ my $e = new_editor(xact => 1, authtoken => $authtoken);
+ return $e->die_event unless $e->checkauth;
+
+ $org ||= $e->requestor->ws_ou;
+
+ return new OpenILS::Event("CURBSIDE_NOT_ALLOWED") unless ($U->is_true(
+ $U->ou_ancestor_setting_value($org, 'circ.curbside')
+ ));
+
+ return new OpenILS::Event("BAD_PARAMS", "desc" => "No user ID supplied") unless $usr;
+
+ my $slots = $e->search_action_curbside([{
+ patron => $usr,
+ delivered => { '=' => undef },
+ org => $org,
+ },{
+ order_by => { acsp => {slot => {direction => 'asc'}} }
+ }]);
+
+ $conn->respond($_) for @$slots;
+ return undef;
+}
+__PACKAGE__->register_method(
+ method => "fetch_appointments",
+ api_name => "open-ils.curbside.open_user_appointments_at_lib",
+ stream => 1,
+ signature => {
+ params => [
+ {type => 'string', desc => 'Authentication token'},
+ {type => 'number', desc => 'Patron ID'},
+ {type => 'number', desc => 'Optional pickup library. If not supplied, taken from WS of session.'},
+ ],
+ return => { desc => 'A stream of appointments that the authenticated user owns'}
+ }
+);
+
sub fetch_holds_for_patron_at_pickup_lib {
my ($self, $conn, $authtoken, $usr, $org) = @_;