use Modern::Perl;
-use CGI;
+use CGI qw ( -utf8 );
-use C4::Auth;
-use C4::Output;
-use Koha::List::Patron;
+use C4::Auth qw( get_template_and_user );
+use C4::Output qw( output_html_with_http_headers );
+use Koha::List::Patron qw(
+ AddPatronsToList
+ DelPatronsFromList
+ GetPatronLists
+);
+use List::MoreUtils qw( uniq );
-my $cgi = new CGI;
+my $cgi = CGI->new;
my ( $template, $logged_in_user, $cookie ) = get_template_and_user(
{
template_name => "patron_lists/list.tt",
query => $cgi,
type => "intranet",
- authnotrequired => 1,
+ flagsrequired => { tools => 'manage_patron_lists' },
}
);
my ($list) =
- GetPatronLists( { patron_list_id => $cgi->param('patron_list_id') } );
+ GetPatronLists( { patron_list_id => scalar $cgi->param('patron_list_id') } );
+
+my @existing = $list->patron_list_patrons;
+
+my $patrons_by_id = $cgi->param('patrons_by_id');
+my $id_column = $cgi->param('id_column');
+
+if ( $patrons_by_id ){
+ push my @patrons_list, uniq( split(/\s\n/, $patrons_by_id) );
+ my %add_params;
+ $add_params{list} = $list;
+ $add_params{ $id_column } = \@patrons_list;
+ my @results = AddPatronsToList(\%add_params);
+ my $id = $id_column eq 'borrowernumbers' ? 'borrowernumber' : 'cardnumber';
+ my %found = map { $_->borrowernumber->$id => 1 } @results;
+ my %exist = map { $_->borrowernumber->$id => 1 } @existing;
+ my (@not_found, @existed);
+ foreach my $patron ( @patrons_list ){
+ push (@not_found, $patron) unless defined $found{$patron};
+ push (@existed, $patron) if defined $exist{$patron};
+ }
+ $template->param(
+ not_found => \@not_found,
+ existed => \@existed,
+ id_column => $id_column,
+ );
+}
-my @patrons_to_add = $cgi->param('patrons_to_add');
+my @patrons_to_add = $cgi->multi_param('patrons_to_add');
if (@patrons_to_add) {
AddPatronsToList( { list => $list, cardnumbers => \@patrons_to_add } );
}
-my @patrons_to_remove = $cgi->param('patrons_to_remove');
+my @patrons_to_remove = $cgi->multi_param('patrons_to_remove');
if (@patrons_to_remove) {
DelPatronsFromList( { list => $list, patron_list_patrons => \@patrons_to_remove } );
}