use utf8;
use strict;
use warnings; no warnings qw(redefine);
use Dbase::Help qw(DoFn DoTime);
use Dbase::Globals qw(test_descr_flag);
use Fehler qw(problem warnung);
use Loader qw(strip_kn);

sub valid_domain($;$$) {
	my($id,$flag,$kn) = @_;
	$flag = 0 unless $flag;
	my $err;

	return problem $kn,"ID '$id' ist nicht numerisch!\n" unless $id =~ /^\d+$/;
	return problem $kn,"Domain '$id' gibt es nicht."
		unless DoFn("select count(*) from domainkunde where id = $id");

	$kn = strip_kn($kn)."Domain_$id";

	unless($flag&1) {
		my($domain_ende, $status, $tarif_ende, $tarif_id) = DoFn <<_;
	SELECT    domainkunde.ende, domainkunde.status,
	          tarifkunde.ende, tarifkunde.id
	FROM      domainkunde
	LEFT JOIN tarifkunde ON tarifkunde.id = domainkunde.ktarif
	WHERE     domainkunde.id = $id
_
		# TODO: ersetzen durch sinnvollere Abfrage, RT#224478

		if (test_descr_flag("domainstatus",$status,"registriert") and (not $domain_ende or $domain_ende > DoTime)) {
			unless (defined $tarif_id) {
				return warnung $kn, "Zu dieser Domain gibt es keinen Tarif.\n";
			} elsif ( $tarif_ende && $tarif_ende < DoTime ) {
				return warnung $kn, "Der Tarif dieser Domain ist bereits beendet.\n";
			}
		}
	}

	$err ? undef : $id;
}
1;
