use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoFn DoSelect);
use Loader qw(line_printer);
use noris::Table;

# $flag & 1: auch beendete Messsysteme anzeigen
sub list_messsysteme(;$@) {
    my ( $flag, @where ) = @_;
    $flag = 0 unless defined $flag;

    push @where, '( mess_stelle.ende IS NULL OR mess_stelle.ende > UNIX_TIMESTAMP(NOW()) )'
      unless $flag & 1;

    my $where = @where > 0 && "\n WHERE     " . join "\n   AND ", @where;

    line_printer;
    ( my $t = noris::Table->new )->titel(
        { name => "ID",               format => '%5s' },
        { name => "Messsytem",        format => '%s'  },
        { name => "Anz. Messtypen",   format => '%s'  },
        { name => "Anz. Messstellen", format => '%s'  },
    );

    DoSelect {
        my ( $ipk, $ipname, $ipkip, $bits, $anzmt ) = @_;
        my $mts = DoFn <<_;
SELECT count(typ)
  FROM (
    SELECT DISTINCT typ FROM mess_stelle WHERE snmp_host = $ipk
  ) as dt
_

        my $ip;
        unless ($ipname) {
            my $ipo = Dbase::IP->new_db($ipkip,$bits);
            $ip = $ipo->str(4);
        }
        $t->daten( $ipk, $ipname || $ip, $mts, $anzmt );
    }
      <<_;
  SELECT ipkunde.id, ipkunde.name, ipkunde.ip6, ipkunde.bits, count(*) as anzmt
    FROM mess_stelle JOIN ipkunde ON mess_stelle.snmp_host = ipkunde.id
  $where
GROUP BY ipkunde.id, ipkunde.name, ipkunde.snmp_community
ORDER BY ipkunde.name
_

    $t->drucken( );
}

1;
