use utf8;
use warnings;
no warnings 'redefine';
use strict;
use Dbase::Help qw(Do DoFn);
use Loader qw(edit_hostgroups edit_ipaddrs log_update);

sub toggle_host_in_group($$$;$) {
	my ( $kunde, $kn, $host, $gruppe ) = @_;

	for (
		[ ipkunde => \$host, sub { edit_ipaddrs( $kunde, 1 | 2, $kn ) } ],
		[ hostgroup => \$gruppe, sub { edit_hostgroups( $kunde, 1, $kn ) } ]
	  )
	{
		my ( $table, $ref_id, $prompt ) = @$_;
		$$ref_id = &$prompt unless defined $$ref_id;
		return unless defined $$ref_id;
		die if $$ref_id !~ /^\d+\z/;
	}

	if ( DoFn(<<_) ) {
	SELECT 1 FROM ip_hostgroup WHERE host = $host AND gruppe = $gruppe
_
		log_update(
			ipkunde =>
			  id => $host,
			undef,
			hostgroup => '-',
			undef, $gruppe
		);
		log_update(
			hostgroup =>
			  id => $gruppe,
			undef,
			host => '-',
			undef, $host
		);
		Do("DELETE FROM ip_hostgroup WHERE host = $host AND gruppe = $gruppe");
		print "Zuordnung gelöscht.\n";
	}
	else {
		log_update(
			ipkunde =>
			  id => $host,
			undef,
			hostgroup => '*',
			undef, $gruppe
		);
		log_update(
			hostgroup =>
			  id => $gruppe,
			undef,
			host => '*',
			undef, $host
		);
		Do("INSERT INTO ip_hostgroup SET host = $host, gruppe = $gruppe");
		print "Host in Gruppe eingetragen.\n";
	}
}

1;
