add auto-generated passenger rights forms
This commit is contained in:
parent
8c160f6854
commit
0822cfc993
6 changed files with 111 additions and 0 deletions
1
cpanfile
1
cpanfile
|
@ -1,4 +1,5 @@
|
||||||
requires 'Cache';
|
requires 'Cache';
|
||||||
|
requires 'CAM::PDF';
|
||||||
requires 'Crypt::Eksblowfish';
|
requires 'Crypt::Eksblowfish';
|
||||||
requires 'DateTime';
|
requires 'DateTime';
|
||||||
requires 'DateTime::Format::Strptime';
|
requires 'DateTime::Format::Strptime';
|
||||||
|
|
|
@ -2906,6 +2906,8 @@ sub startup {
|
||||||
$authed_r->post('/account/insight')->to('account#insight');
|
$authed_r->post('/account/insight')->to('account#insight');
|
||||||
$authed_r->post('/journey/add')->to('traveling#add_journey_form');
|
$authed_r->post('/journey/add')->to('traveling#add_journey_form');
|
||||||
$authed_r->post('/journey/edit')->to('traveling#edit_journey');
|
$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/password')->to('account#change_password');
|
||||||
$authed_r->post('/account/mail')->to('account#change_mail');
|
$authed_r->post('/account/mail')->to('account#change_mail');
|
||||||
$authed_r->post('/delete')->to('account#delete');
|
$authed_r->post('/delete')->to('account#delete');
|
||||||
|
|
83
lib/Travelynx/Controller/Passengerrights.pm
Normal file
83
lib/Travelynx/Controller/Passengerrights.pm
Normal file
|
@ -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;
|
BIN
public/static/pdf/fahrgastrechteformular.pdf
Normal file
BIN
public/static/pdf/fahrgastrechteformular.pdf
Normal file
Binary file not shown.
|
@ -1,5 +1,18 @@
|
||||||
<h1>Changelog</h1>
|
<h1>Changelog</h1>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col s12 m1 l1">
|
||||||
|
1.9
|
||||||
|
</div>
|
||||||
|
<div class="col s12 m11 l11">
|
||||||
|
<p>
|
||||||
|
<i class="material-icons left">add</i> Generierung vorausgefüllter
|
||||||
|
Fahrgastrechteformulare bei Zugausfällen und Verspätungen ab 60
|
||||||
|
Minuten.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s12 m1 l1">
|
<div class="col s12 m1 l1">
|
||||||
1.8
|
1.8
|
||||||
|
|
|
@ -31,6 +31,18 @@
|
||||||
∗ Daten wurden manuell eingetragen
|
∗ Daten wurden manuell eingetragen
|
||||||
</p>
|
</p>
|
||||||
% }
|
% }
|
||||||
|
% if ($journey->{cancelled} or ($journey->{rt_arrival} and ($journey->{rt_arrival}->epoch - $journey->{sched_arrival}->epoch) >= 3600)) {
|
||||||
|
<div style="text-align: center; margin-bottom: 1em;">
|
||||||
|
%= form_for 'journeypassenger_rights' => begin
|
||||||
|
%= csrf_field
|
||||||
|
%= hidden_field id => $journey->{id}
|
||||||
|
<button class="btn waves-effect waves-light grey darken-3" type="submit" name="action" value="generate">
|
||||||
|
<i class="material-icons left">file_download</i>
|
||||||
|
Fahrgastrechte
|
||||||
|
</button>
|
||||||
|
%= end
|
||||||
|
</div>
|
||||||
|
% }
|
||||||
<table class="striped">
|
<table class="striped">
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Zug</th>
|
<th scope="row">Zug</th>
|
||||||
|
|
Loading…
Reference in a new issue