use utf8;
use warnings;
no warnings 'redefine';
use strict;

use Dbase::Globals qw(content);
use Dbase::Help qw(DoFn qquote);
use Fehler qw(report_fehler);
use Loader qw(
  add_kunde_hostgroup
  edit_hostgroup
  line_in
  list_hostgroups
  log_view
);

# Flags: 1: Return mit Eintrag

sub edit_hostgroups($;$$) {
	my ( $kunde_id, $flag, $kn ) = @_;
	$flag = 0 unless defined $flag;

	$kn =
	  $kunde_id ? "Kunde $kunde_id:" . name_kunde($kunde_id) : 'alle Kunden'
	  if $kn eq "";

	while () {
		content( my $act = line_in( "$kn Hostgroups >", $flag & 1 ? 0 : 4 ) )
		  or last;

		if ( $act eq '?' ) {
			print <<'1' . ( defined $kunde_id && <<'2' );
l  Hostgroups auflisten
## Hostgroup auswählen
1
a  neue Hostgroup anlegen
2
			next;
		}

		if ( defined $kunde_id && $act eq 'a' ) {
			my $id = add_kunde_hostgroup( $kunde_id, $kn );
			return $id if $flag & 1 && defined $id;
			next;
		}

		if ( $act eq 'H' ) { log_view( $kn, 'hostgroup' ); next; }

		if ( $act eq 'l' ) { list_hostgroups($kunde_id); next }

		if ( defined( my $hostgroup = DoFn(<<_) ) ) {
	SELECT id
	FROM   hostgroup
	WHERE  name = ${\ qquote($act) } OR id = ${\ qquote($act) }
_
			return $hostgroup if $flag & 1;
			edit_hostgroup( $hostgroup, $kunde_id, $kn );
			next;
		}

		print "Aktion '$act' kenne ich nicht. Liste mit '?'.\n";
		next;
		fehler: report_fehler(4);
	}

	undef;
}

1;
