summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2019-04-07 20:20:37 +0200
committerDaniel Friesel <derf@finalrewind.org>2019-04-07 20:20:37 +0200
commitbeb17acb8440bb44f1070c2fb3b2e6cf7521f800 (patch)
treebbe052f289d841ecb1ca89426cbf39fbdfc2950a /lib
parentd4269a8fe4586e08577b66b5068b576e5ab36c7b (diff)
Prepare forms for manual journey entry and editing
Diffstat (limited to 'lib')
-rwxr-xr-xlib/Travelynx.pm2
-rwxr-xr-xlib/Travelynx/Controller/Traveling.pm58
2 files changed, 60 insertions, 0 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index 7cab531..7c1c1df 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -1475,8 +1475,10 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
$authed_r->get('/history')->to('traveling#history');
$authed_r->get('/history/:year')->to('traveling#yearly_history');
$authed_r->get('/history/:year/:month')->to('traveling#monthly_history');
+ $authed_r->get('/journey/add')->to('traveling#add_journey_form');
$authed_r->get('/journey/:id')->to('traveling#journey_details');
$authed_r->get('/s/*station')->to('traveling#station');
+ $authed_r->post('/journey/edit')->to('traveling#edit_journey');
$authed_r->post('/change_password')->to('account#change_password');
$authed_r->post('/delete')->to('account#delete');
$authed_r->post('/logout')->to('account#do_logout');
diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm
index bbbc214..83036ba 100755
--- a/lib/Travelynx/Controller/Traveling.pm
+++ b/lib/Travelynx/Controller/Traveling.pm
@@ -378,6 +378,8 @@ sub journey_details {
my ($self) = @_;
my ( $uid, $checkout_id ) = split( qr{-}, $self->stash('id') );
+ $self->param( journey_id => $checkout_id );
+
if ( not( $uid == $self->current_user->{id} and $checkout_id ) ) {
$self->render(
'journey',
@@ -411,4 +413,60 @@ sub journey_details {
);
}
+sub edit_journey {
+ my ($self) = @_;
+ my $checkout_id = $self->param('journey_id');
+ my $uid = $self->current_user->{id};
+
+ if ( not( $uid == $self->current_user->{id} and $checkout_id ) ) {
+ $self->render(
+ 'edit_journey',
+ error => 'notfound',
+ journey => {}
+ );
+ return;
+ }
+
+ my @journeys = $self->get_user_travels(
+ uid => $uid,
+ checkout_id => $checkout_id,
+ );
+ if ( @journeys == 0
+ or not $journeys[0]{completed}
+ or $journeys[0]{ids}[1] != $checkout_id )
+ {
+ $self->render(
+ 'edit_journey',
+ error => 'notfound',
+ journey => {}
+ );
+ return;
+ }
+
+ my $journey = $journeys[0];
+
+ for my $key (qw(sched_departure rt_departure sched_arrival rt_arrival)) {
+ if ( $journey->{$key} and $journey->{$key}->epoch ) {
+ $self->param(
+ $key => $journey->{$key}->strftime('%d.%m.%Y %H:%M') );
+ }
+ }
+
+ if ( $journey->{route} ) {
+ $self->param( route => join( "\n", @{ $journey->{route} } ) );
+ }
+
+ $self->render(
+ 'edit_journey',
+ error => undef,
+ journey => $journey
+ );
+}
+
+sub add_journey_form {
+ my ($self) = @_;
+
+ $self->render( 'add_journey', error => undef );
+}
+
1;