diff --git a/Koha/Patron.pm b/Koha/Patron.pm index 7a70ecc2dd..cd17d175f2 100644 --- a/Koha/Patron.pm +++ b/Koha/Patron.pm @@ -44,6 +44,7 @@ use Koha::Patron::Debarments; use Koha::Patron::HouseboundProfile; use Koha::Patron::HouseboundRole; use Koha::Patron::Images; +use Koha::Patron::Messages; use Koha::Patron::Modifications; use Koha::Patron::Relationships; use Koha::Patrons; @@ -1625,6 +1626,20 @@ sub extended_attributes { return Koha::Patron::Attributes->_new_from_dbic($rs)->search; } +=head3 messages + + my $messages = $patron->messages; + +Return the message attached to the patron. + +=cut + +sub messages { + my ( $self ) = @_; + my $messages_rs = $self->_result->messages_borrowernumbers->search; + return Koha::Patron::Messages->_new_from_dbic($messages_rs); +} + =head3 lock Koha::Patrons->find($id)->lock({ expire => 1, remove => 1 }); diff --git a/circ/circulation.pl b/circ/circulation.pl index 705ac45ac5..4aedccb24c 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -51,7 +51,6 @@ use Koha::Plugins; use Koha::Database; use Koha::BiblioFrameworks; use Koha::Items; -use Koha::Patron::Messages; use Koha::SearchEngine; use Koha::SearchEngine::Search; use Koha::Patron::Modifications; @@ -523,10 +522,8 @@ if ( $patron ) { } } -my $patron_messages = Koha::Patron::Messages->search( - { - 'me.borrowernumber' => $borrowernumber, - }, +my $patron_messages = $patron->messages->search( + {}, { join => 'manager', '+select' => ['manager.surname', 'manager.firstname' ], @@ -579,7 +576,7 @@ if ($restoreduedatespec || $stickyduedate) { } $template->param( - patron_messages => $patron_messages, + patron_messages => $patron_messages, borrowernumber => $borrowernumber, branch => $branch, was_renewed => scalar $query->param('was_renewed') ? 1 : 0, diff --git a/t/db_dependent/Koha/Patron.t b/t/db_dependent/Koha/Patron.t index f0724766fc..1195a63733 100755 --- a/t/db_dependent/Koha/Patron.t +++ b/t/db_dependent/Koha/Patron.t @@ -19,7 +19,7 @@ use Modern::Perl; -use Test::More tests => 11; +use Test::More tests => 12; use Test::Exception; use Test::Warn; @@ -895,3 +895,32 @@ subtest 'safe_to_delete() tests' => sub { $schema->storage->txn_rollback; }; + +subtest 'messages' => sub { + plan tests => 4; + + $schema->storage->txn_begin; + + my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); + my $messages = $patron->messages; + is( $messages->count, 0, "No message yet" ); + my $message_1 = $builder->build_object( + { + class => 'Koha::Patron::Messages', + value => { borrowernumber => $patron->borrowernumber } + } + ); + my $message_2 = $builder->build_object( + { + class => 'Koha::Patron::Messages', + value => { borrowernumber => $patron->borrowernumber } + } + ); + + $messages = $patron->messages; + is( $messages->count, 2, "There are two messages for this patron" ); + is( $messages->next->message, $message_1->message ); + is( $messages->next->message, $message_2->message ); + + $schema->storage->txn_rollback; +};