use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoFn quote);
use Fehler qw(report_fehler problem);
use Loader qw(line_in add_wartungsvertrag list_wartungsvertraege
	edit_wartungsvertrag);

sub edit_wartungsvertraege(;$$) {
	my ($kn,$flags) = @_;
	$flags = 0 unless defined $flags;
	while () {
		my $in = line_in "$kn Wartungsverträge>", 4 or return;
		if ( $in eq '?' ) {
			print <<_;
a	neuen Wartungsvertrag eingeben
l	bestehende Wartungsverträge auflisten
NAME	Wartungsvertrag aufrufen
_
			next;
		}
		elsif ( $in eq 'a' ) {
			add_wartungsvertrag($kn);
			next;
		}
		elsif ( $in eq 'l' ) {
			list_wartungsvertraege($kn);
			next;
		}
		elsif ( $in =~ /^(\d+)$/ ) {
			unless ( $flags & 1 ) {
				edit_wartungsvertrag( $1, $kn );
				next;
			} elsif ( DoFn "SELECT 1 FROM wartungsvertrag WHERE id = $1" ) {
				return $1;
			} else {
				problem "Wartungsvertrag #$1 nicht gefunden.";
				report_fehler(4);
				next;
			}
		}
		elsif ( my $wartungsvertrag =
			DoFn "SELECT id FROM wartungsvertrag WHERE name='${\ quote $in }'" )
		{
			return $wartungsvertrag if $flags & 1;
			edit_wartungsvertrag($wartungsvertrag);
			next;
		}
		problem "Aktion '$in' kenne ich nicht. Liste mit '?'.";
		fehler: report_fehler(4);
	}
}

1;
