From 0822cfc993ff44605210b6b771cd4558c1a65aef Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 12 Sep 2019 18:07:21 +0200 Subject: add auto-generated passenger rights forms --- cpanfile | 1 + lib/Travelynx.pm | 2 + lib/Travelynx/Controller/Passengerrights.pm | 83 +++++++++++++++++++++++++++ public/static/pdf/fahrgastrechteformular.pdf | Bin 0 -> 111614 bytes templates/changelog.html.ep | 13 +++++ templates/journey.html.ep | 12 ++++ 6 files changed, 111 insertions(+) create mode 100644 lib/Travelynx/Controller/Passengerrights.pm create mode 100644 public/static/pdf/fahrgastrechteformular.pdf diff --git a/cpanfile b/cpanfile index 788015c..7a869c5 100644 --- a/cpanfile +++ b/cpanfile @@ -1,4 +1,5 @@ requires 'Cache'; +requires 'CAM::PDF'; requires 'Crypt::Eksblowfish'; requires 'DateTime'; requires 'DateTime::Format::Strptime'; diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm index b1febce..94a7c49 100755 --- a/lib/Travelynx.pm +++ b/lib/Travelynx.pm @@ -2906,6 +2906,8 @@ sub startup { $authed_r->post('/account/insight')->to('account#insight'); $authed_r->post('/journey/add')->to('traveling#add_journey_form'); $authed_r->post('/journey/edit')->to('traveling#edit_journey'); + $authed_r->post('/journey/passenger_rights') + ->to('passengerrights#generate'); $authed_r->post('/account/password')->to('account#change_password'); $authed_r->post('/account/mail')->to('account#change_mail'); $authed_r->post('/delete')->to('account#delete'); diff --git a/lib/Travelynx/Controller/Passengerrights.pm b/lib/Travelynx/Controller/Passengerrights.pm new file mode 100644 index 0000000..aab8d76 --- /dev/null +++ b/lib/Travelynx/Controller/Passengerrights.pm @@ -0,0 +1,83 @@ +package Travelynx::Controller::Passengerrights; +use Mojo::Base 'Mojolicious::Controller'; + +use DateTime; +use CAM::PDF; + +sub generate { + my ($self) = @_; + my $journey_id = $self->param('id'); + + my $uid = $self->current_user->{id}; + + if ( not($journey_id) ) { + $self->render( + 'journey', + error => 'notfound', + journey => {} + ); + return; + } + + my $journey = $self->get_journey( + uid => $uid, + journey_id => $journey_id, + verbose => 1, + ); + + if ( not $journey ) { + $self->render( + 'journey', + error => 'notfound', + journey => {} + ); + return; + } + + my $pdf = CAM::PDF->new('public/static/pdf/fahrgastrechteformular.pdf'); + + $pdf->fillFormFields( 'S1F4', $journey->{from_name} ); + $pdf->fillFormFields( 'S1F7', $journey->{to_name} ); + if ( not $journey->{cancelled} ) { + $pdf->fillFormFields( 'S1F13', $journey->{type} ); + $pdf->fillFormFields( 'S1F14', $journey->{no} ); + } + $pdf->fillFormFields( 'S1F17', $journey->{type} ); + $pdf->fillFormFields( 'S1F18', $journey->{no} ); + if ( $journey->{sched_departure}->epoch ) { + $pdf->fillFormFields( 'S1F1', + $journey->{sched_departure}->strftime('%d') ); + $pdf->fillFormFields( 'S1F2', + $journey->{sched_departure}->strftime('%m') ); + $pdf->fillFormFields( 'S1F3', + $journey->{sched_departure}->strftime('%y') ); + $pdf->fillFormFields( 'S1F5', + $journey->{sched_departure}->strftime('%H') ); + $pdf->fillFormFields( 'S1F6', + $journey->{sched_departure}->strftime('%M') ); + $pdf->fillFormFields( 'S1F19', + $journey->{sched_departure}->strftime('%H') ); + $pdf->fillFormFields( 'S1F20', + $journey->{sched_departure}->strftime('%M') ); + } + if ( $journey->{sched_arrival}->epoch ) { + $pdf->fillFormFields( 'S1F8', + $journey->{sched_arrival}->strftime('%H') ); + $pdf->fillFormFields( 'S1F9', + $journey->{sched_arrival}->strftime('%M') ); + } + if ( $journey->{rt_arrival}->epoch and not $journey->{cancelled} ) { + $pdf->fillFormFields( 'S1F10', $journey->{rt_arrival}->strftime('%d') ); + $pdf->fillFormFields( 'S1F11', $journey->{rt_arrival}->strftime('%m') ); + $pdf->fillFormFields( 'S1F12', $journey->{rt_arrival}->strftime('%y') ); + $pdf->fillFormFields( 'S1F15', $journey->{rt_arrival}->strftime('%H') ); + $pdf->fillFormFields( 'S1F16', $journey->{rt_arrival}->strftime('%M') ); + } + + $self->res->headers->content_type('application/pdf'); + $self->res->body( $pdf->toPDF() ); + $self->rendered(200); + +} + +1; diff --git a/public/static/pdf/fahrgastrechteformular.pdf b/public/static/pdf/fahrgastrechteformular.pdf new file mode 100644 index 0000000..f7f420c Binary files /dev/null and b/public/static/pdf/fahrgastrechteformular.pdf differ diff --git a/templates/changelog.html.ep b/templates/changelog.html.ep index e511100..aa7c6e6 100644 --- a/templates/changelog.html.ep +++ b/templates/changelog.html.ep @@ -1,5 +1,18 @@

Changelog

+
+
+ 1.9 +
+
+

+ add Generierung vorausgefüllter + Fahrgastrechteformulare bei Zugausfällen und Verspätungen ab 60 + Minuten. +

+
+
+
1.8 diff --git a/templates/journey.html.ep b/templates/journey.html.ep index 343c178..440eec6 100644 --- a/templates/journey.html.ep +++ b/templates/journey.html.ep @@ -31,6 +31,18 @@ ∗ Daten wurden manuell eingetragen

% } + % if ($journey->{cancelled} or ($journey->{rt_arrival} and ($journey->{rt_arrival}->epoch - $journey->{sched_arrival}->epoch) >= 3600)) { +
+ %= form_for 'journeypassenger_rights' => begin + %= csrf_field + %= hidden_field id => $journey->{id} + + %= end +
+ % } -- cgit v1.2.3
Zug