Unverified Commit 1184d848 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

always use HAFAS for traewelling → travelynx

parent c133815f
Loading
Loading
Loading
Loading
+50 −199
Original line number Diff line number Diff line
@@ -1958,14 +1958,11 @@ sub startup {
				return $promise->resolve;
			}

			if ( $traewelling->{category}
				!~ m{^ (?: national .* | regional .* | suburban ) $ }x )
			{

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

				$self->checkin_p(
			$self->_checkin_hafas_p(
				hafas          => 'DB',
				station        => $traewelling->{dep_eva},
				train_id       => $traewelling->{trip_id},
				uid            => $uid,
@@ -1974,7 +1971,8 @@ sub startup {
			)->then(
				sub {
					$self->log->debug("... handled origin");
						return $self->checkout_p(
					return $self->_checkout_hafas_p(
						hafas          => 'DB',
						station        => $traewelling->{arr_eva},
						train_id       => $traewelling->{trip_id},
						uid            => $uid,
@@ -1994,138 +1992,7 @@ sub startup {
						$self->in_transit->update_user_data(
							uid       => $uid,
							db        => $db,
								user_data =>
								  { comment => $traewelling->{message} }
							);
						}
						$self->traewelling->log(
							uid     => $uid,
							db      => $db,
							message =>
"Eingecheckt in $traewelling->{line} nach $traewelling->{arr_name}",
							status_id => $traewelling->{status_id},
						);
						$self->traewelling->set_latest_pull_status_id(
							uid       => $uid,
							status_id => $traewelling->{status_id},
							db        => $db
						);

						$tx->commit;
						$promise->resolve;
						return;
					}
				)->catch(
					sub {
						my ($err) = @_;
						$self->log->debug("... error: $err");
						$self->traewelling->log(
							uid     => $uid,
							message =>
"Konnte $traewelling->{line} nach $traewelling->{arr_name} nicht übernehmen: $err",
							status_id => $traewelling->{status_id},
							is_error  => 1
						);
						$promise->resolve;
						return;
					}
				)->wait;
				return $promise;
			}

			$self->iris->get_departures_p(
				station    => $traewelling->{dep_eva},
				lookbehind => 60,
				lookahead  => 40
			)->then(
				sub {
					my ($dep) = @_;
					my ( $train_ref, $train_id );

					if ( $dep->{errstr} ) {
						$self->traewelling->log(
							uid     => $uid,
							message =>
"Konnte $traewelling->{line} nach $traewelling->{arr_name} nicht übernehmen: $dep->{errstr}",
							status_id => $traewelling->{status_id},
							is_error  => 1,
						);
						$promise->resolve;
						return;
					}

					for my $train ( @{ $dep->{results} } ) {
						if ( $train->line ne $traewelling->{line} ) {
							next;
						}
						if ( not $train->sched_departure
							or $train->sched_departure->epoch
							!= $traewelling->{dep_dt}->epoch )
						{
							next;
						}
						if (
							not
							List::Util::first { $_ eq $traewelling->{arr_name} }
							$train->route_post
						  )
						{
							next;
						}
						$train_id  = $train->train_id;
						$train_ref = $train;
						last;
					}

					if ( not $train_id ) {
						$self->log->debug(
							"... train $traewelling->{line} not found");
						$self->traewelling->log(
							uid     => $uid,
							message =>
"Konnte $traewelling->{line} nach $traewelling->{arr_name} nicht übernehmen: Zug nicht gefunden",
							status_id => $traewelling->{status_id},
							is_error  => 1
						);
						return $promise->resolve;
					}

					$self->log->debug("... found train: $train_id");

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

					$self->checkin_p(
						station        => $traewelling->{dep_eva},
						train_id       => $train_id,
						uid            => $uid,
						in_transaction => 1,
						db             => $db
					)->then(
						sub {
							$self->log->debug("... handled origin");
							return $self->checkout_p(
								station        => $traewelling->{arr_eva},
								train_id       => 0,
								uid            => $uid,
								in_transaction => 1,
								db             => $db
							);
						}
					)->then(
						sub {
							my ( undef, $err ) = @_;
							if ($err) {
								$self->log->debug("... error: $err");
								return Mojo::Promise->reject($err);
							}
							$self->log->debug("... handled destination");
							if ( $traewelling->{message} ) {
								$self->in_transit->update_user_data(
									uid       => $uid,
									db        => $db,
									user_data =>
									  { comment => $traewelling->{message} }
							user_data => { comment => $traewelling->{message} }
						);
					}
					$self->traewelling->log(
@@ -2160,22 +2027,6 @@ sub startup {
					return;
				}
			)->wait;
				}
			)->catch(
				sub {
					my ( $err, $dep ) = @_;
					$self->traewelling->log(
						uid     => $uid,
						message =>
"Konnte $traewelling->{line} nach $traewelling->{arr_name} nicht übernehmen: $dep->{errstr}",
						status_id => $traewelling->{status_id},
						is_error  => 1,
					);
					$promise->resolve;
					return;
				}
			)->wait;

			return $promise;
		}
	);