Unverified Commit 12f25a07 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

add_route_timestamps, get_tripid: Verify _all_ matches; use EVA IDs as well

parent 17d433b5
Loading
Loading
Loading
Loading
+18 −5
Original line number Diff line number Diff line
@@ -747,7 +747,8 @@ sub startup {

					# mustn't be called during a transaction
					if ( not $opt{in_transaction} ) {
						$self->add_route_timestamps( $uid, $train, 1 );

						# $self->add_route_timestamps( uid => $uid, train => $train );
						$self->add_wagonorder(
							uid          => $uid,
							train_id     => $train->train_id,
@@ -1705,7 +1706,13 @@ sub startup {
					}
					if ( not $opt{in_transaction} ) {
						$self->run_hook( $uid, 'update' );
						$self->add_route_timestamps( $uid, $train, 0, 1 );
						$self->add_route_timestamps(
							uid             => $uid,
							train           => $train,
							update_polyline => 1,
							from_eva        => $dep_eva,
							to_eva          => $arr_eva
						);
						$self->add_wagonorder(
							uid        => $uid,
							train_id   => $train->train_id,
@@ -2087,9 +2094,11 @@ sub startup {
	# HAFAS already has all relevant information.
	$self->helper(
		'add_route_timestamps' => sub {
			my ( $self, $uid, $train, $is_departure, $update_polyline ) = @_;
			my ( $self, %opt ) = @_;

			$uid //= $self->current_user->{id};
			my $uid             = $opt{uid} // $self->current_user->{id};
			my $train           = $opt{train};
			my $update_polyline = $opt{update_polyline};

			my $db = $self->pg->db;

@@ -2116,7 +2125,11 @@ sub startup {
				  = Mojo::Promise->resolve( $in_transit->{data}{trip_id} );
			}
			else {
				$tripid_promise = $self->hafas->get_tripid_p( train => $train );
				$tripid_promise = $self->hafas->get_tripid_p(
					train    => $train,
					from_eva => $opt{from_eva},
					to_eva   => $opt{to_eva}
				);
			}

			$tripid_promise->then(
+11 −3
Original line number Diff line number Diff line
@@ -703,7 +703,12 @@ sub run {
						}
					}
					else {
						$self->app->add_route_timestamps( $uid, $train, 1 );
						$self->app->add_route_timestamps(
							uid      => $uid,
							train    => $train,
							from_eva => $dep,
							to_eva   => $arr
						);
						$self->app->add_wagonorder(
							uid          => $uid,
							train_id     => $train->train_id,
@@ -781,8 +786,11 @@ sub run {
					}
					else {
						$self->app->add_route_timestamps(
							$uid, $train, 0,
							(
							uid             => $uid,
							train           => $train,
							from_eva        => $dep,
							to_eva          => $arr,
							update_polyline => (
								defined $entry->{real_arr_ts}
								  and $now->epoch > $entry->{real_arr_ts}
							) ? 1 : 0
+21 −8
Original line number Diff line number Diff line
@@ -165,17 +165,30 @@ sub get_tripid_p {
			$self->{log}
			  ->debug("get_tripid_p($old_desc -> $train_desc): success");

			my $result = $results[0];
			if ( @results > 1 ) {
			for my $journey (@results) {
					if ( ( $journey->route )[0]->loc->name eq $train->origin ) {
						$result = $journey;
						last;
				if (
					List::Util::any { $_->loc->eva == $opt{from_eva} }
					$journey->route
					and List::Util::any { $_->loc->eva == $opt{to_eva} }
					$journey->route
				  )
				{
					$promise->resolve( $journey->id );
					return;
				}
			}

			for my $journey (@results) {
				if ( ( $journey->route )[0]->loc->name eq $train->origin ) {
					$promise->resolve( $journey->id );
					return;
				}
			}

			$promise->resolve( $result->id );
			my $num_trips = scalar @results;
			$promise->reject(
"get_tripid_p($old_desc -> $train_desc): found no matches in $num_trips trips"
			);
			return;
		}
	)->catch(