#
# This file is part of Koha.
#
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
+# Koha is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
#
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+# Koha is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License along
-# with Koha; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
-use Carp;
use Koha::Database;
+use Koha::DateUtils qw( dt_from_string );
use Koha::Club;
my $borrower = $params->{borrower};
if ($borrower) {
delete( $params->{borrower} );
- my @enrollments = $borrower->get_club_enrollments();
+ my @enrollments = $borrower->get_club_enrollments->as_list;
if (@enrollments) {
$params->{'me.id'} = { -not_in => [ map { $_->club()->id() } @enrollments ] };
}
}
- my $rs = $self->_resultset()->search( $params, { prefetch => 'club_template' } );
+ my $dtf = Koha::Database->new->schema->storage->datetime_parser;
+
+ # Only clubs with no end date or an end date in the future can be enrolled in
+ $params->{'-and'} = [
+ -or => [
+ date_end => { '>=' => $dtf->format_datetime( dt_from_string() ) },
+ date_end => undef,
+ ],
+ -or => [
+ 'me.branchcode' => $borrower->branchcode,
+ 'me.branchcode' => undef,
+ ]
+ ];
+
+ return $self->search( $params, { prefetch => 'club_template' } );
+}
- if (wantarray) {
- my $class = ref($self) ? ref($self) : $self;
+=head3 filter_out_empty
- return $class->_wrap( $rs->all() );
+ my $filtered_rs = $clubs_rs->filter_out_empty;
- }
- else {
- my $class = ref($self) ? ref($self) : $self;
+Return a new I<Koha::Clubs> resultset, containing only clubs with current enrollments.
- return $class->_new_from_dbic($rs);
- }
+=cut
+
+sub filter_out_empty {
+ my ($self) = @_;
+ return $self->search(
+ {
+ -and => [
+ { 'club_enrollments.club_id' => { '!=' => undef } },
+ { 'club_enrollments.date_canceled' => undef },
+ ]
+ },
+ {
+ join => 'club_enrollments',
+ distinct => 1,
+ }
+ );
}
=head3 type