-
Birte Kristina Friesel authoredBirte Kristina Friesel authored
Journey.pm 10.22 KiB
package Travel::Status::DE::HAFAS::Journey;
use strict;
use warnings;
use 5.014;
no if $] >= 5.018, warnings => 'experimental::smartmatch';
use parent 'Class::Accessor';
our $VERSION = '3.01';
Travel::Status::DE::HAFAS::Journey->mk_ro_accessors(
qw(sched_date date sched_datetime datetime info is_cancelled operator delay
sched_time time train route route_end origin destination)
);
sub new {
my ( $obj, %opt ) = @_;
my @locL = @{ $opt{common}{locL} // [] };
my @prodL = @{ $opt{common}{prodL} // [] };
my @opL = @{ $opt{common}{opL} // [] };
my @icoL = @{ $opt{common}{icoL} // [] };
my @remL = @{ $opt{common}{remL} // [] };
my @himL = @{ $opt{common}{himL} // [] };
my $hafas = $opt{hafas};
my $journey = $opt{journey};
my $date = $journey->{date};
my $direction = $journey->{dirTxt};
my $is_cancelled = $journey->{isCncl};
my $jid = $journey->{jid};
my $product = $prodL[ $journey->{prodX} ];
my $train = $product->{prodCtx}{name};
my $train_type = $product->{prodCtx}{catOutS};
my $line_no = $product->{prodCtx}{line};
my $operator;
if ( defined $product->{oprX} ) {
if ( my $opref = $opL[ $product->{oprX} ] ) {
$operator = $opref->{name};
}
}
my @messages;
for my $msg ( @{ $journey->{msgL} // [] } ) {
if ( $msg->{type} eq 'REM' and defined $msg->{remX} ) {
push( @messages, $hafas->add_message( $remL[ $msg->{remX} ] ) );
}
elsif ( $msg->{type} eq 'HIM' and defined $msg->{himX} ) {
push( @messages, $hafas->add_message( $himL[ $msg->{himX} ], 1 ) );
}
else {
say "Unknown message type $msg->{type}";
}
}
my @stops;
for my $stop ( @{ $journey->{stopL} // [] } ) {
my $loc = $locL[ $stop->{locX} ];
my $sched_arr = $stop->{aTimeS};
my $rt_arr = $stop->{aTimeR};
my $sched_dep = $stop->{dTimeS};
my $rt_dep = $stop->{dTimeR};
for my $timestr ( $sched_arr, $rt_arr, $sched_dep, $rt_dep ) {