Avoid entering entirely empty library hours
authorDan Scott <dscott@laurentian.ca>
Tue, 19 Dec 2017 17:58:14 +0000 (12:58 -0500)
committerDan Scott <dscott@laurentian.ca>
Tue, 19 Dec 2017 17:58:14 +0000 (12:58 -0500)
If every day is closed, then calculating a due date leads to infinity. Which
wreaks havoc on your database queries...

Signed-off-by: Dan Scott <dscott@laurentian.ca>
tools/daily-scripts/parse_library_hours

index b7a66cf..de30041 100755 (executable)
@@ -148,6 +148,24 @@ my %libs = (
     SoA => 150
 );
 
+# hack to avoid entirely empty weeks
+foreach my $lib ('JWT', 'UoS', 'JND', 'SoA') {
+    my $need_hours = 1;
+    # If we have at least one day with hours, then checkouts will work
+    foreach my $day (0..6) {
+        if ($hours{$lib}{$day}{'open'} ne '00:00:00' or $hours{$lib}{$day}{'close'} ne '00:00:00') {
+            $need_hours = 0;
+        }
+    }
+    if ($need_hours) {
+        # Set a reasonable fallback for calculating due dates
+        foreach my $day (0..4) {
+            $hours{$lib}{$day}{'open'} = '09:00:00';
+            $hours{$lib}{$day}{'close'} = '17:00:00';
+        }
+    }
+}
+
 my $dbh = DBI->connect('dbi:Pg:dbname=;host=;port=5432', 'evergreen');
 foreach my $lib (sort keys %libs) {
     my $stmt = $dbh->prepare("UPDATE actor.hours_of_operation SET dow_0_open = ?, dow_0_close = ?, dow_1_open = ?, dow_1_close = ?, dow_2_open = ?, dow_2_close = ?, dow_3_open = ?, dow_3_close = ?, dow_4_open = ?, dow_4_close = ?, dow_5_open = ?, dow_5_close = ?, dow_6_open = ?, dow_6_close = ? WHERE id = ?");