use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in select_descr);
use Dbase::Help qw(DoT DoFn);
use Dbase::Globals qw(get_person);
use Fehler qw(problem);

sub select_person(;$$) {
	my($id,$kn) = @_;

    if(not defined $kn or $kn eq "") {
        $kn = "Person";
    } elsif($kn =~ s/^\s+//) {
        $kn = "### $kn";
    }
    my $pers = line_in "$kn: "; return undef if $pers eq "";

	$pers = get_person $pers; return undef unless $pers;

	my $num = DoFn("select count(*) from kundemail where kunde = $id and person = $pers");
	(print "unbekannt\n"),return undef if $num == 0;

	return "kunde = $id and person = $pers" if $num == 1;

	my $dienst;
	my $res = DoT("select distinct dienst from kundemail where kunde = $id and person = $pers");
	if(ref $res and $#$res == 0) { # nicht fragen, wenn sowieso nur ein Dienst in Frage kommt
		$dienst = $res->[0][0];
	} else {
		$dienst = select_descr("dienst",0,"","","!hide");
		return undef unless defined $dienst;
	}
	$num = DoFn("select count(*) from kundemail where kunde = $id and person = $pers and dienst = $dienst");
	(print "unbekannt\n"),return undef if $num == 0;
	return "kunde = $id and person = $pers and dienst = $dienst" if $num == 1;

	my $prio = line_in('Priorität> ', 0, undef, 0);
	return problem('Die Priorität muss eine ganze Zahl zwischen 0 und 99 sein.')
	  if $prio !~ /^\d{1,2}\z/;

	$num = DoFn("select count(*) from kundemail where kunde = $id and dringend = $prio and person = $pers and dienst = $dienst");
	(print "unbekannt\n"),return undef if $num == 0;
	(print "Datenbankfehler!\n"), return undef if $num > 1;
	return "kunde = $id and person = $pers and dienst = $dienst and dringend = $prio";
}

1;
