summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2019-04-07 18:44:33 +0200
committerDaniel Friesel <derf@finalrewind.org>2019-04-07 18:44:33 +0200
commitffee7177ac26f4e79227cdf0abcd83f80f34faa4 (patch)
tree9232d785b19f5e10239be0c20ca55bcc60062700 /lib
parent828dd54266dfaf2b58c0498b7ced6c06d6e104ef (diff)
Refactor history template, add yearly stats
Diffstat (limited to 'lib')
-rwxr-xr-xlib/Travelynx.pm4
-rwxr-xr-xlib/Travelynx/Controller/Traveling.pm71
2 files changed, 60 insertions, 15 deletions
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index 20f885b..7cab531 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -1468,11 +1468,13 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
);
$authed_r->get('/account')->to('account#account');
+ $authed_r->get('/cancelled')->to('traveling#cancelled');
$authed_r->get('/change_password')->to('account#password_form');
$authed_r->get('/export.json')->to('account#json_export');
+ $authed_r->get('/history.json')->to('traveling#json_history');
$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('/history.json')->to('traveling#json_history');
$authed_r->get('/journey/:id')->to('traveling#journey_details');
$authed_r->get('/s/*station')->to('traveling#station');
$authed_r->post('/change_password')->to('account#change_password');
diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm
index dee69a6..bbbc214 100755
--- a/lib/Travelynx/Controller/Traveling.pm
+++ b/lib/Travelynx/Controller/Traveling.pm
@@ -250,34 +250,79 @@ sub redirect_to_station {
$self->redirect_to("/s/${station}");
}
-sub history {
+sub cancelled {
my ($self) = @_;
- my $cancelled = $self->param('cancelled') ? 1 : 0;
-
- my @journeys = $self->get_user_travels( cancelled => $cancelled );
+ my @journeys = $self->get_user_travels( cancelled => 1 );
$self->respond_to(
json => { json => [@journeys] },
any => {
- template => 'history',
+ template => 'cancelled',
journeys => [@journeys]
}
);
}
+sub history {
+ my ($self) = @_;
+
+ $self->render( template => 'history' );
+}
+
sub json_history {
my ($self) = @_;
- my $cancelled = $self->param('cancelled') ? 1 : 0;
- $self->render(
- json => [ $self->get_user_travels( cancelled => $cancelled ) ] );
+ $self->render( json => [ $self->get_user_travels ] );
+}
+
+sub yearly_history {
+ my ($self) = @_;
+ my $year = $self->stash('year');
+ my @journeys;
+ my $stats;
+
+ if ( not $year =~ m{ ^ [0-9]{4} $ }x ) {
+ @journeys = $self->get_user_travels;
+ }
+ else {
+ my $interval_start = DateTime->new(
+ time_zone => 'Europe/Berlin',
+ year => $year,
+ month => 1,
+ day => 1,
+ hour => 0,
+ minute => 0,
+ second => 0,
+ );
+ my $interval_end = $interval_start->clone->add( years => 1 );
+ @journeys = $self->get_user_travels(
+ after => $interval_start,
+ before => $interval_end
+ );
+ $stats = $self->get_journey_stats( year => $year );
+ }
+
+ $self->respond_to(
+ json => {
+ json => {
+ journeys => [@journeys],
+ statistics => $stats
+ }
+ },
+ any => {
+ template => 'history_by_year',
+ journeys => [@journeys],
+ year => $year,
+ statistics => $stats
+ }
+ );
+
}
sub monthly_history {
my ($self) = @_;
my $year = $self->stash('year');
my $month = $self->stash('month');
- my $cancelled = $self->param('cancelled') ? 1 : 0;
my @journeys;
my $stats;
my @months
@@ -285,11 +330,9 @@ sub monthly_history {
qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember)
);
- if ( $cancelled
- or
- not( $year =~ m{ ^ [0-9]{4} $ }x and $month =~ m{ ^ [0-9]{1,2} $ }x ) )
+ if ( not( $year =~ m{ ^ [0-9]{4} $ }x and $month =~ m{ ^ [0-9]{1,2} $ }x ) )
{
- @journeys = $self->get_user_travels( cancelled => $cancelled );
+ @journeys = $self->get_user_travels;
}
else {
my $interval_start = DateTime->new(
@@ -320,7 +363,7 @@ sub monthly_history {
}
},
any => {
- template => 'history',
+ template => 'history_by_month',
journeys => [@journeys],
year => $year,
month => $month,