View | Details | Raw Unified | Return to bug 16271
Collapse All | Expand All

(-)a/Koha/REST/V1/Hold.pm (-7 / +7 lines)
Lines 23-42 use C4::Biblio; Link Here
23
use C4::Reserves;
23
use C4::Reserves;
24
24
25
use Koha::Patrons;
25
use Koha::Patrons;
26
use Koha::Holds;
26
use Koha::DateUtils;
27
use Koha::DateUtils;
27
28
28
sub list {
29
sub list {
29
    my ($c, $args, $cb) = @_;
30
    my ($c, $args, $cb) = @_;
30
31
31
    my $borrowernumber = $c->param('borrowernumber');
32
    my $params = $c->req->query_params->to_hash;
32
    my $borrower = Koha::Patrons->find($borrowernumber);
33
    my @valid_params = Koha::Holds->_resultset->result_source->columns;
33
    unless ($borrower) {
34
    foreach my $key (keys %$params) {
34
        return $c->$cb({error => "Borrower not found"}, 404);
35
        delete $params->{$key} unless grep { $key eq $_ } @valid_params;
35
    }
36
    }
37
    my $holds = Koha::Holds->search($params)->unblessed;
36
38
37
    my @reserves = C4::Reserves::GetReservesFromBorrowernumber($borrowernumber);
39
    return $c->$cb($holds, 200);
38
39
    return $c->$cb(\@reserves, 200);
40
}
40
}
41
41
42
sub add {
42
sub add {
(-)a/api/v1/swagger.json (-1 / +102 lines)
Lines 80-90 Link Here
80
        "tags": ["borrowers", "holds"],
80
        "tags": ["borrowers", "holds"],
81
        "parameters": [
81
        "parameters": [
82
          {
82
          {
83
            "name": "reserve_id",
84
            "in": "query",
85
            "description": "Internal reserve identifier",
86
            "type": "integer"
87
          },
88
          {
83
            "name": "borrowernumber",
89
            "name": "borrowernumber",
84
            "in": "query",
90
            "in": "query",
85
            "description": "Internal borrower identifier",
91
            "description": "Internal borrower identifier",
86
            "required": true,
87
            "type": "integer"
92
            "type": "integer"
93
          },
94
          {
95
            "name": "reservedate",
96
            "in": "query",
97
            "description": "Reserve date",
98
            "type": "string"
99
          },
100
          {
101
            "name": "biblionumber",
102
            "in": "query",
103
            "description": "Internal biblio identifier",
104
            "type": "integer"
105
          },
106
          {
107
            "name": "branchcode",
108
            "in": "query",
109
            "description": "Branch code",
110
            "type": "string"
111
          },
112
          {
113
            "name": "notificationdate",
114
            "in": "query",
115
            "description": "Notification date",
116
            "type": "string"
117
          },
118
          {
119
            "name": "reminderdate",
120
            "in": "query",
121
            "description": "Reminder date",
122
            "type": "string"
123
          },
124
          {
125
            "name": "cancellationdate",
126
            "in": "query",
127
            "description": "Cancellation date",
128
            "type": "string"
129
          },
130
          {
131
            "name": "reservenotes",
132
            "in": "query",
133
            "description": "Reserve notes",
134
            "type": "string"
135
          },
136
          {
137
            "name": "priority",
138
            "in": "query",
139
            "description": "Priority",
140
            "type": "integer"
141
          },
142
          {
143
            "name": "found",
144
            "in": "query",
145
            "description": "Found status",
146
            "type": "string"
147
          },
148
          {
149
            "name": "timestamp",
150
            "in": "query",
151
            "description": "Time of latest update",
152
            "type": "string"
153
          },
154
          {
155
            "name": "itemnumber",
156
            "in": "query",
157
            "description": "Internal item identifier",
158
            "type": "integer"
159
          },
160
          {
161
            "name": "waitingdate",
162
            "in": "query",
163
            "description": "Date the item was marked as waiting for the patron",
164
            "type": "string"
165
          },
166
          {
167
            "name": "expirationdate",
168
            "in": "query",
169
            "description": "Date the hold expires",
170
            "type": "string"
171
          },
172
          {
173
            "name": "lowestPriority",
174
            "in": "query",
175
            "description": "Lowest priority",
176
            "type": "integer"
177
          },
178
          {
179
            "name": "suspend",
180
            "in": "query",
181
            "description": "Suspended",
182
            "type": "integer"
183
          },
184
          {
185
            "name": "suspend_until",
186
            "in": "query",
187
            "description": "Suspended until",
188
            "type": "string"
88
          }
189
          }
89
        ],
190
        ],
90
        "produces": ["application/json"],
191
        "produces": ["application/json"],
(-)a/t/db_dependent/api/v1/holds.t (-4 / +16 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 30;
20
use Test::More tests => 39;
21
use Test::Mojo;
21
use Test::Mojo;
22
22
23
use DateTime;
23
use DateTime;
Lines 56-61 my $borrowernumber2 = $borrower2->borrowernumber; Link Here
56
my $biblionumber = create_biblio('RESTful Web APIs');
56
my $biblionumber = create_biblio('RESTful Web APIs');
57
my $itemnumber = create_item($biblionumber, 'TEST000001');
57
my $itemnumber = create_item($biblionumber, 'TEST000001');
58
58
59
$dbh->do('DELETE FROM reserves');
60
59
my $reserve_id = C4::Reserves::AddReserve($branchcode, $borrowernumber,
61
my $reserve_id = C4::Reserves::AddReserve($branchcode, $borrowernumber,
60
    $biblionumber, undef, 1, undef, undef, undef, '', $itemnumber);
62
    $biblionumber, undef, 1, undef, undef, undef, '', $itemnumber);
61
63
Lines 63-68 my $reserve_id = C4::Reserves::AddReserve($branchcode, $borrowernumber, Link Here
63
C4::Reserves::AddReserve($branchcode, $borrowernumber2,
65
C4::Reserves::AddReserve($branchcode, $borrowernumber2,
64
    $biblionumber, undef, 2, undef, undef, undef, '', $itemnumber);
66
    $biblionumber, undef, 2, undef, undef, undef, '', $itemnumber);
65
67
68
$t->get_ok('/api/v1/holds')
69
    ->status_is(200)
70
    ->json_has('/0')
71
    ->json_has('/1')
72
    ->json_hasnt('/2');
73
74
$t->get_ok('/api/v1/holds?priority=2')
75
    ->status_is(200)
76
    ->json_is('/0/borrowernumber', $borrowernumber2)
77
    ->json_hasnt('/1');
78
66
my $suspend_until = DateTime->now->add(days => 10)->ymd;
79
my $suspend_until = DateTime->now->add(days => 10)->ymd;
67
my $put_data = {
80
my $put_data = {
68
    priority => 2,
81
    priority => 2,
Lines 92-99 $t->get_ok("/api/v1/holds?borrowernumber=$borrowernumber") Link Here
92
105
93
my $inexisting_borrowernumber = $borrowernumber2 + 1;
106
my $inexisting_borrowernumber = $borrowernumber2 + 1;
94
$t->get_ok("/api/v1/holds?borrowernumber=$inexisting_borrowernumber")
107
$t->get_ok("/api/v1/holds?borrowernumber=$inexisting_borrowernumber")
95
  ->status_is(404)
108
  ->status_is(200)
96
  ->json_has('/error');
109
  ->json_is([]);
97
110
98
$dbh->do('DELETE FROM issuingrules');
111
$dbh->do('DELETE FROM issuingrules');
99
$dbh->do(q{
112
$dbh->do(q{
100
- 

Return to bug 16271