import 'package:gainer_crypto/crypto.dart';
import 'package:http/http.dart' as http;
import 'package:intl/intl.dart';
import 'package:rkm_educa_app/modelos/estudante_modelo.dart';

class MainControllers{
  encrypt(String senhaDigitada,String senhaUsuario) {
    // Deixa e senha digitada em maiuscula
    var senha = senhaDigitada.toUpperCase();
    // Faz a criptografia da senha inserida
    String senhaMD5 = grHashString(GRCryptoType.md5, senha);
    // Retira o tipo (1, 2 ou 3) da senha do Usuário
    int tipo = int.parse(senhaUsuario.substring(0, 1));
    // Define a possição inicial da quebra da senha
    int posicaoInicialMin   = 0;
    int posicaoInicialMax= 0;
    int posicaoFinalMin   = 0;
    int posicaoFinalMax = 0;
    // Pra cada tipo (1, 2 ou 3) define a posição inicial da quebra da senha
    if(tipo == 1){
      posicaoInicialMin   = 0;
      posicaoInicialMax = 16;
      posicaoFinalMin   = 16;
      posicaoFinalMax = 32;
    } else if(tipo == 2){
      posicaoInicialMin   = 16;
      posicaoInicialMax   = 32;
      posicaoFinalMin   = 0;
      posicaoFinalMax = 16;
    } else if(tipo == 3){
      posicaoInicialMin   = 0;
      posicaoInicialMax   = 1;
      posicaoFinalMin   = 31;
      posicaoFinalMax = 32;
    }

    String inicio = senhaMD5.substring(posicaoInicialMin, posicaoInicialMax);
    String fim = senhaMD5.substring(posicaoFinalMin, posicaoFinalMax);

    // Faz a criptografia e concatena ela com sha1 e md5
    String senhaCriptogradafa = tipo.toString() + '\$'+ grHashString(GRCryptoType.sha1, inicio + senha + fim);
    // Retorna a senha criptografada
    return senhaCriptogradafa;
  }
  salvarLog(EstudanteModelo estudanteModelo,String TELA)async{
    final url = '${estudanteModelo.URL}/log';

    // print('dados');
    // print(widget.estudanteModelo.dados);

    final response = await http.post(
        Uri.parse(url),
        body:{
          'DATA' : DateFormat('dd/MM/yyyy HH:mm').format(DateTime.now()),
          'TELA' : TELA,
          'CD_USUARIO' : estudanteModelo.CD_USUARIO,
          'NO_USUARIO': estudanteModelo.NO_USUARIO,
          'CD_ALUNO': estudanteModelo.dados[estudanteModelo.nroAluno]['CD_ALUNO'],
          'NO_ALUNO': estudanteModelo.dados[estudanteModelo.nroAluno]['NO_ALUNO'],
          'CIDADE' : estudanteModelo.cidade
        }
    );

    print('response : ${response.body}');
  }
}