@@ -, +, @@ $ kshell k$ prove t/db_dependent/api/v1/patrons.t --- Koha/Patron.pm | 24 ++++++++++++++++++++++++ Koha/REST/V1/Patrons.pm | 9 +++------ 2 files changed, 27 insertions(+), 6 deletions(-) --- a/Koha/Patron.pm +++ a/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 --- a/Koha/REST/V1/Patrons.pm +++ a/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') ) { --