import 'dart:async';
import "package:springcontrol/ladedaten.dart";
import "package:daciapackete/auswertungen.dart";
import 'package:daciapackete/globals.dart' as globals;
import 'package:daciapackete/logging.dart' as logging;
import "package:daciapackete/speicherdaten.dart";




befehlGegeben()async {
/*
  if (globals.configProxyServer == true) {
    await ladeConfig();
  } */
  await ladeDaten();
  await ladeArbeitsdaten();
  await Auswertungen().auswertungLademanagement();
  await Auswertungen().auswertungKlimamanagement();
  if (globals.arbeitsdaten.befehlGegeben == true) {
    globals.arbeitsdaten.befehlGegeben == false;
    speicherDaten("arbeitsdaten");
    await Future.delayed(Duration(seconds: globals.config.sekundenBefehl));
    await logging.insertElement("Befehl gegeben");
    await ladeDaten();
    await ladeArbeitsdaten();
    await Auswertungen().auswertungLademanagement();
    await Auswertungen().auswertungKlimamanagement();

  }
}
/*
AbrufAuswertungOhne() async {
  await ladeArbeitsdaten();
    await logging.insertElement("AbrufAuswerung");
    await abrufAuswertungAusfuehrung();}
*/
timerRefresh(state) async {
  Timer.periodic(Duration(seconds: globals.config.sekundenRefreshScreen), (timer) async {
    //callSetState();
    await logging.insertElement("timer refresh");
    await ladeArbeitsdaten();
    await ladeAutodaten();
    state(() {});

    //ladeArbeitsdaten();
    //state(() {});
  });}

timerNachBefehlOhne () async {
  await Future.delayed(Duration(seconds: globals.config.sekundenBefehl));
  await befehlGegeben();
}

/*
timerAbrufAuswertungOhne() async {
  Timer.periodic(Duration(minutes: globals.config.zyklus), (timer) async {
    await ladeArbeitsdaten();
    await logging.insertElement("Timer AbrufAuswerungOhne");
   await abrufAuswertungAusfuehrung();
  });}


timerAbrufAuswertungOhne2() async {
  print("timerAbrufAuswertungOhne2-Anfang");
  Timer.periodic(Duration(minutes: globals.daciaAnmeldedaten.zyklus), (timer) async {
    logging.insertElement("**WM-Timer AbrufAuswerung**");
    speicherDaten("arbeitsdaten");
    print("timerAbrufAuswertungOhne2");
    await abrufAuswertungAusfuehrung();
    await speicherDaten("arbeitsdaten");
    if (globals.arbeitsdaten.befehlGegeben == true) {
      globals.arbeitsdaten.befehlGegeben == false;
      await speicherDaten("arbeitsdaten");
      await timerNachBefehlOhne();
    }
  });
}

timerAbrufAuswertung(callSetState) async {
  Timer.periodic(Duration(minutes: globals.daciaAnmeldedaten.zyklus), (timer) async {
    await abrufAuswertungAusfuehrung();
    await speicherDaten("arbeitsdaten");
    if (globals.arbeitsdaten.befehlGegeben == true) {
      globals.arbeitsdaten.befehlGegeben == false;
      await speicherDaten("arbeitsdaten");
      await timerNachBefehlOhne();
    }
    callSetState(){};
  });
}

AbrufAuswertung(callSetState) async {
    logging.insertElement("AbrufAuswertungState");
    await speicherDaten("arbeitsdaten");
    await abrufAuswertungAusfuehrung();
    await speicherDaten("arbeitsdaten");
    if (globals.arbeitsdaten.befehlGegeben == true) {
      globals.arbeitsdaten.befehlGegeben == false;
      await speicherDaten("arbeitsdaten");
      await timerNachBefehlOhne();
    }
    callSetState(() {});
}
*/