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

use Dbase::Globals qw(content get_gruppen name_kunde puny_encode);
use Dbase::Help qw(Do DoFn qquote);
use Fehler qw(problem);
use Loader qw(edit_kunden line_in log_update);

my ( $target_irrelevant_grs, $target_irrelevant_grc ) =
  get_gruppen( mailrules_ident => 'target_irrelevant', 1 );

sub set_mailrule_kunde($;$) {
	my ( $kunde_id, $kn ) = @_;

	content( my $quelle = line_in('Quelladresse: ') ) or return;

	my $id_mailrule;
	if ( $quelle eq '*' ) {
		$id_mailrule = DoFn(<<_);
	SELECT id
	FROM   mailrules
	WHERE  kunde = $kunde_id AND quelle IS NULL
_
	}
	else {
		( $id_mailrule, my $id_kunde ) = DoFn(<<_);
	SELECT id, kunde
	FROM   mailrules
	WHERE  quelle = ${\ qquote(puny_encode($quelle,4)) }
_
		return problem( "Diese Regel gehört zu Kunde #$id_kunde:"
			  . name_kunde($id_kunde)
			  . '.' )
		  if defined $id_kunde && $id_kunde != $kunde_id;
	}
	return problem('Für diese Adresse gibt es gar keine Regel.')
	  unless defined $id_mailrule;

	my $neuer_kunde = edit_kunden( 1, $kn ) or return;

	return problem('Wolltest Du den Kunden nicht ändern?!')
	  if $neuer_kunde == $kunde_id;

	log_update(
		mailrules =>
		  kunde   => $kunde_id,
		undef,
		quelle => 'kunde_neu',
		undef,
		defined $quelle ? $quelle : '*', $neuer_kunde
	);
	log_update(
		mailrules =>
		  kunde   => $neuer_kunde,
		undef,
		quelle => 'kunde_alt',
		undef,
		defined $quelle ? $quelle : '*', $kunde_id
	);
	Do("UPDATE mailrules SET kunde=$neuer_kunde WHERE id = $id_mailrule");
}

1;
