#include "reader/licenceReader.h"

#ifndef EZ_APPLICATION_LICENCE_DISABLE

#include <stdio.h>
#include "licenceGenerator.h"

/// @brief hlavní funkce
/// @param argc
/// @param argv parametry pro generování licence
/// @return
int main8(int argc, char *argv[])
{
  unordered_map<string, string> arguments = getArguments(argc, argv);
  try
  {
    unordered_map<string, string> arguments = getArguments(argc, argv);
    LicenceGenerator generatorOld = LicenceGenerator(arguments["-uid"], arguments["-cid"], arguments["-csd"], arguments["-configFileName"]);
    generatorOld.createLicenceFile();
    //system("pause");

#ifdef READ
    InitStructure initStructure = {};
    initStructure.licenceType = (int)LicenceType::DRT;
    initStructure.licenceVersion = 1;
    initStructure.licenceIndex = 0;
    initStructure.licenceFilePath = ""; //c://_projects//sd_gen//output//"; // cesta k licenčnímu souboru
    initStructure.compatibility = 1;
    // initStructure.compatibility = 0; v případě kompatibility 0 či nezadané je výstup defaultní.
    // pro ELC 1 LicenceELC1Info je to isValid, pro ELC 2 strukura { int protocolId = -1; int dataPointsCount = 0; }
    initStructure.cid_csd_filePath = ""; // cesta k cidu/csd pro načtení a kontrolu licence
    initStructure.uid_filePath = "";     // cesta k souboru machine-id. (/etc/machine-id), takze by mělo být /etc/. machine-id si doplním

    //---------------------------------------- ELC3 ----------------------------------------------------------
    // verze ELC 3 pro jeden protokol. Oproti ELC2 je potřeba přidat cestu k uid/machine-id v initStructure
    LicenceReader licenceReaderELC3{};
    if (licenceReaderELC3.initread(3, initStructure)) // iniciacni nacteni
    {
      LicenceELC3Item info; // podle ELC a kompatibility určit strukuru (LicenceInfo11, LicenceInfo21, LicenceInfo31)
      // if ()
      int protocolId = 7;
      // ukazka dat SD karty
      cout << "název licenčního souboru: " << licenceReaderELC3.licInfo.licenceFileName << "\n";
      cout << "cesta k licenčnímu souboru: " << licenceReaderELC3.licInfo.licenceFilePath << "\n";

      if (licenceReaderELC3.getLicenceItemInfo(protocolId, &info))
      {
        cout << "Pocet licencních bodu pro " << info.protocolId << ": " << info.dataPointsCount << std::endl;
      }
      else
        cout << "Tento protokol nemá body";
    }
    else
    {
      cout << "CHYBA: " << licenceReaderELC3.error.message;
    }
    //---------------------------------------- ELC3 ----------------------------------------------------------
    system("pause");
    return SUCCES;
#endif

    return SUCCES;
  }
  catch (const LicenceException &ex)
  {
    cout << "error: " << ex.getErrorMessage();
    system("pause");
  }
  catch (...)
  {
    cerr << "Obecná chyba\n";
    system("pause");
  }

  system("pause");
  return SUCCES;
}

#endif