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

use Loader qw(
	edit_ticket_person
	line_in list_personen list_ticket_addrs log_update log_view
	ticket_has_mail
	valid_ticket
  );
use Fehler qw(report_fehler);
use Dbase::Globals qw(get_kunde find_descr get_person);
use Dbase::Help qw(Do);

sub edit_ticket_personen($;$$$) { # fl&1  Return nach einer Eingabe
	my($tid,$flag,$kn,$id) = @_;

	return unless valid_ticket($tid);

	etp: while(1) {
		my $act = line_in("$kn ".(($flag&1)?'Adresse':'Adressliste').'> ',($flag&1)?0:4);
		last if $act eq "";
		if($act eq "?") {
			if($flag & 1) {
				print <<'END';
### Person                               y@x Adresse
    (ID, Username, Mailadresse, ...)     +## Telefonnummer
?K  Personenliste von Kunde K anzeigen
END
			} else {
				print <<'END';
### Person eintragen                     y@x Adresse eintragen
    (ID, Username, Mailadresse, ...)     +## Telefonnummer eintragen
END
			print <<'END';
l   aktuelle Adressliste anzeigen        DD  Liste komplett löschen (VORSICHT)
?K  Personenliste von Kunde K anzeigen   ??  Erklärung der Personenliste
END
# *   Kundenadressen hinzufügen

			}
			if(not $flag & 1) {
				print <<'END';

Das Eingeben einer Person/Adresse/Telefonnummer trägt diese automatisch in
den Verteiler ein (wenn noch nicht vorhanden) und ruft diesen Eintrag dann
zum Einstellen auf.
Wenn ein Eintrag nicht paßt: 'd' statt <Return> löscht den Eintrag wieder.

END
			}
			next etp;
		}
		if($act eq "??") {
			print <<END;

Die Liste sieht so aus:
lT was     i Kunde Adresse
 2 fax     *     1 # 300 ticket\@noris.net: Allgemeiner Verteiler für Tickets
 2 email         - #   - bla\@fasel.kunde.de

lT      letztes an den Kunden geschicktes Ticket
was     wie der Kunde das Ticket bekommen hat (Email oder Fax oder ...)
i       ob diese Adresse auch interne Texte bekommt
Kunde   Nummer des Kunden, zu dem der Personeneintrag gehört
Adresse Personeneintrag oder E-Mail-Adresse oder Telefon-/Fax-/Handynummer
END
			next etp;
		}
#		if($act eq "*") { add_ticket_personen($tid,0,$kn,$id); next etp; }
		if($act eq "H") { log_view($kn,"ticketadr"); next; }
		if($act =~ /^\?(.+)$/) {
			my $kna = $1;
			my $kid = get_kunde $kna;
			if($kid > 0) { list_personen($kid,$kn); next etp; }
			print "Kunde '$kna' unbekannt.\n";
			next etp;
		}
		if($act eq "DD" and not $flag & 1) {
			log_update("ticketadr","ticket",$tid,undef,"-");
			Do("delete from ticketadr where ticket = $tid");
			next etp;
		}
		if($act eq "l" and not $flag & 1) { list_ticket_addrs($tid,$kn); next etp; }
		# if($act =~ /^\d+$/ or $act =~ /\@/ or $act =~ /^\+[0-9 ]+$/)
		{
			$act = get_person $act unless $act =~ /^\d+$/ or $act =~ /\@/ or $act =~ /^\+[0-9 ]+$/;

			if(defined $act) {
				if($act !~ /^\d+$/) {
					my $pers = get_person $act;
					$act = $pers if $pers > 0;
				}
				return $act if $flag & 1;
				next etp unless defined ticket_has_mail($tid,$act,0,2);
				edit_ticket_person($tid,$act,$kn);
				next etp;
			}
		}
		print "Aktion '$act' unbekannt...?\n";
		next; fehler: report_fehler(4);
	}
	undef;
}

1;
