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

(-)a/Koha/REST/V1/Holds.pm (-1 / +76 lines)
Lines 270-275 sub delete { Link Here
270
    return $c->render( status => 200, openapi => {} );
270
    return $c->render( status => 200, openapi => {} );
271
}
271
}
272
272
273
=head3 suspend
274
275
Method that handles suspending a hold
276
277
=cut
278
279
sub suspend {
280
    my $c = shift->openapi->valid_input or return;
281
282
    my $hold_id  = $c->validation->param('hold_id');
283
    my $hold     = Koha::Holds->find($hold_id);
284
    my $body     = $c->req->json;
285
    my $exp_date = ($body) ? $body->{expiration_date} : undef;
286
287
    unless ($hold) {
288
        return $c->render( status => 404, openapi => { error => 'Hold not found.' } );
289
    }
290
291
    return try {
292
        my $date = ($exp_date) ? dt_from_string( $exp_date, 'rfc3339' ) : undef;
293
        $hold->suspend_hold($date);
294
        $hold->discard_changes;
295
        $c->res->headers->location( $c->req->url->to_string );
296
        return $c->render(
297
            status  => 201,
298
            openapi => {
299
                expiration_date => output_pref(
300
                    {   dt         => dt_from_string( $hold->suspend_until ),
301
                        dateformat => 'rfc3339',
302
                        dateonly   => 1
303
                    }
304
                )
305
            }
306
        );
307
    }
308
    catch {
309
        if ( blessed $_ and $_->isa('Koha::Exceptions::Hold::CannotSuspendFound') ) {
310
            return $c->render( status => 400, openapi => { error => "$_" } );
311
        }
312
        else {
313
            return $c->render(
314
                status  => 500,
315
                openapi => { error => "Something went wrong. check the logs." }
316
            );
317
        }
318
    };
319
}
320
321
=head3 resume
322
323
Method that handles resuming a hold
324
325
=cut
326
327
sub resume {
328
    my $c = shift->openapi->valid_input or return;
329
330
    my $hold_id = $c->validation->param('hold_id');
331
    my $hold    = Koha::Holds->find($hold_id);
332
    my $body    = $c->req->json;
333
334
    unless ($hold) {
335
        return $c->render( status => 404, openapi => { error => 'Hold not found.' } );
336
    }
337
338
    return try {
339
        $hold->resume;
340
        return $c->render( status => 204, openapi => {} );
341
    }
342
    catch {
343
        return $c->render(
344
            status  => 500,
345
            openapi => { error => "Something went wrong. check the logs." }
346
        );
347
    };
348
}
273
349
274
=head3 _to_api
350
=head3 _to_api
275
351
276
- 

Return to bug 22206