Unverified Commit 210149a9 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Refactor origins and destinations into common parse_wings function

parent 80139a3a
Loading
Loading
Loading
Loading
+17 −37
Original line number Original line Diff line number Diff line
@@ -199,6 +199,8 @@ sub parse_wagonorder {
	$self->{train_no}   = $self->{data}{istformation}{zugnummer};
	$self->{train_no}   = $self->{data}{istformation}{zugnummer};


	$self->parse_wagons;
	$self->parse_wagons;
	$self->{origins}      = $self->parse_wings('startbetriebsstellename');
	$self->{destinations} = $self->parse_wings('zielbetriebsstellename');
}
}


sub errstr {
sub errstr {
@@ -247,59 +249,37 @@ sub has_bad_wagons {
	return $self->{has_bad_wagons} = 0;
	return $self->{has_bad_wagons} = 0;
}
}


sub origins {
sub parse_wings {
	my ($self) = @_;
	my ( $self, $attr ) = @_;


	if ( exists $self->{origins} ) {
	my @names;
		return @{ $self->{origins} };
	}

	my @origins;
	my %section;
	my %section;


	for my $group ( @{ $self->{data}{istformation}{allFahrzeuggruppe} } ) {
	for my $group ( @{ $self->{data}{istformation}{allFahrzeuggruppe} } ) {
		my $origin   = $group->{startbetriebsstellename};
		my $name     = $group->{$attr};
		my @sections = map { $_->{fahrzeugsektor} } @{ $group->{allFahrzeug} };
		my @sections = map { $_->{fahrzeugsektor} } @{ $group->{allFahrzeug} };
		push( @{ $section{$origin} }, @sections );
		push( @{ $section{$name} }, @sections );
		push( @origins,               $origin );
		push( @names,               $name );
	}
	}


	@origins = uniq @origins;
	@names = uniq @names;

	@origins
	  = map { { name => $_, sections => [ uniq @{ $section{$_} } ] } } @origins;


	$self->{origins} = \@origins;
	@names
	  = map { { name => $_, sections => [ uniq @{ $section{$_} } ] } } @names;


	return @origins;
	return \@names;
}
}


sub destinations {
sub destinations {
	my ($self) = @_;
	my ($self) = @_;


	if ( exists $self->{destinations} ) {
	return @{ $self->{destinations} // [] };
		return @{ $self->{destinations} };
}
	}

	my @destinations;
	my %section;

	for my $group ( @{ $self->{data}{istformation}{allFahrzeuggruppe} } ) {
		my $destination = $group->{zielbetriebsstellename};
		my @sections = map { $_->{fahrzeugsektor} } @{ $group->{allFahrzeug} };
		push( @{ $section{$destination} }, @sections );
		push( @destinations,               $destination );
	}

	@destinations = uniq @destinations;

	@destinations
	  = map { { name => $_, sections => [ uniq @{ $section{$_} } ] } }
	  @destinations;


	$self->{destinations} = \@destinations;
sub origins {
	my ($self) = @_;


	return @destinations;
	return @{ $self->{origins} // [] };
}
}


sub sections {
sub sections {