From 4b6049cd1ae479b8c2c6ea54ae2ae60d2cd20831 Mon Sep 17 00:00:00 2001
From: Birte Kristina Friesel <derf@finalrewind.org>
Date: Mon, 26 Aug 2024 17:47:38 +0200
Subject: integritycheck: list journeys affected by #159

---
 lib/Travelynx/Command/integritycheck.pm | 43 +++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

(limited to 'lib')

diff --git a/lib/Travelynx/Command/integritycheck.pm b/lib/Travelynx/Command/integritycheck.pm
index 4894c3d..a0869a4 100644
--- a/lib/Travelynx/Command/integritycheck.pm
+++ b/lib/Travelynx/Command/integritycheck.pm
@@ -103,9 +103,52 @@ sub run {
 			}
 		}
 	}
+
 	if ($found) {
 		say '------------8<----------';
 		say '';
+		$found = 0;
+	}
+
+	$res = $db->select(
+		'journeys_str',
+		[ 'journey_id', 'sched_arr_ts', 'route', 'arr_name', 'arr_eva' ],
+		{ backend_id => 0 }
+	)->expand;
+	journey: while ( my $j = $res->hash ) {
+		my $found_in_route;
+		my $found_arr;
+		for my $stop ( @{ $j->{route} // [] } ) {
+			if ( not $stop->[1] ) {
+				next journey;
+			}
+			if ( $stop->[1] == $j->{arr_eva} ) {
+				$found_in_route = 1;
+				last;
+			}
+			if (    $stop->[2]{sched_arr}
+				and $j->{sched_arr_ts}
+				and $stop->[2]{sched_arr} == int( $j->{sched_arr_ts} ) )
+			{
+				$found_arr = $stop;
+			}
+		}
+		if ( $found_arr and not $found_in_route ) {
+			if ( not $found ) {
+				say q{};
+				say
+'The following journeys have route entries which do not agree with checkout EVA ID.';
+				say
+'checkout station ID (left) vs route entry with matching checkout time (right)';
+				say '------------8<----------';
+				$found = 1;
+			}
+			printf(
+				"%7d  %d (%s) vs %d (%s)\n",
+				$j->{journey_id}, $j->{arr_eva}, $j->{arr_name},
+				$found_arr->[1],  $found_arr->[0]
+			);
+		}
 	}
 }
 
-- 
cgit v1.2.3