Bug 33137: Add call number to pay-fines-table and table settings
[srvgit] / patron_lists / list.pl
index 596a2c1..45b11a1 100755 (executable)
@@ -21,24 +21,54 @@ use Modern::Perl;
 
 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 => 0,
         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->multi_param('patrons_to_add');
 if (@patrons_to_add) {