move exit direction calculation to a helper function

This commit is contained in:
Daniel Friesel 2019-08-03 11:11:27 +02:00
parent 90dd96e08f
commit ff75b16bfc

View file

@ -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
);
}
}