Bug 32437: Add Objects for ImportAuths
[koha-ffzg.git] / circ / curbside_pickups.pl
index 5d2b247..2003197 100755 (executable)
@@ -1,4 +1,4 @@
-#! /usr/bin/perl
+#!/usr/bin/perl
 
 # This file is part of Koha.
 #
@@ -30,7 +30,9 @@ use Koha::Patrons;
 
 my $input       = CGI->new;
 my $op          = $input->param('op') || 'list';
-my $tab         = $input->param('tab'),
+my $tab         = $input->param('tab');
+my $auto_refresh  = $input->param('auto_refresh');
+my $refresh_delay = $input->param('refresh_delay');
 my @messages;
 
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
@@ -38,39 +40,24 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         template_name => "circ/curbside_pickups.tt",
         query         => $input,
         type          => "intranet",
-        flagsrequired => { parameters => 'manage_curbside_pickups' },
+        flagsrequired => { circulate => 'manage_curbside_pickups' },
     }
 );
 
 my $branchcode = C4::Context->userenv()->{'branch'};
 my $libraries = Koha::Libraries->search( {}, { order_by => ['branchname'] } );
 if ( $op eq 'find-patron' ) {
-    my $cardnumber     = $input->param('cardnumber');
     my $borrowernumber = $input->param('borrowernumber');
 
-    my $patron =
-      $cardnumber
-      ? Koha::Patrons->find( { cardnumber => $cardnumber } )
-      : Koha::Patrons->find($borrowernumber);
+    my $patron = Koha::Patrons->find($borrowernumber);
 
-    my $existing_curbside_pickups;
-
-    if ( $patron ){
-        $existing_curbside_pickups = Koha::CurbsidePickups->search(
-            {
-                branchcode                => $branchcode,
-                borrowernumber            => $patron->id,
-                delivered_datetime        => undef,
-                scheduled_pickup_datetime => { '>' => \'DATE(NOW())' },
-            }
-        );
-    } else {
-        push @messages, {
-            type => 'error',
-            code => 'no_patron_found',
-            cardnumber => $cardnumber
-        };
-    }
+    my $existing_curbside_pickups = Koha::CurbsidePickups->search(
+        {
+            branchcode                => $branchcode,
+            borrowernumber            => $patron->id,
+            delivered_datetime        => undef,
+        }
+    )->filter_by_scheduled_today;
 
     $tab = 'schedule-pickup';
     $template->param(
@@ -94,12 +81,38 @@ elsif ( $op eq 'create-pickup' ) {
         )->store;
         $pickup->notify_new_pickup;
     } catch {
-        if ( $_->isa('Koha::Exceptions::CurbsidePickup::TooManyPickups') ) {
+        if ( $_->isa('Koha::Exceptions::CurbsidePickup::NotEnabled') ) {
+            push @messages, {
+                type   => 'error',
+                code   => 'not_enabled',
+            };
+        } elsif ( $_->isa('Koha::Exceptions::CurbsidePickup::LibraryIsClosed') ) {
+            push @messages, {
+                type   => 'error',
+                code   => 'library_is_closed',
+                patron => Koha::Patrons->find($borrowernumber)
+            };
+        } elsif ( $_->isa('Koha::Exceptions::CurbsidePickup::NoWaitingHolds') ) {
+            push @messages, {
+                type   => 'error',
+                code   => 'no_waiting_holds',
+            };
+        } elsif ( $_->isa('Koha::Exceptions::CurbsidePickup::TooManyPickups') ) {
             push @messages, {
                 type   => 'error',
                 code   => 'too_many_pickups',
                 patron => Koha::Patrons->find($borrowernumber)
             };
+        } elsif ( $_->isa('Koha::Exceptions::CurbsidePickup::NoMatchingSlots') ) {
+            push @messages, {
+                type   => 'error',
+                code   => 'no_matching_slots',
+            };
+        } elsif ( $_->isa('Koha::Exceptions::CurbsidePickup::NoMorePickupsAvailable') ) {
+            push @messages, {
+                type   => 'error',
+                code   => 'no_more_pickups_available',
+            };
         } else {
             warn $_;
             push @messages, {
@@ -140,13 +153,15 @@ $template->param(
     messages => \@messages,
     op       => $op,
     tab      => $tab,
+    auto_refresh  => $auto_refresh,
+    refresh_delay => $refresh_delay,
     policy => Koha::CurbsidePickupPolicies->find({ branchcode => $branchcode }),
     curbside_pickups => Koha::CurbsidePickups->search(
         {
-            branchcode                => $branchcode,
-            scheduled_pickup_datetime => { '>' => \'DATE(NOW())' },
-        }
-      ),
+            branchcode => $branchcode,
+        },
+        { order_by => [ { -desc => 'delivered_datetime' }, 'scheduled_pickup_datetime' ], }
+      )->filter_by_scheduled_today,
 );