use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Globals qw(get_descr);
use Dbase::Help qw(Do);
use Fehler qw(warnung);
use Loader qw(
  current_user
  edit_messtyp
  line_in
  log_update
  set_messtyp_name
  set_messtyp_dienst
  set_messtyp_wertart
  set_messtyp_einheit
  set_messtyp_collectd_typ
  set_messtyp_collectd_intervall
  set_messtyp_rrd_typ
  set_messtyp_rrd_min
  set_messtyp_rrd_max
  set_messtyp_rrd_faktor
  set_messtyp_snmp_faktor
  set_messtyp_oid_praefix
  set_messtyp_info
  set_messtyp_status
);

sub add_messtyp($) {
    my ($kn) = @_;

    defined( my $name    = set_messtyp_name( undef,    $kn ) ) or return;
    defined( my $dienst  = set_messtyp_dienst( undef,  $kn ) ) or return;
    defined( my $wertart = set_messtyp_wertart( undef, $kn ) ) or return;
    defined( my $einheit = set_messtyp_einheit( undef, $kn ) ) or return;
    defined( my $rrd_typ = set_messtyp_rrd_typ( undef, $kn ) ) or return;
    my $rrd_min = set_messtyp_rrd_min( undef, $kn );
    my $rrd_max = set_messtyp_rrd_max( undef, $kn );

    my ( $rrd_faktor, $snmp_faktor, $collectd_typ );
    if ( $rrd_typ eq "'1'" ) {
        $snmp_faktor = "'1'";
        $collectd_typ = "'work'";
        warnung 'Da der RRD-Typ auf ' . get_descr( "rrd_typ", 1 )
          . " gesetzt wurde, wird der collectd_typ auf 'work' und "
          . " der SNMP Faktor auf 1 gesetzt!";
        defined( $rrd_faktor = set_messtyp_rrd_faktor( undef,  $kn ) ) or return;
    }
    else {
        $rrd_faktor = "'1'";
        warnung 'Da der RRD-Typ nicht auf ' . get_descr( "rrd_typ", 1 )
          . " gesetzt wurde, wird der RRD Faktor auf 1 gesetzt!";
        defined( $snmp_faktor  = set_messtyp_snmp_faktor( undef,  $kn ) ) or return;
        defined( $collectd_typ = set_messtyp_collectd_typ( undef, $kn ) ) or return;
    }
    defined( my $collectd_intervall = set_messtyp_collectd_intervall(undef, $kn) ) or return;
    my $oid_praefix = set_messtyp_oid_praefix( undef, $kn );
    my $info        = set_messtyp_info( undef,        $kn );
    defined( my $status = set_messtyp_status( undef,  $kn ) ) or return;

    my $id = Do <<_;
        INSERT INTO mess_typ
        SET name               = $name,
            dienst             = $dienst,
            wertart            = $wertart,
            einheit            = $einheit,
            collectd_typ       = $collectd_typ,
            collectd_intervall = $collectd_intervall,
            rrd_typ            = $rrd_typ,
            rrd_min            = $rrd_min,
            rrd_max            = $rrd_max,
            rrd_faktor         = $rrd_faktor,
            snmp_faktor        = $snmp_faktor,
            oid_praefix        = $oid_praefix,
            info               = $info,
            status             = $status
_
    log_update mess_typ => id => $id, undef, '*';
    edit_messtyp $id, $kn;
}

1;
