import 'package:rkm/service/db/db_sqlite_load.dart';
import 'package:sqflite/sqflite.dart';

class DbSqliteSigtap{
  Future deleteSigtap()async{
       var querys = [
            "DELETE FROM PROCEDIMENTOS_SIGTAP;",
            "DELETE FROM PROCEDIMENTOS_SIGTAP_REGISTRO;",
            "DELETE FROM CIDS;",
            "DELETE FROM PROCEDIMENTOS_SIGTAP_CID;",
            "DELETE FROM CBOS;",
            "DELETE FROM PROCEDIMENTOS_SIGTAP_CBO;"
       ];
       Database db = await DbSqliteLoad().intialDB();
       for(int i=0;querys.length>i;i++){
           db.execute(querys[i]);
       }
  }
  Future saveProceduresSigtapDB(var rows)async{
    Database db = await DbSqliteLoad().intialDB();
    Batch batch = db.batch();
    rows.forEach((row) {
      batch.insert('PROCEDIMENTOS_SIGTAP', row);
    });
    List<Object?> result = await batch.commit();
    print('Linhas inseridas: ${result.length}');
    List<Map<String, dynamic>> PROCEDIMENTOS_SIGTAP = await db.query('PROCEDIMENTOS_SIGTAP');
    print('Total de PROCEDIMENTOS_SIGTAP : ${PROCEDIMENTOS_SIGTAP.length}');
    return db;
  }
  Future saveProceduresRegisterSigtapDB(var rows)async{
    Database db = await DbSqliteLoad().intialDB();
    Batch batch = db.batch();
      rows.forEach((row) {
        batch.insert('PROCEDIMENTOS_SIGTAP_REGISTRO', row);
      });
      List<Object?> result = await batch.commit();
      print('Linhas inseridas: ${result.length}');
      List<Map<String, dynamic>> PROCEDIMENTOS_SIGTAP_REGISTRO = await db.query('PROCEDIMENTOS_SIGTAP_REGISTRO');
      print('Total de PROCEDIMENTOS_SIGTAP_REGISTRO : ${PROCEDIMENTOS_SIGTAP_REGISTRO.length}');
    return db;
  }
  Future saveSigtapCID(var rows)async{
    Database db = await DbSqliteLoad().intialDB();
    Batch batch = db.batch();
      rows.forEach((row) {
        batch.insert('CIDS', row);
      });
      List<Object?> result = await batch.commit();
      print('Linhas inseridas: ${result.length}');
      List<Map<String, dynamic>> CIDS = await db.query('CIDS');
      print('Total de CIDS : ${CIDS.length}');
    return db;
  }
  Future saveProceduresSigtapCID(var rows)async{
    Database db = await DbSqliteLoad().intialDB();
    Batch batch = db.batch();
    rows.forEach((row) {
      batch.insert('PROCEDIMENTOS_SIGTAP_CID', row);
    });
    List<Object?> result = await batch.commit();
    print('Linhas inseridas: ${result.length}');
    List<Map<String, dynamic>> PROCEDIMENTOS_SIGTAP_CID = await db.query('PROCEDIMENTOS_SIGTAP_CID');
    print('Total de PROCEDIMENTOS_SIGTAP_CID : ${PROCEDIMENTOS_SIGTAP_CID.length}');
    return db;
  }
  Future saveCBOSigtap(var rows)async{
    Database db = await DbSqliteLoad().intialDB();
    Batch batch = db.batch();
    rows.forEach((row) {
      batch.insert('CBOS', row);
    });
    List<Object?> result = await batch.commit();
    print('Linhas inseridas: ${result.length}');
    List<Map<String, dynamic>> CBOS = await db.query('CBOS');
    print('Total de CBOS : ${CBOS.length}');
    return db;
  }
  Future saveProceduresCBOSigtap(var rows)async{
    Database db = await DbSqliteLoad().intialDB();
    Batch batch = db.batch();
      rows.forEach((row) {
        batch.insert('PROCEDIMENTOS_SIGTAP_CBO', row);
      });
      List<Object?> result = await batch.commit();
      print('Linhas inseridas: ${result.length}');
      List<Map<String, dynamic>> PROCEDIMENTOS_SIGTAP_CBO = await db.query('PROCEDIMENTOS_SIGTAP_CBO');
      print('Total de PROCEDIMENTOS_SIGTAP_CBO : ${PROCEDIMENTOS_SIGTAP_CBO.length}');
    return db;
  }
  Future saveSyncSigtap(competencia)async{
    Database db = await DbSqliteLoad().intialDB();
    //refatorar cidade_load e nome_cidade
    // 'parameters = [{"carga_inicial": 1, "cidade_load": cidade, "nome_cidade": vm.nomeCidade[cidade], "cidade_id": cidadeID, "estado": estado, "ibge": ibge, "ambiente": ambiente, "competencia": competencia.replace(/\D/g, '')}]';
    // "INSERT OR REPLACE INTO CONTROLE_INTERNO (rowid, CARGA_INICIAL, CIDADE_LOAD, NOME_CIDADE, ID_MUNICIPIO, UF_ESTADO, CODIGO_IBGE, AMBIENTE, COMPETENCIA) VALUES (1,?,?,?,?,?,?,?,?)";

    Map<String, dynamic> row = {
      'COMPETENCIA' : competencia,
    };
   await db.update('CONTROLE_INTERNO', row,where: "CARGA_INICIAL = 1");
    print(await db.query('CONTROLE_INTERNO'));
    return db;
  }
}