diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2019-11-19 19:46:21 +0100 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2019-11-19 19:46:39 +0100 |
commit | b80613b8a8dad252960d90f6a03227503e2ba133 (patch) | |
tree | b861525de6e5bb54ca24ace890423570c8849e96 /lib | |
parent | 13e59b3aa1504154a90619069c963301e322904a (diff) |
allow route input when adding journeys manually (#26)
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/Travelynx.pm | 46 | ||||
-rwxr-xr-x | lib/Travelynx/Controller/Traveling.pm | 6 |
2 files changed, 39 insertions, 13 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index 741af2a..f13dd60 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -304,6 +304,39 @@ sub startup { return ( undef, 'Unbekannter Zielbahnhof' ); } + my @route = ( [ $dep_station->[1], {}, undef ] ); + + if ( $opt{route} ) { + my @unknown_stations; + for my $station ( @{ $opt{route} } ) { + my $station_info = get_station($station); + if ( not $station_info ) { + push( @unknown_stations, $station ); + } + push( @route, [ $station_info->[1], {}, undef ] ); + } + + if ( @unknown_stations == 1 ) { + return ( undef, + "Unbekannter Unterwegshalt: $unknown_stations[0]" ); + } + elsif (@unknown_stations) { + return ( undef, + 'Unbekannte Unterwegshalte: ' + . join( ', ', @unknown_stations ) ); + } + } + + push( @route, [ $arr_station->[1], {}, undef ] ); + + if ( $route[0][0] eq $route[1][0] ) { + shift(@route); + } + + if ( $route[-2][0] eq $route[-1][0] ) { + pop(@route); + } + my $entry = { user_id => $uid, train_type => $opt{train_type}, @@ -326,18 +359,7 @@ sub startup { checkout_time => $now, edited => 0x3fff, cancelled => $opt{cancelled} ? 1 : 0, - route => JSON->new->encode( - [ - [ - $dep_station->[1], undef, - $opt{sched_departure}->epoch, - ], - [ - $arr_station->[1], $opt{sched_arrival}->epoch, - undef - ] - ] - ), + route => JSON->new->encode( \@route ), }; if ( $opt{comment} ) { diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index f0f1879..c8f975f 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -803,10 +803,14 @@ sub add_journey_form { $opt{rt_departure} //= $opt{sched_departure}; $opt{rt_arrival} //= $opt{sched_arrival}; - for my $key (qw(dep_station arr_station cancelled comment)) { + for my $key (qw(dep_station arr_station route cancelled comment)) { $opt{$key} = $self->param($key); } + if ( $opt{route} ) { + $opt{route} = [ split( qr{\r?\n\r?}, $opt{route} ) ]; + } + my $db = $self->pg->db; my $tx = $db->begin; |