use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in log_update valid_ticket valid_person strip_kn
		warn_arbeit log_view edit_person);
use Fehler qw(report_fehler);
use Dbase::Globals qw(kpersinfo get_person);
use Dbase::Help qw(DoFn);

sub edit_ticket_person($$;$) {
	my($tid,$pers,$kn) = @_;
	my $isadr = 0;
	my @isadr;

	return unless valid_ticket($tid);
	return unless valid_person($pers);

	if($pers =~ /^\d+$/) {
		$isadr = "person = $pers";
		@isadr = ("person",$pers);
		my $knp = kpersinfo($pers); $knp =~ s/\s+/_/g; 
		$kn = strip_kn($kn)."Adr_$pers:$knp";
	} else {
		$isadr = get_person($pers);
		if($isadr > 0 and DoFn("select person from ticketadr where ticket = $tid and person = $isadr" > 0)) {
			$pers = $isadr; $isadr = "person = $pers";
			@isadr = ("person",$pers);
			my $knp = kpersinfo($pers); $knp =~ s/\s+/_/g; 
			$kn = strip_kn($kn)."Adr_$pers:$knp";
		} elsif (DoFn("select count(*) from ticketadr where ticket = $tid and email = ${\qquote $pers}") > 0) {
			$kn = strip_kn($kn)."Adr_$pers";
			$isadr = "adr = $isadr";
			@isadr = ("adr",$isadr);
		} else {
			print "...Eintrag nicht gefunden...\n";
			return undef;
		}
	}
	my $work = warn_arbeit("ticketperson","$tid,$pers","*",$kn);
	
	$isadr = "ticket = $tid and $isadr";
	push(@isadr,"ticket",$tid);

	etl: while(1) {
		my $act = line_in "$kn >",4; last if $act eq "";
		if($act eq "?") {
			print <<END;
l    anzeigen
d    löschen
END
			print <<END if $pers =~ /^\d+$/;
p    Personenrecord editieren
END
			print <<END;
mX   Marker für RT auf X setzen (löschen '-')

END
			next;
		}
		if($act eq "H") { log_view($kn,"ticketadr","ticket",$tid); next; }
		if($act eq "l") {
			my($mark) = DoFn("select marker from ticketadr where $isadr");
			print "Adresse : ".(($pers =~ /^\d+$/) ? persinfo($pers):$pers)."\n";
			print "MarkerRT: $mark\n" if $mark ne "";
			next;
		}
		if($act eq "p" and $pers =~ /^\d+$/) {
			return undef if !defined edit_person($pers,0,$kn);
			next;
		}
		if($act eq "d") {
			log_update("ticketadr","ticket",$tid,undef,"-");
			Do("delete from ticketadr where $isadr");
			return undef;
		}
		if($act =~ /m(.)?/) {
			my $mark = $1;
			if($mark eq "") { $mark = "'x'"; }
			elsif($mark eq "-") { $mark = "NULL"; }
			else { $mark = "'$mark'"; }
			log_update("ticketadr","ticket",$tid,undef,"marker");
			Do("update ticketadr set marker = $mark where $isadr");
			next;
		}
		print "Aktion '$act' unbekannt...\n";
		next; fehler: report_fehler(4);
	}
	undef;
}
1;

