use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoSelect DoFn qquote);
use Dbase::Globals qw(content);
use Fehler qw(warnung problem);
use Loader qw(edit_ipaddrs line_in set_messstelle_snmp_host);

#idi = mess_stelle.snmp_host = ipkunde.id
sub set_messsystem_snmp_host($;$) {
    my ( $idi, $kn ) = @_;
    return problem "Keinen SNMP Host angegeben.\n"
      unless defined $idi;

    defined( my $snmp_host = edit_ipaddrs( '1', 1 | 2 | 4, 'SNMP Host:' ) ) or return;
    #content( my $snmp_host = line_in 'SNMP Host: ' ) or return;

    my @ids;
    my @warnids;
    DoSelect {
        my ($msid) = @_;
        my ( $osuf, $obeg ) = DoFn <<_;
SELECT oid_suffix, beginn
  FROM mess_stelle
 WHERE id = $msid
_
        my ($other) = DoFn <<_;
SELECT count(*)
  FROM mess_stelle
 WHERE snmp_host  = ${ \qquote($snmp_host) }
   AND oid_suffix = ${ \qquote($osuf) }
   AND beginn     = ${ \qquote($obeg) }
_

        unless ($other) {
            push @ids, $msid;
        }
        else {
            push @warnids, $msid;
        }
    }
    "SELECT id FROM mess_stelle WHERE snmp_host = $idi";

    if (@warnids) {
        warnung <<_;
    Der SNMP Host kann für bestimmte Messstellen nicht verändert werden, da
    es dann doppelte Einträge (SNMP, OID, Beginn) in der DB geben wird.
    Folgende Messstellen sind betroffen:
    ${ \"@warnids" }
_
        return;
    }
    else {
        set_messstelle_snmp_host( $_, $kn, $snmp_host ) for @ids;
        return 1;
    }
}

1;
