Unverified Commit 619646b5 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

warn when trying to check out at invalid unscheduled station

Closes #72
parent e275fc6d
Loading
Loading
Loading
Loading
+28 −5
Original line number Diff line number Diff line
@@ -845,20 +845,37 @@ sub station {
				  } @results;
			}

			my $user_status = $self->get_user_status;

			my $can_check_out = 0;
			if ( $user_status->{checked_in} ) {
				for my $stop ( @{ $user_status->{route_after} } ) {
					if (
						$stop->[1] eq $status->{station_eva}
						or List::Util::any { $stop->[1] eq $_->{uic} }
						@{ $status->{related_stations} }
					  )
					{
						$can_check_out = 1;
						last;
					}
				}
			}

			my $connections_p;
			if ($train) {
				@results
				  = grep { $_->type . ' ' . $_->train_no eq $train } @results;
			}
			else {
				my $user = $self->get_user_status;
				if (    $user->{cancellation}
				if (    $user_status->{cancellation}
					and $status->{station_eva} eq
					$user->{cancellation}{dep_eva} )
					$user_status->{cancellation}{dep_eva} )
				{
					$connections_p = $self->get_connecting_trains_p(
						eva              => $user->{cancellation}{dep_eva},
						destination_name => $user->{cancellation}{arr_name}
						eva => $user_status->{cancellation}{dep_eva},
						destination_name =>
						  $user_status->{cancellation}{arr_name}
					);
				}
				else {
@@ -878,6 +895,8 @@ sub station {
							hafas            => $use_hafas,
							station          => $status->{station_name},
							related_stations => $status->{related_stations},
							user_status      => $user_status,
							can_check_out    => $can_check_out,
							connections      => $connecting_trains,
							title   => "travelynx: $status->{station_name}",
							version => $self->app->config->{version}
@@ -893,6 +912,8 @@ sub station {
							hafas            => $use_hafas,
							station          => $status->{station_name},
							related_stations => $status->{related_stations},
							user_status      => $user_status,
							can_check_out    => $can_check_out,
							title   => "travelynx: $status->{station_name}",
							version => $self->app->config->{version}
							  // 'UNKNOWN',
@@ -908,6 +929,8 @@ sub station {
					hafas            => $use_hafas,
					station          => $status->{station_name},
					related_stations => $status->{related_stations},
					user_status      => $user_status,
					can_check_out    => $can_check_out,
					title            => "travelynx: $status->{station_name}",
					version => $self->app->config->{version} // 'UNKNOWN',
				);
+38 −17
Original line number Diff line number Diff line
@@ -6,37 +6,50 @@
		% }
	</div>
</div>
% my $status = $self->get_user_status;
% my $have_connections = 0;
% if ($status->{checked_in}) {
% if ($user_status->{checked_in}) {
	<div class="row">
		<div class="col s12">
			<div class="card">
				<div class="card-content">
					<span class="card-title">Aktuell eingecheckt</span>
					<p>In <%= $status->{train_type} %> <%= $status->{train_no} %>
						ab <%= $status->{dep_name} %></p>
					<p>In <%= $user_status->{train_type} %> <%= $user_status->{train_no} %>
						ab <%= $user_status->{dep_name} %></p>
				</div>
				<div class="card-action">
					<a class="action-checkout" data-station="<%= $eva %>" data-force="1">
					% if ($can_check_out) {
						<a class="action-undo" data-id="in_transit" data-checkints="<%= $user_status->{timestamp}->epoch %>"  style="margin-right: 0;">
							<i class="material-icons left" aria-hidden="true">undo</i> Rückgängig
						</a>
						<a class="action-checkout right" data-station="<%= $eva %>" data-force="1">
							Hier auschecken
						</a>
					% }
					% else {
						<a class="action-undo" data-id="in_transit" data-checkints="<%= $user_status->{timestamp}->epoch %>"  style="margin-right: 0;">
							<i class="material-icons left" aria-hidden="true">undo</i> Rückgängig
						</a>
						<a class="action-checkout right" data-station="<%= $eva %>" data-force="1">
							<i class="material-icons left">gps_off</i>
							Hier auschecken
						</a>
					% }
				</div>
			</div>
		</div>
	</div>
% }
% elsif ($status->{cancellation} and $station eq $status->{cancellation}{dep_name}) {
% elsif ($user_status->{cancellation} and $station eq $user_status->{cancellation}{dep_name}) {
	<div class="row">
		<div class="col s12">
			%= include '_cancelled_departure', journey => $status->{cancellation};
			%= include '_cancelled_departure', journey => $user_status->{cancellation};
		</div>
	</div>
% }
% elsif ($status->{timestamp_delta} < 180) {
% elsif ($user_status->{timestamp_delta} < 180) {
	<div class="row">
		<div class="col s12">
			%= include '_checked_out', journey => $status;
			%= include '_checked_out', journey => $user_status;
		</div>
	</div>
% }
@@ -55,7 +68,13 @@
			% if ($have_connections) {
				Alle Abfahrten –
			% }
			% if (@{$results}) {
			% if ($user_status->{checked_in} and not $can_check_out) {
				Diese Station liegt nicht auf der Route deines aktuellen Checkins.
				Falls du aktuell nicht mit <b><%= $user_status->{train_type} %> <%= $user_status->{train_no} %></b> unterwegs bist, kannst du den Checkin rückgängig machen.
				Falls es sich bei <b><%= $station %></b> um einen nicht in den Echtzeitdaten abgebildeten Zusatzhalt handelt, kannst du hier auchecken.
				Da travelynx nicht weiß, welcher der beiden Fälle zutrifft, sind bis dahin keine neuen Checkins möglich.
			% }
			% elsif (@{$results}) {
				Zug auswählen zum Einchecken.
			% }
			% else {
@@ -63,12 +82,14 @@
				und maximal 120 Minuten nach Abfahrt möglich.
			% }
		</p>
		% if (not ($user_status->{checked_in} and not $can_check_out)) {
			% if ($hafas) {
				%= include '_departures_hafas', results => $results;
			% }
			% else {
				%= include '_departures_iris', results => $results;
			% }
		% }
	</div>
</div>