From f567da211f7183794c2f237a593541640248253f Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Tue, 12 Nov 2019 10:00:14 -0300 Subject: [PATCH] Bug 23893: Use in /patrons This patch makes the patrons endpoint use the new methods from Koha::Object. To test: 1. Apply this patch 2. Run: $ kshell k$ prove t/db_dependent/api/v1/patrons.t => SUCCESS: Tests pass! 3. Sign off :-D Signed-off-by: Josef Moravec Signed-off-by: Tomas Cohen Arazi Signed-off-by: Kyle M Hall --- Koha/Patron.pm | 24 ++++++++++++++++++++++++ Koha/REST/V1/Patrons.pm | 9 +++------ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 27e552a48c..b574b5f32b 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -1565,6 +1565,30 @@ sub to_api { return $json_patron; } +sub attributes_from_api { + my ( $self, $attrs ) = @_; + + $attrs = $self->SUPER::attributes_from_api( $attrs ); + + if ( exists $attrs->{lost} ) { + $attrs->{lost} = ($attrs->{lost}) ? 1 : 0; + } + + if ( exists $attrs->{ gonenoaddress} ) { + $attrs->{gonenoaddress} = ($attrs->{gonenoaddress}) ? 1 : 0; + } + + if ( exists $attrs->{lastseen} ) { + $attrs->{lastseen} = output_pref({ str => $attrs->{lastseen}, dateformat => 'sql' }); + } + + if ( exists $attrs->{updated_on} ) { + $attrs->{updated_on} = output_pref({ str => $attrs->{updated_on}, dateformat => 'sql' }); + } + + return $attrs; +} + =head3 to_api_mapping This method returns the mapping for representing a Koha::Patron object diff --git a/Koha/REST/V1/Patrons.pm b/Koha/REST/V1/Patrons.pm index dfd5cb3486..ecfbcf117e 100644 --- a/Koha/REST/V1/Patrons.pm +++ b/Koha/REST/V1/Patrons.pm @@ -123,9 +123,7 @@ sub add { return try { - my $body = _to_model( $c->validation->param('body') ); - - my $patron = Koha::Patron->new( _to_model($body) )->store; + my $patron = Koha::Patron->new_from_api( $c->validation->param('body') )->store; $c->res->headers->location( $c->req->url->to_string . '/' . $patron->borrowernumber ); return $c->render( @@ -196,11 +194,10 @@ sub update { } return try { - my $body = _to_model($c->validation->param('body')); - $patron->set($body)->store; + $patron->set_from_api($c->validation->param('body'))->store; $patron->discard_changes; - return $c->render( status => 200, openapi => $patron ); + return $c->render( status => 200, openapi => $patron->to_api ); } catch { unless ( blessed $_ && $_->can('rethrow') ) { -- 2.21.0 (Apple Git-122.2)