From 51602a6a7fd1e75d1fa6bb393daf1787ffa67bb0 Mon Sep 17 00:00:00 2001 From: Josef Moravec Date: Mon, 1 Apr 2019 07:56:39 +0000 Subject: [PATCH] Bug 17005: Add checked_in checkouts to REST API response This patch implements parameter 'checked_in' on checkouts endpoint to enable getting circulation history. Test plan: 1) Apply the patch and restart plack 2) Use your favorite REST API tester and play with /checkouts endpoint: - use it without checked_in parameter - use checked_in=1 for getting returned checkouts Signed-off-by: Michal Denar Signed-off-by: Michal Denar --- Koha/REST/V1/Checkouts.pm | 15 +++++++++++++-- Koha/Schema/Result/OldIssue.pm | 5 +++++ api/v1/swagger/definitions/checkout.json | 2 +- api/v1/swagger/paths/checkouts.json | 5 +++++ 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Koha/REST/V1/Checkouts.pm b/Koha/REST/V1/Checkouts.pm index bb349a78ec..b3a0699006 100644 --- a/Koha/REST/V1/Checkouts.pm +++ b/Koha/REST/V1/Checkouts.pm @@ -25,6 +25,7 @@ use C4::Context; use C4::Circulation; use Koha::Checkouts; use Koha::IssuingRules; +use Koha::Old::Checkouts; use Try::Tiny; @@ -44,8 +45,14 @@ List Koha::Checkout objects sub list { my $c = shift->openapi->valid_input or return; + my $checked_in = $c->validation->param('checked_in'); try { - my $checkouts_set = Koha::Checkouts->new; + my $checkouts_set; + if ( $checked_in ) { + $checkouts_set = Koha::Old::Checkouts->new; + } else { + $checkouts_set = Koha::Checkouts->new; + } my $checkouts = $c->objects->search( $checkouts_set, \&_to_model, \&_to_api ); return $c->render( status => 200, openapi => $checkouts ); } catch { @@ -72,7 +79,10 @@ get one checkout sub get { my $c = shift->openapi->valid_input or return; - my $checkout = Koha::Checkouts->find( $c->validation->param('checkout_id') ); + my $checkout_id = $c->validation->param('checkout_id'); + my $checkout = Koha::Checkouts->find( $checkout_id ); + $checkout = Koha::Old::Checkouts->find( $checkout_id ) + unless ($checkout); unless ($checkout) { return $c->render( @@ -251,6 +261,7 @@ our $to_model_mapping = { last_renewed_date => 'lastreneweddate', checkout_date => 'issuedate', note_date => 'notedate', + checked_in => undef, }; 1; diff --git a/Koha/Schema/Result/OldIssue.pm b/Koha/Schema/Result/OldIssue.pm index df84a07e32..f92314276e 100644 --- a/Koha/Schema/Result/OldIssue.pm +++ b/Koha/Schema/Result/OldIssue.pm @@ -236,6 +236,11 @@ __PACKAGE__->belongs_to( # Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-07-23 13:51:40 # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:1f688Osvh/sxg2P/qffZ2g +__PACKAGE__->add_columns( + '+auto_renew' => { is_boolean => 1 }, + '+onsite_checkout' => { is_boolean => 1 } +); + __PACKAGE__->belongs_to( "borrower", "Koha::Schema::Result::Borrower", diff --git a/api/v1/swagger/definitions/checkout.json b/api/v1/swagger/definitions/checkout.json index 83cbe1a447..42b9598843 100644 --- a/api/v1/swagger/definitions/checkout.json +++ b/api/v1/swagger/definitions/checkout.json @@ -23,7 +23,7 @@ }, "checkin_date": { "type": ["string", "null"], - "format": "date", + "format": "date-time", "description": "Date the item was returned" }, "last_renewed_date": { diff --git a/api/v1/swagger/paths/checkouts.json b/api/v1/swagger/paths/checkouts.json index 70791fd28c..45369e2001 100644 --- a/api/v1/swagger/paths/checkouts.json +++ b/api/v1/swagger/paths/checkouts.json @@ -6,6 +6,11 @@ "tags": ["patrons", "checkouts"], "parameters": [{ "$ref": "../parameters.json#/patron_id_qp" + },{ + "name": "checked_in", + "in": "query", + "description": "By default, current checkouts are returned, when this is true then checked in checkouts are returned as result.", + "type": "boolean" }], "produces": [ "application/json" -- 2.11.0