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

use Fehler qw(report_fehler problem);
use Loader qw(
	delete_handle
	line_in list_handle list_person_flags log_view
	list_person_riperecord
	set_handle_handle
	set_handle_pw
	set_handle_status
	set_handle_ticket
	set_handle_user
	strip_kn
	valid_handle
	warn_arbeit
);
use Dbase::Help qw(DoFn Do);
use Dbase::Globals qw(find_descr get_descr kpersinfo);

sub edit_handle($$;$) {
	my($pers,$nic,$kn) = @_; # person handle

	return unless valid_handle($pers,$nic,16|1,$kn);

	my $nici = get_descr("nic",$nic);
	$kn = strip_kn($kn)."Handle_$pers/$nic:".kpersinfo($pers)."/".get_descr("nic",$nic);

	unless(DoFn("select count(*) from nic where person=$pers and nic=$nic")) {
		Do("insert into nic set person=$pers, nic=$nic, status=0");
		print "... neu angelegt.\n";
		unless(set_handle_handle($pers,$nic,$kn)) {
			# ... dann tue garnix
#			Do("delete from nic where person=$pers and nic=$nic");
#			return undef;
		}
		print <<END;
Wenn es für diesen Handle einen eigenen Usernamen oder ein Passwort bei
diesem NIC gibt, bitte jetzt angeben, ansonsten zweimal <Return> drücken.

Ausserdem mit "s" den Status auf 'OK_NIC' oder 'OK' setzen, wenn
dieser Handle bereits vom NIC bestätigt bzw. von uns überprüft wurde.
END
		set_handle_user($pers,$nic,$kn);
		set_handle_pw($pers,$nic,$kn);
	}

	my $work = warn_arbeit("handle","$pers.$nic","*",$kn);

	while(1) {
		my $act = line_in "$kn >",4; last if $act eq "";
		if($act eq '?') {
			print <<'END';
l   auflisten
h   Handle eintragen         p   RIPE-Handle ausgeben
u   Username                 up  Passwort
s   Status setzen            t   Ticket setzen (Antrag)

del komplett löschen
END
			next;
		}
		if($act eq 'l') { list_handle($pers,$nic,$kn); next; }
		if($act eq 'd') {
			return unless delete_handle($pers,$nic,$kn);
			next;
		}
		if($act eq 'del') {
			return unless delete_handle($pers,$nic,$kn,1);
			next;
		}
		if($act eq 'H') { log_view($kn,"nic","person",$pers,"nic",$nic); next; }
		if($act eq 'h') { set_handle_handle($pers,$nic,$kn); next; }
		if($act eq 'u') { set_handle_user($pers,$nic,$kn); next; }
		if($act eq 'up') { set_handle_pw($pers,$nic,$kn); next; }
		if($act eq 'p') { list_person_riperecord($pers, $nic); next; }
		if($act eq 's') { set_handle_status($pers,$nic,$kn); next; }
		if($act eq 't') { set_handle_ticket($pers,$nic,$kn); next; }
		print "Aktion '$act' kenne ich nicht. Liste mit '?'.\n";
		next; fehler: report_fehler(4);
	}
	$pers;
}

1;
