|
Lines 28-34
use Koha::Holds;
Link Here
|
| 28 |
use Koha::DateUtils; |
28 |
use Koha::DateUtils; |
| 29 |
|
29 |
|
| 30 |
sub list { |
30 |
sub list { |
| 31 |
my ($c, $args, $cb) = @_; |
31 |
my $c = shift->openapi->valid_input or return; |
| 32 |
|
32 |
|
| 33 |
my $params = $c->req->query_params->to_hash; |
33 |
my $params = $c->req->query_params->to_hash; |
| 34 |
my @valid_params = Koha::Holds->_resultset->result_source->columns; |
34 |
my @valid_params = Koha::Holds->_resultset->result_source->columns; |
|
Lines 37-47
sub list {
Link Here
|
| 37 |
} |
37 |
} |
| 38 |
my $holds = Koha::Holds->search($params); |
38 |
my $holds = Koha::Holds->search($params); |
| 39 |
|
39 |
|
| 40 |
return $c->$cb($holds, 200); |
40 |
return $c->render(status => 200, openapi => $holds); |
| 41 |
} |
41 |
} |
| 42 |
|
42 |
|
| 43 |
sub add { |
43 |
sub add { |
| 44 |
my ($c, $args, $cb) = @_; |
44 |
my $c = shift->openapi->valid_input or return; |
| 45 |
|
45 |
|
| 46 |
my $body = $c->req->json; |
46 |
my $body = $c->req->json; |
| 47 |
|
47 |
|
|
Lines 52-69
sub add {
Link Here
|
| 52 |
my $expirationdate = $body->{expirationdate}; |
52 |
my $expirationdate = $body->{expirationdate}; |
| 53 |
my $borrower = Koha::Patrons->find($borrowernumber); |
53 |
my $borrower = Koha::Patrons->find($borrowernumber); |
| 54 |
unless ($borrower) { |
54 |
unless ($borrower) { |
| 55 |
return $c->$cb({error => "Borrower not found"}, 404); |
55 |
return $c->render( status => 404, |
|
|
56 |
openapi => {error => "Borrower not found"} ); |
| 56 |
} |
57 |
} |
| 57 |
|
58 |
|
| 58 |
unless ($biblionumber or $itemnumber) { |
59 |
unless ($biblionumber or $itemnumber) { |
| 59 |
return $c->$cb({ |
60 |
return $c->render( status => 400, openapi => { |
| 60 |
error => "At least one of biblionumber, itemnumber should be given" |
61 |
error => "At least one of biblionumber, itemnumber should be given" |
| 61 |
}, 400); |
62 |
} ); |
| 62 |
} |
63 |
} |
| 63 |
unless ($branchcode) { |
64 |
unless ($branchcode) { |
| 64 |
return $c->$cb({ |
65 |
return $c->render( status => 400, |
| 65 |
error => "Branchcode is required" |
66 |
openapi => { error => "Branchcode is required" } ); |
| 66 |
}, 400); |
|
|
| 67 |
} |
67 |
} |
| 68 |
|
68 |
|
| 69 |
my $biblio; |
69 |
my $biblio; |
|
Lines 71-79
sub add {
Link Here
|
| 71 |
my $item = Koha::Items->find( $itemnumber ); |
71 |
my $item = Koha::Items->find( $itemnumber ); |
| 72 |
$biblio = $item->biblio; |
72 |
$biblio = $item->biblio; |
| 73 |
if ($biblionumber and $biblionumber != $biblio->biblionumber) { |
73 |
if ($biblionumber and $biblionumber != $biblio->biblionumber) { |
| 74 |
return $c->$cb({ |
74 |
return $c->render( |
| 75 |
error => "Item $itemnumber doesn't belong to biblio $biblionumber" |
75 |
status => 400, |
| 76 |
}, 400); |
76 |
openapi => { |
|
|
77 |
error => "Item $itemnumber doesn't belong to biblio $biblionumber" |
| 78 |
}); |
| 77 |
} |
79 |
} |
| 78 |
$biblionumber ||= $biblio->biblionumber; |
80 |
$biblionumber ||= $biblio->biblionumber; |
| 79 |
} else { |
81 |
} else { |
|
Lines 86-94
sub add {
Link Here
|
| 86 |
: CanBookBeReserved( $borrowernumber, $biblionumber ); |
88 |
: CanBookBeReserved( $borrowernumber, $biblionumber ); |
| 87 |
|
89 |
|
| 88 |
unless ($can_reserve eq 'OK') { |
90 |
unless ($can_reserve eq 'OK') { |
| 89 |
return $c->$cb({ |
91 |
return $c->render( status => 403, openapi => { |
| 90 |
error => "Reserve cannot be placed. Reason: $can_reserve" |
92 |
error => "Reserve cannot be placed. Reason: $can_reserve" |
| 91 |
}, 403); |
93 |
} ); |
| 92 |
} |
94 |
} |
| 93 |
|
95 |
|
| 94 |
my $priority = C4::Reserves::CalculatePriority($biblionumber); |
96 |
my $priority = C4::Reserves::CalculatePriority($biblionumber); |
|
Lines 104-127
sub add {
Link Here
|
| 104 |
$biblio->title, $itemnumber); |
106 |
$biblio->title, $itemnumber); |
| 105 |
|
107 |
|
| 106 |
unless ($reserve_id) { |
108 |
unless ($reserve_id) { |
| 107 |
return $c->$cb({ |
109 |
return $c->render( status => 500, openapi => { |
| 108 |
error => "Error while placing reserve. See Koha logs for details." |
110 |
error => "Error while placing reserve. See Koha logs for details." |
| 109 |
}, 500); |
111 |
} ); |
| 110 |
} |
112 |
} |
| 111 |
|
113 |
|
| 112 |
my $reserve = Koha::Holds->find($reserve_id); |
114 |
my $reserve = Koha::Holds->find($reserve_id); |
| 113 |
|
115 |
|
| 114 |
return $c->$cb($reserve, 201); |
116 |
return $c->render( status => 201, openapi => $reserve ); |
| 115 |
} |
117 |
} |
| 116 |
|
118 |
|
| 117 |
sub edit { |
119 |
sub edit { |
| 118 |
my ($c, $args, $cb) = @_; |
120 |
my $c = shift->openapi->valid_input or return; |
| 119 |
|
121 |
|
| 120 |
my $reserve_id = $args->{reserve_id}; |
122 |
my $reserve_id = $c->validation->param('reserve_id'); |
| 121 |
my $reserve = C4::Reserves::GetReserve($reserve_id); |
123 |
my $reserve = C4::Reserves::GetReserve($reserve_id); |
| 122 |
|
124 |
|
| 123 |
unless ($reserve) { |
125 |
unless ($reserve) { |
| 124 |
return $c->$cb({error => "Reserve not found"}, 404); |
126 |
return $c->render( status => 404, |
|
|
127 |
openapi => {error => "Reserve not found"} ); |
| 125 |
} |
128 |
} |
| 126 |
|
129 |
|
| 127 |
my $body = $c->req->json; |
130 |
my $body = $c->req->json; |
|
Lines 144-165
sub edit {
Link Here
|
| 144 |
C4::Reserves::ModReserve($params); |
147 |
C4::Reserves::ModReserve($params); |
| 145 |
$reserve = Koha::Holds->find($reserve_id); |
148 |
$reserve = Koha::Holds->find($reserve_id); |
| 146 |
|
149 |
|
| 147 |
return $c->$cb($reserve, 200); |
150 |
return $c->render( status => 200, openapi => $reserve ); |
| 148 |
} |
151 |
} |
| 149 |
|
152 |
|
| 150 |
sub delete { |
153 |
sub delete { |
| 151 |
my ($c, $args, $cb) = @_; |
154 |
my $c = shift->openapi->valid_input or return; |
| 152 |
|
155 |
|
| 153 |
my $reserve_id = $args->{reserve_id}; |
156 |
my $reserve_id = $c->validation->param('reserve_id'); |
| 154 |
my $reserve = C4::Reserves::GetReserve($reserve_id); |
157 |
my $reserve = C4::Reserves::GetReserve($reserve_id); |
| 155 |
|
158 |
|
| 156 |
unless ($reserve) { |
159 |
unless ($reserve) { |
| 157 |
return $c->$cb({error => "Reserve not found"}, 404); |
160 |
return $c->render( status => 404, openapi => {error => "Reserve not found"} ); |
| 158 |
} |
161 |
} |
| 159 |
|
162 |
|
| 160 |
C4::Reserves::CancelReserve({ reserve_id => $reserve_id }); |
163 |
C4::Reserves::CancelReserve({ reserve_id => $reserve_id }); |
| 161 |
|
164 |
|
| 162 |
return $c->$cb({}, 200); |
165 |
return $c->render( status => 200, openapi => {} ); |
| 163 |
} |
166 |
} |
| 164 |
|
167 |
|
| 165 |
1; |
168 |
1; |