Commit ff75b16b authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

move exit direction calculation to a helper function

parent 90dd96e0
Loading
Loading
Loading
Loading
+52 −47
Original line number Diff line number Diff line
@@ -2269,6 +2269,51 @@ sub startup {
		}
	);

	$self->helper(
		'stationinfo_to_direction' => sub {
			my ( $self, $platform_info, $wagonorder, $prev_stop ) = @_;
			if ( $platform_info->{kopfgleis} ) {
				return $platform_info->{direction};
			}
			elsif ( $prev_stop
				and exists $platform_info->{direction_from}{$prev_stop} )
			{
				return $platform_info->{direction_from}{$prev_stop};
			}
			elsif ($wagonorder) {
				my $wr;
				eval {
					$wr
					  = Travel::Status::DE::DBWagenreihung->new(
						from_json => $wagonorder );
				};
				if (    $wr
					and $wr->sections
					and defined $wr->direction )
				{
					my $section_0 = ( $wr->sections )[0];
					my $direction = $wr->direction;
					if (    $section_0->name eq 'A'
						and $direction == 0 )
					{
						return $platform_info->{direction};
					}
					elsif ( $section_0->name ne 'A'
						and $direction == 100 )
					{
						return $platform_info->{direction};
					}
					elsif ( $platform_info->{direction} ) {
						return $platform_info->{direction} eq 'r'
						  ? 'l'
						  : 'r';
					}
					return;
				}
			}
		}
	);

	$self->helper(
		'get_user_status' => sub {
			my ( $self, $uid ) = @_;
@@ -2424,54 +2469,14 @@ sub startup {
					if ( $arr_platform_number
						and exists $in_transit->{data}{stationinfo_arr}
						{$arr_platform_number} )
					{
						my $platform_info = $in_transit->{data}{stationinfo_arr}
						  {$arr_platform_number};
						if ( $platform_info->{kopfgleis} ) {
							$ret->{arr_direction} = $platform_info->{direction};
						}
						elsif ( $stop_before_dest
							and exists $platform_info->{direction_from}
							{$stop_before_dest} )
					{
						$ret->{arr_direction}
							  = $platform_info->{direction_from}
							  {$stop_before_dest};
						}
						elsif ( $in_transit->{data}{wagonorder_arr} ) {
							my $wr;
							eval {
								$wr
								  = Travel::Status::DE::DBWagenreihung->new(
									from_json =>
									  $in_transit->{data}{wagonorder_arr} );
							};
							if (    $wr
								and $wr->sections
								and defined $wr->direction )
							{
								my $section_0 = ( $wr->sections )[0];
								my $direction = $wr->direction;
								if (    $section_0->name eq 'A'
									and $direction == 0 )
								{
									$ret->{arr_direction}
									  = $platform_info->{direction};
								}
								elsif ( $section_0->name ne 'A'
									and $direction == 100 )
								{
									$ret->{arr_direction}
									  = $platform_info->{direction};
								}
								else {
									$ret->{arr_direction}
									  = $platform_info->{direction} eq 'r'
									  ? 'l'
									  : 'r';
								}
							}
						}
						  = $self->stationinfo_to_direction(
							$in_transit->{data}{stationinfo_arr}
							  {$arr_platform_number},
							$in_transit->{data}{wagonorder_arr},
							$stop_before_dest
						  );
					}

				}