Bug 33290: Fix incorrect variable in http-client.js
[koha-ffzg.git] / patron_lists / list.pl
index 217c78c..45b11a1 100755 (executable)
 
 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 } );
 }