diff options
Diffstat (limited to 'lib/Travelynx/Controller/Account.pm')
| -rw-r--r-- | lib/Travelynx/Controller/Account.pm | 47 | 
1 files changed, 47 insertions, 0 deletions
| diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm index e36dcc3..4c69f91 100644 --- a/lib/Travelynx/Controller/Account.pm +++ b/lib/Travelynx/Controller/Account.pm @@ -1,6 +1,7 @@  package Travelynx::Controller::Account;  # Copyright (C) 2020-2023 Birte Kristina Friesel +# Copyright (C) 2025 networkException <git@nwex.de>  #  # SPDX-License-Identifier: AGPL-3.0-or-later  use Mojo::Base 'Mojolicious::Controller'; @@ -1137,6 +1138,52 @@ sub backend_form {  				$type = undef;  			}  		} +		elsif ( $backend->{motis} ) { +			my $s = $self->motis->get_service( $backend->{name} ); + +			$type                = 'MOTIS'; +			$backend->{longname} = $s->{name}; +			$backend->{homepage} = $s->{homepage}; +			$backend->{regions}  = [ map { $place_map{$_} // $_ } +					@{ $s->{coverage}{regions} // [] } ]; +			$backend->{has_area} = $s->{coverage}{area} ? 1 : 0; + +			if ( $backend->{name} eq 'transitous' ) { +				$backend->{regions} = [ 'Weltweit' ]; +			} +			if ( $backend->{name} eq 'RNV' ) { +				$backend->{homepage} = 'https://rnv-online.de/'; +			} + +			if ( +					$s->{coverage}{area} +				and $s->{coverage}{area}{type} eq 'Polygon' +				and $self->lonlat_in_polygon( +					$s->{coverage}{area}{coordinates}, +					[ $user_lon, $user_lat ] +				) +				) +			{ +				push( @suggested_backends, $backend ); +			} +			elsif ( $s->{coverage}{area} +				and $s->{coverage}{area}{type} eq 'MultiPolygon' ) +			{ +				for my $s_poly ( +					@{ $s->{coverage}{area}{coordinates} // [] } ) +				{ +					if ( +						$self->lonlat_in_polygon( +							$s_poly, [ $user_lon, $user_lat ] +						) +						) +					{ +						push( @suggested_backends, $backend ); +						last; +					} +				} +			} +		}  		$backend->{type} = $type;  	} | 
