Commit 98822bdb authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

perltidy

parent 32cc2f0f
Loading
Loading
Loading
Loading
+878 −792
Original line number Diff line number Diff line
@@ -57,7 +57,6 @@ sub epoch_to_dt {
	);
}


sub get_station {
	my ($station_name) = @_;

@@ -107,7 +106,8 @@ $self->plugin(
				if ( $user_info->{status} != 1 ) {
					return undef;
				}
			if ( check_password( $password, $user_info->{password_hash} ) ) {
				if ( check_password( $password, $user_info->{password_hash} ) )
				{
					return $user_info->{id};
				}
				return undef;
@@ -118,28 +118,36 @@ $self->sessions->default_expiration( 60 * 60 * 24 * 180 );

	$self->defaults( layout => 'default' );

$self->attr(action_type => sub {
	$self->attr(
		action_type => sub {
			return {
				checkin        => 1,
				checkout       => 2,
				undo           => 3,
				cancelled_from => 4,
				cancelled_to   => 5,
}});
$self->attr(action_types => sub {
	return [
	qw(checkin checkout undo cancelled_from cancelled_to)
]});
$self->attr(token_type => sub {
			};
		}
	);
	$self->attr(
		action_types => sub {
			return [qw(checkin checkout undo cancelled_from cancelled_to)];
		}
	);
	$self->attr(
		token_type => sub {
			return {
				status  => 1,
				history => 2,
				action  => 3,
}});
$self->attr(token_types => sub {
	return [
	qw(status history action)
]});
			};
		}
	);
	$self->attr(
		token_types => sub {
			return [qw(status history action)];
		}
	);

	$self->attr(
		add_station_query => sub {
@@ -331,7 +339,8 @@ $self->attr(
			my ($self) = @_;

			return $self->app->dbh->prepare(
			qq{select * from pending_mails where email = ? and num_tries > 1;});
qq{select * from pending_mails where email = ? and num_tries > 1;}
			);
		}
	);
	$self->attr(
@@ -457,7 +466,8 @@ $self->attr(
		},
	);

$self->helper('get_departures' => sub {
	$self->helper(
		'get_departures' => sub {
			my ( $self, $station, $lookbehind ) = @_;

			$lookbehind //= 180;
@@ -479,8 +489,9 @@ $self->helper('get_departures' => sub {
				return {
					results       => [ $status->results ],
					errstr        => $status->errstr,
			station_ds100 =>
			  ( $status->station ? $status->station->{ds100} : 'undef' ),
					station_ds100 => (
						$status->station ? $status->station->{ds100} : 'undef'
					),
					station_name =>
					  ( $status->station ? $status->station->{name} : 'undef' ),
				};
@@ -497,9 +508,11 @@ $self->helper('get_departures' => sub {
					errstr  => 'Unknown station name',
				};
			}
});
		}
	);

$self->helper('checkin' => sub {
	$self->helper(
		'checkin' => sub {
			my ( $self, $station, $train_id, $action_id ) = @_;

			$action_id //= $self->app->action_type->{checkin};
@@ -553,9 +566,13 @@ $self->helper('checkin' => sub {
						$train->sched_departure->epoch,
						$train->departure->epoch,
						join( '|', $train->route ),
				join( '|',
					map { ( $_->[0] ? $_->[0]->epoch : q{} ) . ':' . $_->[1] }
					  $train->messages )
						join(
							'|',
							map {
								( $_->[0] ? $_->[0]->epoch : q{} ) . ':'
								  . $_->[1]
							} $train->messages
						)
					);
					if ( defined $success ) {
						return ( $train, undef );
@@ -565,20 +582,25 @@ $self->helper('checkin' => sub {
					}
				}
			}
});
		}
	);

$self->helper('undo' => sub {
	$self->helper(
		'undo' => sub {
			my ($self) = @_;

			my $uid = $self->current_user->{id};
			$self->app->get_last_actions_query->execute($uid);
			my $rows = $self->app->get_last_actions_query->fetchall_arrayref;

	if ( @{$rows} and $rows->[0][0] == $self->app->action_type->{undo} ) {
			if ( @{$rows} and $rows->[0][0] == $self->app->action_type->{undo} )
			{
				return 'Nested undo (undoing an undo) is not supported';
			}

	if ( @{$rows} > 1 and $rows->[1][0] == $self->app->action_type->{undo} ) {
			if ( @{$rows} > 1
				and $rows->[1][0] == $self->app->action_type->{undo} )
			{
				return 'Repeated undo is not supported';
			}

@@ -593,9 +615,11 @@ $self->helper('undo' => sub {
			else {
				return 'INSERT failed';
			}
});
		}
	);

$self->helper('checkout' => sub {
	$self->helper(
		'checkout' => sub {
			my ( $self, $station, $force, $action_id ) = @_;

			$action_id //= $self->app->action_type->{checkout};
@@ -623,8 +647,8 @@ $self->helper('checkout' => sub {
							name  => $status->{station_name}
						),
						DateTime->now( time_zone => 'Europe/Berlin' )->epoch,
				undef, undef, undef, undef, undef, undef,
				undef, undef
						undef, undef, undef, undef, undef,
						undef, undef, undef
					);
					if ( defined $success ) {
						return;
@@ -650,12 +674,18 @@ $self->helper('checkout' => sub {
					$train->line_no,
					$train->train_no,
					$train->train_id,
			$train->sched_arrival ? $train->sched_arrival->epoch : undef,
					$train->sched_arrival
					? $train->sched_arrival->epoch
					: undef,
					$train->arrival ? $train->arrival->epoch : undef,
					join( '|', $train->route ),
			join( '|',
				map { ( $_->[0] ? $_->[0]->epoch : q{} ) . ':' . $_->[1] }
				  $train->messages )
					join(
						'|',
						map {
							( $_->[0] ? $_->[0]->epoch : q{} ) . ':'
							  . $_->[1]
						} $train->messages
					)
				);
				if ( defined $success ) {
					return;
@@ -664,25 +694,33 @@ $self->helper('checkout' => sub {
					return 'INSERT failed';
				}
			}
});
		}
	);

$self->helper('get_station_id' => sub {
	$self->helper(
		'get_station_id' => sub {
			my ( $self, %opt ) = @_;

			$self->app->get_stationid_by_ds100_query->execute( $opt{ds100} );
	my $rows = $self->app->get_stationid_by_ds100_query->fetchall_arrayref;
			my $rows
			  = $self->app->get_stationid_by_ds100_query->fetchall_arrayref;
			if ( @{$rows} ) {
				return $rows->[0][0];
			}
			else {
		$self->app->add_station_query->execute( $opt{ds100}, $opt{name} );
		$self->app->get_stationid_by_ds100_query->execute( $opt{ds100} );
		my $rows = $self->app->get_stationid_by_ds100_query->fetchall_arrayref;
				$self->app->add_station_query->execute( $opt{ds100},
					$opt{name} );
				$self->app->get_stationid_by_ds100_query->execute(
					$opt{ds100} );
				my $rows
				  = $self->app->get_stationid_by_ds100_query->fetchall_arrayref;
				return $rows->[0][0];
			}
});
		}
	);

$self->helper('get_user_token' => sub {
	$self->helper(
		'get_user_token' => sub {
			my ( $self, $uid ) = @_;

			my $query = $self->app->get_token_query;
@@ -692,12 +730,14 @@ $self->helper('get_user_token' => sub {
				return @{ $rows->[0] };
			}
			return;
});
		}
	);

	# This helper should only be called directly when also providing a user ID.
	# If you don't have one, use current_user() instead (get_user_data will
	# delegate to it anyways).
$self->helper('get_user_data' => sub {
	$self->helper(
		'get_user_data' => sub {
			my ( $self, $uid ) = @_;

			$uid //= $self->current_user->{id};
@@ -729,21 +769,26 @@ $self->helper('get_user_data' => sub {
				};
			}
			return undef;
});
		}
	);

$self->helper('get_api_token' => sub {
	$self->helper(
		'get_api_token' => sub {
			my ( $self, $uid ) = @_;
			$uid //= $self->current_user->{id};
			$self->app->get_api_tokens_query->execute($uid);
			my $rows  = $self->app->get_api_tokens_query->fetchall_arrayref;
			my $token = {};
			for my $row ( @{$rows} ) {
		$token->{ $self->app->token_types->[ $row->[0] - 1 ] } = $row->[1];
				$token->{ $self->app->token_types->[ $row->[0] - 1 ] }
				  = $row->[1];
			}
			return $token;
});
		}
	);

$self->helper('get_user_password' => sub {
	$self->helper(
		'get_user_password' => sub {
			my ( $self, $name ) = @_;
			my $query = $self->app->get_password_query;
			$query->execute($name);
@@ -758,9 +803,11 @@ $self->helper('get_user_password' => sub {
				};
			}
			return;
});
		}
	);

$self->helper('add_user' => sub {
	$self->helper(
		'add_user' => sub {
			my ( $self, $user_name, $email, $token, $password ) = @_;

			$self->app->get_userid_query->execute($user_name);
@@ -786,9 +833,11 @@ $self->helper('add_user' => sub {
				$rows = $self->app->get_userid_query->fetchall_arrayref;
				return $rows->[0][0];
			}
});
		}
	);

$self->helper('check_if_user_name_exists' => sub {
	$self->helper(
		'check_if_user_name_exists' => sub {
			my ( $self, $user_name ) = @_;

			$self->app->get_userid_query->execute($user_name);
@@ -798,9 +847,11 @@ $self->helper('check_if_user_name_exists' => sub {
				return 1;
			}
			return 0;
});
		}
	);

$self->helper('check_if_mail_is_blacklisted' => sub {
	$self->helper(
		'check_if_mail_is_blacklisted' => sub {
			my ( $self, $mail ) = @_;

			$self->app->get_pending_mails_query->execute($mail);
@@ -812,9 +863,11 @@ $self->helper('check_if_mail_is_blacklisted' => sub {
				return 1;
			}
			return 0;
});
		}
	);

$self->helper('get_user_travels' => sub {
	$self->helper(
		'get_user_travels' => sub {
			my ( $self, %opt ) = @_;

			my $uid   = $self->current_user->{id};
@@ -825,15 +878,21 @@ $self->helper('get_user_travels' => sub {

			if ( $opt{uid} and $opt{checkin_epoch} and $opt{checkout_epoch} ) {
				$query = $self->app->get_journey_actions_query;
		$query->execute( $opt{uid}, $opt{checkin_epoch}, $opt{checkout_epoch} );
				$query->execute( $opt{uid}, $opt{checkin_epoch},
					$opt{checkout_epoch} );
			}
			else {
				$query->execute($uid);
			}
	my @match_actions = ( $self->app->action_type->{checkout}, $self->app->action_type->{checkin} );
			my @match_actions = (
				$self->app->action_type->{checkout},
				$self->app->action_type->{checkin}
			);
			if ( $opt{cancelled} ) {
		@match_actions
		  = ( $self->app->action_type->{cancelled_to}, $self->app->action_type->{cancelled_from} );
				@match_actions = (
					$self->app->action_type->{cancelled_to},
					$self->app->action_type->{cancelled_from}
				);
			}

			my @travels;
@@ -841,17 +900,21 @@ $self->helper('get_user_travels' => sub {

			while ( my @row = $query->fetchrow_array ) {
				my (
			$action,       $raw_ts,      $ds100,     $name,
			$train_type,   $train_line,  $train_no,  $train_id,
			$raw_sched_ts, $raw_real_ts, $raw_route, $raw_messages
					$action,      $raw_ts,     $ds100,
					$name,        $train_type, $train_line,
					$train_no,    $train_id,   $raw_sched_ts,
					$raw_real_ts, $raw_route,  $raw_messages
				) = @row;

				$name         = decode( 'UTF-8', $name );
				$raw_route    = decode( 'UTF-8', $raw_route );
				$raw_messages = decode( 'UTF-8', $raw_messages );

		if ( $action == $match_actions[0]
			or ( $opt{checkout_epoch} and $raw_ts == $opt{checkout_epoch} ) )
				if (
					$action == $match_actions[0]
					or
					( $opt{checkout_epoch} and $raw_ts == $opt{checkout_epoch} )
				  )
				{
					push(
						@travels,
@@ -866,7 +929,8 @@ $self->helper('get_user_travels' => sub {
							messages      => $raw_messages
							? [ split( qr{[|]}, $raw_messages ) ]
							: undef,
					route => $raw_route ? [ split( qr{[|]}, $raw_route ) ]
							route => $raw_route
							? [ split( qr{[|]}, $raw_route ) ]
							: undef,
							completed => 0,
						}
@@ -877,7 +941,8 @@ $self->helper('get_user_travels' => sub {
						    $action == $match_actions[1]
						and $prev_action == $match_actions[0]
					)
			or ( $opt{checkin_epoch} and $raw_ts == $opt{checkin_epoch} )
					or
					( $opt{checkin_epoch} and $raw_ts == $opt{checkin_epoch} )
				  )
				{
					my $ref = $travels[-1];
@@ -896,7 +961,8 @@ $self->helper('get_user_travels' => sub {
						my @parsed_messages;
						for my $message ( @{ $ref->{messages} // [] } ) {
							my ( $ts, $msg ) = split( qr{:}, $message );
					push( @parsed_messages, [ epoch_to_dt($ts), $msg ] );
							push( @parsed_messages,
								[ epoch_to_dt($ts), $msg ] );
						}
						$ref->{messages} = [ reverse @parsed_messages ];
						$ref->{sched_duration}
@@ -906,27 +972,32 @@ $self->helper('get_user_travels' => sub {
						  : undef;
						$ref->{rt_duration}
						  = $ref->{rt_arrival}
				  ? $ref->{rt_arrival}->epoch - $ref->{rt_departure}->epoch
						  ? $ref->{rt_arrival}->epoch
						  - $ref->{rt_departure}->epoch
						  : undef;
						$ref->{km_route}
						  = $self->get_travel_distance( $ref->{from_name},
							$ref->{to_name}, $ref->{route} );
						$ref->{km_beeline}
						  = $self->get_travel_distance( $ref->{from_name},
					$ref->{to_name}, [ $ref->{from_name}, $ref->{to_name} ] );
				$ref->{kmh_route}
				  = $ref->{km_route}
				  / (
					( $ref->{rt_duration} // $ref->{sched_duration} // 999999 )
					/ 3600 );
				$ref->{kmh_beeline}
				  = $ref->{km_beeline}
				  / (
					( $ref->{rt_duration} // $ref->{sched_duration} // 999999 )
					/ 3600 );
							$ref->{to_name},
							[ $ref->{from_name}, $ref->{to_name} ] );
						$ref->{kmh_route} = $ref->{km_route} / (
							(
								$ref->{rt_duration} // $ref->{sched_duration}
								  // 999999
							) / 3600
						);
						$ref->{kmh_beeline} = $ref->{km_beeline} / (
							(
								$ref->{rt_duration} // $ref->{sched_duration}
								  // 999999
							) / 3600
						);
					}
					if (    $opt{checkin_epoch}
				and $action == $self->app->action_type->{cancelled_from} )
						and $action
						== $self->app->action_type->{cancelled_from} )
					{
						$ref->{cancelled} = 1;
					}
@@ -935,9 +1006,11 @@ $self->helper('get_user_travels' => sub {
			}

			return @travels;
});
		}
	);

$self->helper('get_user_status' => sub {
	$self->helper(
		'get_user_status' => sub {
			my ( $self, $uid ) = @_;

			$uid //= $self->current_user->{id};
@@ -948,7 +1021,9 @@ $self->helper('get_user_status' => sub {
				my $now = DateTime->now( time_zone => 'Europe/Berlin' );

				my @cols = @{ $rows->[0] };
		if ( @{$rows} > 2 and $rows->[0][0] == $self->app->action_type->{undo} ) {
				if ( @{$rows} > 2
					and $rows->[0][0] == $self->app->action_type->{undo} )
				{
					@cols = @{ $rows->[2] };
				}

@@ -956,10 +1031,12 @@ $self->helper('get_user_status' => sub {
				my $sched_ts             = epoch_to_dt( $cols[8] );
				my $real_ts              = epoch_to_dt( $cols[9] );
				my $checkin_station_name = decode( 'UTF-8', $cols[3] );
		my @route = split( qr{[|]}, decode( 'UTF-8', $cols[10] // q{} ) );
				my @route
				  = split( qr{[|]}, decode( 'UTF-8', $cols[10] // q{} ) );
				my @route_after;
				my $is_after = 0;
				for my $station (@route) {

					if ( $station eq $checkin_station_name ) {
						$is_after = 1;
					}
@@ -968,8 +1045,10 @@ $self->helper('get_user_status' => sub {
					}
				}
				return {
			checked_in      => ( $cols[0] == $self->app->action_type->{checkin} ),
			cancelled       => ( $cols[0] == $self->app->action_type->{cancelled_from} ),
					checked_in =>
					  ( $cols[0] == $self->app->action_type->{checkin} ),
					cancelled =>
					  ( $cols[0] == $self->app->action_type->{cancelled_from} ),
					timestamp       => $action_ts,
					timestamp_delta => $now->epoch - $action_ts->epoch,
					sched_ts        => $sched_ts,
@@ -990,9 +1069,11 @@ $self->helper('get_user_status' => sub {
				sched_ts   => epoch_to_dt(0),
				real_ts    => epoch_to_dt(0),
			};
});
		}
	);

$self->helper('get_travel_distance' => sub {
	$self->helper(
		'get_travel_distance' => sub {
			my ( $self, $from, $to, $route_ref ) = @_;

			my $distance = 0;
@@ -1013,27 +1094,30 @@ $self->helper('get_travel_distance' => sub {

			for my $station_name (@route) {
				if ( my $station = get_station($station_name) ) {
			$distance += $geo->distance( 'kilometer', $prev_station->[3],
					$distance
					  += $geo->distance( 'kilometer', $prev_station->[3],
						$prev_station->[4], $station->[3], $station->[4] );
					$prev_station = $station;
				}
			}

			return $distance;
});
		}
	);

$self->helper('navbar_class' => sub {
	$self->helper(
		'navbar_class' => sub {
			my ( $self, $path ) = @_;

			if ( $self->req->url eq $self->url_for($path) ) {
				return 'active';
			}
			return q{};
});
		}
	);

	my $r = $self->routes;


	$r->get('/')->to('traveling#homepage');
	$r->get('/about')->to('static#about');
	$r->get('/impressum')->to('static#imprint');
@@ -1048,14 +1132,16 @@ $r->post('/list_departures')->to('traveling#redirect_to_station');
	$r->post('/login')->to('account#do_login');
	$r->post('/register')->to('account#register');

my $authed_r = $r->under(sub {
	my $authed_r = $r->under(
		sub {
			my ($self) = @_;
			if ( $self->is_user_authenticated ) {
				return 1;
			}
			$self->render( 'login', redirect_to => $self->req->url );
			return undef;
});
		}
	);

	$authed_r->get('/account')->to('account#account');
	$authed_r->get('/export.json')->to('account#json_export');