use utf8;
use warnings; no warnings "redefine";
use strict;

use Loader qw(line_in line_printer log_update valid_kunde log_view);
use Fehler qw(report_fehler);
use Dbase::Help qw(Do DoSelect qquote DoFn);
use Dbase::Globals qw(get_kunde name_kunde);

sub edit_aliase ($;$) {
	my($id,$kn) = @_;
	return unless valid_kunde($id);

	$kn = "Kunde $id:" .name_kunde($id) if $kn eq "";

	my $act = "run";
	while(1) {
		if(defined $act and $act eq "run") {
			$act = "l";
		} else {
			$act = line_in "$kn Alias >",4; last if $act eq "";
		}
		if($act eq "?") {
			print <<'END';
l   auflisten
a   hinzufügen
d   löschen
del löschen
END
			next;
		}
		if($act eq "l") {
			shift @_;
			line_printer;

			my $hdr;
			DoSelect {
				print $Db::pr_fh <<END unless $hdr++;
Aliasname
END
				my($uucpname) = @_;
				print $Db::pr_fh "$uucpname\n";
			} "select name from uucpkunde where kunde = $id order by name"
				or print "(leer)\n";
			next;
		}
		if($act eq "H") { log_view($kn,"uucpkunde"); next; }
		if($act eq "a") {
			my $nn = line_in "Alias: "; next if $nn =~ /^\d*$/;
			my $no = get_kunde $nn;
			if(defined $no and $no != $id) {
				print "Diesen Namen gibt es schon!\n";
				next;
			}
			log_update("uucpkunde","name",$nn,undef,"*");
			log_update("kunde","id",$id,undef,"uucpkunde","*",undef,$nn);
			Do("insert into uucpkunde set kunde=$id, name=${\qquote $nn}");

			next;
		}
		if($act eq "d" or $act eq "del") {
			my $nn = line_in("Alias: "); next if $nn =~ /^\d*$/;
			unless (
				my ($xid) = DoFn(
					'SELECT kunde FROM uucpkunde WHERE name = ' . qquote($nn)
				)
			  )
			{
				print "Kenne ich nicht.\n";
			}
			elsif ( $xid != $id ) {
				print "Gehört zu Kunde #$xid:" . name_kunde($xid) . "\n";
			}
			log_update( uucpkunde => name => $nn, undef, '-' );

			log_update("kunde","id",$id,undef,"uucpkunde","-",undef,$nn);
			Do("delete from uucpkunde where kunde = $id and name = ${\qquote $nn}");
			get_kunde( $nn, 4 );
			next;
		}

		print "Aktion '$act' kenne ich nicht. Liste mit '?'.\n";
		next; fehler: report_fehler(4);
	}
	$id;
}

1;
