diff options
Diffstat (limited to 'lib/Travelynx/Controller/Traveling.pm')
-rwxr-xr-x | lib/Travelynx/Controller/Traveling.pm | 65 |
1 files changed, 44 insertions, 21 deletions
diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index 5282d9a..ee8d27d 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -141,7 +141,7 @@ sub log_action { } elsif ( $params->{action} eq 'undo' ) { my $status = $self->get_user_status; - my $error = $self->undo( $params->{undo_id} ); + my $error = $self->undo( $params->{undo_id} ); if ($error) { $self->render( json => { @@ -152,7 +152,7 @@ sub log_action { } else { my $redir = '/'; - if ($status->{checked_in} or $status->{cancelled}) { + if ( $status->{checked_in} or $status->{cancelled} ) { $redir = '/s/' . $status->{dep_ds100}; } $self->render( @@ -562,37 +562,60 @@ sub add_journey_form { for my $key (qw(sched_departure rt_departure sched_arrival rt_arrival)) { - my $datetime = $parser->parse_datetime( $self->param($key) ); - if ( not $datetime ) { - $self->render( - 'add_journey', - with_autocomplete => 1, - error => "${key}: Ungültiges Datums-/Zeitformat" - ); - return; + if ( $self->param($key) ) { + my $datetime = $parser->parse_datetime( $self->param($key) ); + if ( not $datetime ) { + $self->render( + 'add_journey', + with_autocomplete => 1, + error => "${key}: Ungültiges Datums-/Zeitformat" + ); + return; + } + $opt{$key} = $datetime; } - $opt{$key} = $datetime; } - for my $key (qw(dep_station arr_station)) { + for my $key (qw(dep_station arr_station cancelled comment)) { $opt{$key} = $self->param($key); } - #my ( $checkin_id, $checkout_id, $error ) = $self->add_journey(%opt); + my $db = $self->pg->db; + my $tx = $db->begin; + + $opt{db} = $db; + + my ( $journey_id, $error ) = $self->add_journey(%opt); + if ( not $error ) { + my $journey = $self->get_journey( + uid => $self->current_user->{id}, + db => $db, + journey_id => $journey_id, + verbose => 1 + ); + $error = $self->journey_sanity_check($journey); + } + + if ($error) { + $self->render( + 'add_journey', + with_autocomplete => 1, + error => $error, + ); + } + else { + $tx->commit; + $self->redirect_to("/journey/${journey_id}"); + } + } + else { $self->render( 'add_journey', with_autocomplete => 1, - error => 'not implemented', + error => undef ); - return; } - - $self->render( - 'add_journey', - with_autocomplete => 1, - error => undef - ); } 1; |