From 47260a8aab85d289af030016a7346d990e494df0 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 Signed-off-by: Michal Denar Signed-off-by: Tomas Cohen Arazi --- 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..aa48d148ef 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 { + my $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 9ce3a7479d..f1ff5c2fa6 100644 --- a/Koha/Schema/Result/OldIssue.pm +++ b/Koha/Schema/Result/OldIssue.pm @@ -237,6 +237,11 @@ __PACKAGE__->belongs_to( # Created by DBIx::Class::Schema::Loader v0.07046 @ 2019-04-10 19:55:44 # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:E2N2paWcCHg916100ry+2A +__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 7d89e3c534..e0642d0c8d 100644 --- a/api/v1/swagger/paths/checkouts.json +++ b/api/v1/swagger/paths/checkouts.json @@ -10,6 +10,11 @@ "$ref": "../parameters.json#/page" }, { "$ref": "../parameters.json#/per_page" + },{ + "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.23.0