From 9b6b310e2eb10d713f53f413ca5b9f03815b6ebb Mon Sep 17 00:00:00 2001
From: Birte Kristina Friesel <derf@finalrewind.org>
Date: Mon, 28 Oct 2024 20:25:18 +0100
Subject: Use the correct stop instance when checking in to ring lines

---
 lib/Travelynx.pm                      | 10 +++++++++-
 lib/Travelynx/Controller/Traveling.pm |  6 ++++--
 2 files changed, 13 insertions(+), 3 deletions(-)

(limited to 'lib')

diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index f9199a5..e154e8d 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -441,6 +441,7 @@ sub startup {
 
 			my $station  = $opt{station};
 			my $train_id = $opt{train_id};
+			my $ts       = $opt{ts};
 			my $uid      = $opt{uid} // $self->current_user->{id};
 			my $db       = $opt{db}  // $self->pg->db;
 			my $hafas;
@@ -534,6 +535,7 @@ sub startup {
 
 			my $station  = $opt{station};
 			my $train_id = $opt{train_id};
+			my $ts       = $opt{ts};
 			my $uid      = $opt{uid} // $self->current_user->{id};
 			my $db       = $opt{db}  // $self->pg->db;
 			my $hafas;
@@ -553,7 +555,13 @@ sub startup {
 							or $stop->loc->eva == $station )
 						{
 							$found = $stop;
-							last;
+
+							# Lines may serve the same stop several times.
+							# Keep looking until the scheduled departure
+							# matches the one passed while checking in.
+							if ( $ts and $stop->sched_dep->epoch == $ts ) {
+								last;
+							}
 						}
 					}
 					if ( not $found ) {
diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm
index 3151d42..bbd85b6 100755
--- a/lib/Travelynx/Controller/Traveling.pm
+++ b/lib/Travelynx/Controller/Traveling.pm
@@ -650,7 +650,8 @@ sub travel_action {
 				return $self->checkin_p(
 					hafas    => $params->{hafas},
 					station  => $params->{station},
-					train_id => $params->{train}
+					train_id => $params->{train},
+					ts       => $params->{ts},
 				);
 			}
 		)->then(
@@ -789,7 +790,8 @@ sub travel_action {
 		$self->checkin_p(
 			hafas    => $params->{hafas},
 			station  => $params->{station},
-			train_id => $params->{train}
+			train_id => $params->{train},
+			ts       => $params->{ts},
 		)->then(
 			sub {
 				$self->render(
-- 
cgit v1.2.3