diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2019-04-13 10:43:05 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2019-04-13 10:43:05 +0200 | 
| commit | 1ee185d26bbfb9c7ef37aa6405645c8049d56f53 (patch) | |
| tree | 7eeb83f545f7452cdbfea2654f35ce2c872d5958 /lib/Travelynx/Controller | |
| parent | 863a33b111506e66850ccf1dcfde9e42584f52ab (diff) | |
work-in-progress manual journey entry. incomplete and not enabled yet.
Diffstat (limited to 'lib/Travelynx/Controller')
| -rwxr-xr-x | lib/Travelynx/Controller/Traveling.pm | 74 | 
1 files changed, 70 insertions, 4 deletions
| diff --git a/lib/Travelynx/Controller/Traveling.pm b/lib/Travelynx/Controller/Traveling.pm index ce7d1d4..0ace304 100755 --- a/lib/Travelynx/Controller/Traveling.pm +++ b/lib/Travelynx/Controller/Traveling.pm @@ -8,7 +8,11 @@ use Travel::Status::DE::IRIS::Stations;  sub homepage {  	my ($self) = @_;  	if ( $self->is_user_authenticated ) { -		$self->render( 'landingpage', with_geolocation => 1 ); +		$self->render( +			'landingpage', +			with_autocomplete => 1, +			with_geolocation  => 1 +		);  	}  	else {  		$self->render( 'landingpage', intro => 1 ); @@ -216,8 +220,9 @@ sub station {  	if ( $status->{errstr} ) {  		$self->render(  			'landingpage', -			with_geolocation => 1, -			error            => $status->{errstr} +			with_autocomplete => 1, +			with_geolocation  => 1, +			error             => $status->{errstr}  		);  	}  	else { @@ -517,7 +522,68 @@ sub edit_journey {  sub add_journey_form {  	my ($self) = @_; -	$self->render( 'add_journey', error => undef ); +	if ( $self->param('action') and $self->param('action') eq 'save' ) { +		my $parser = DateTime::Format::Strptime->new( +			pattern   => '%d.%m.%Y %H:%M', +			locale    => 'de_DE', +			time_zone => 'Europe/Berlin' +		); +		my %opt; + +		my @parts = split( qr{\s+}, $self->param('train') ); + +		if ( @parts == 2 ) { +			@opt{ 'train_type', 'train_no' } = @parts; +		} +		elsif ( @parts == 3 ) { +			@opt{ 'train_type', 'train_line', 'train_no' } = @parts; +		} +		else { +			$self->render( +				'add_journey', +				with_autocomplete => 1, +				error => +'Zug muss als „Typ Nummer“ oder „Typ Linie Nummer“ eingegeben werden.' +			); +			return; +		} + +		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; +			} +			$opt{$key} = $datetime; +		} + +		for my $key (qw(dep_station arr_station)) { +			$opt{$key} = $self->param($key); +		} + +		$self->app->dbh->begin_work; + +		my ( $checkin_id, $checkout_id, $error ) = $self->add_journey(%opt); + +		$self->app->dbh->rollback; +		$self->render( +			'add_journey', +			with_autocomplete => 1, +			error             => $error +		); +		return; +	} + +	$self->render( +		'add_journey', +		with_autocomplete => 1, +		error             => undef +	);  }  1; | 
