use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Globals qw(beendet);
use Dbase::Help qw(DoSelect isotime DoTime);
use Fehler qw(warnung);
use Loader qw(line_printer);

my @roles  = qw(Owner Admin-C Tech-C Zone-C Bill-C);
my $format = "%5s %-50s %s\n";

# $flags & 1 => auch beendete Domains anzeigen
# $flags & 2 => Ausgabe in Form einer Warnung

sub list_person_domains($;$$) {
	my($id,$kn,$flags) = @_;
	$flags=0 unless defined $flags;

	my $output;
	DoSelect {
		my %role;
		( my $domain_id, my $domain, my $domain_ende, @role{@roles} ) = @_;
		$output .= sprintf $format,
		                   $domain_id,
		                   $domain . beendet($domain_ende),
		                    join('/', grep defined $role{$_} && $role{$_} == $id, @roles);
	  } <<1 . ($flags & 1 ? '' : <<'2') . <<'3';
	SELECT   id, domain, ende, owner, adminc, techc, zonec, billc
	FROM     domainkunde
	WHERE    $id IN (owner, adminc, techc, zonec, billc)
1
	     AND ( ende IS NULL OR ende >= UNIX_TIMESTAMP(NOW()) )
2
	ORDER BY id
3
	return unless $output;

	$output = sprintf($format, qw(Nr Domain Funktion(en))) . $output;

	if ( $flags & 2 ) {
		warnung <<_;
Diese Person ist bei mindestens einer Domain eingetragen:

$output
=> Evtl. sind hier nun Updates erforderlich.
=> Bitte domain-Ticket öffnen, ggf. als Followup!
_
	} else {
		line_printer;
		no warnings 'once';
		print $Db::pr_fh $output;
	}
}

1;
