import 'dart:convert'; import 'package:brasil_fields/brasil_fields.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:rkm_educa_prof_app/telas/tela_home.dart'; import '../componentes/buttom_custom.dart'; import '../componentes/dropdown_button_city.dart'; import '../componentes/input_text.dart'; import '../componentes/snackBars.dart'; import '../controllers/main_controllers.dart'; import '../servicos/shared_preferences/shared.dart'; import '../utils/cidades_db.dart'; import '../utils/cores.dart'; import 'package:http/http.dart' as http; import '../componentes/text_custom.dart'; import '../utils/dimensoes.dart'; import '../utils/fixos.dart'; class TelaLogin extends StatefulWidget { const TelaLogin({Key? key}) : super(key: key); @override State createState() => _TelaLoginState(); } class _TelaLoginState extends State { // final inputLogin = TextEditingController(text: '402.061.058-43'); final inputLogin = TextEditingController(); final inputSenha = TextEditingController(); final inputRepetirSenha = TextEditingController(); bool carregando = false; String tituloSenha = 'Senha'; String status = 'VALIDANDO ACESSO...'; var map; int contLogo = 0; String urlAPI = 'https://homol-controle-educa-api.rkmsistemas.com.br'; List listCidades = []; String? selectCity; final PrefService _prefService = PrefService(); verificacao(){ String cidade = ''; if(inputLogin.text.isNotEmpty){ if(inputSenha.text.isNotEmpty){ if(selectCity!=null){ for(int i =0; listCidades.length > i; i ++){ if(selectCity == Cidades().listCidades[i].cidadeFront){ cidade = Cidades().listCidades[i].cidadeQuery; } } setState(() { carregando = true; }); if(inputLogin.text.toUpperCase() == 'ADMIN'){ conectAPI(cidade); }else{ getAcessosMariaDB(cidade); } }else{ showSnackBar(context, 'Selecione sua cidade', Colors.red); } }else{ showSnackBar(context, 'Preencha sua senha', Colors.red); } }else{ showSnackBar(context, 'Preencha seu Login', Colors.red); } } conectAPI(String cidade)async{ final url = '$urlAPI/logincontrole?NO_USERNAME=${inputLogin.text.toUpperCase()}&CIDADE=${cidade.toUpperCase()}'; print(url); final response = await http.get(Uri.parse(url)); var map = json.decode(response.body); print(map); if(map==false){ showSnackBar(context, 'Login não cadastrado e/ou senha incorreta e/ou Código incorreto', Colors.red); }else{ if(map['NO_USERNAME']==map['SENHA']){ if(map['NO_USERNAME']==inputLogin.text.toUpperCase() && map['SENHA']==inputSenha.text.toUpperCase()){ showSnackBar(context, 'Acesso validado', Colors.green); List dados = [cidade.toUpperCase(),map['NO_USUARIO_SISTEMA']??'',urlAPI,map['NO_FANTASIA']??'',map['CD_UNIDADE']??0]; Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => TelaHome(list: dados) )); }else{ showSnackBar(context, 'Login não cadastrado e/ou senha incorreta e/ou Código incorreto', Colors.red); } }else{ if(MainControllers().encrypt(inputSenha.text,map['SENHA']) == map['SENHA']){ print(map); showSnackBar(context, 'Acesso validado', Colors.green); List dados = [cidade.toUpperCase(),map['NO_USUARIO_SISTEMA']??'',urlAPI,map['NO_FANTASIA']??'',map['CD_UNIDADE']??0]; _prefService.createCacheLogin(inputLogin.text, inputSenha.text,cidade).then((value) => Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => TelaHome(list: dados) ))); }else{ showSnackBar(context, 'Login não cadastrado e/ou senha incorreta e/ou Código incorreto', Colors.red); } } } } carregarLista(){ for(int i=0;Cidades().listCidades.length>i;i++){ listCidades.add(Cidades().listCidades[i].cidadeQuery); } } getAcessosMariaDB(String cidade)async{ final url = '$urlAPI/acesso_maria?LOGIN=${inputLogin.text.toUpperCase()}&CIDADE=${cidade.toUpperCase()}'; print(url); final response = await http.get(Uri.parse(url)); var map = json.decode(response.body); print(map); List list = map; if(list.length != 0 ){ for(int i=0;list.length>i;i++){ if(list[i]['ID_USUARIO']==inputLogin.text.toUpperCase() &&list[i]['CONDICAO']=='1'){ conectAPI(cidade); }else{ setState(() { carregando = false; }); showSnackBar(context, 'Login seu acesso não está liberado!', Colors.red); } } }else{ setState(() { carregando = false; }); showSnackBar(context, 'Login não cadastrado e/ou senha incorreta e/ou Código incorreto', Colors.red); } } @override void initState() { super.initState(); carregarLista(); _prefService.readCacheLogin().then((login){ if(login!=null){ setState(() { carregando = true; }); print(login); inputLogin.text = login[0]; inputSenha.text = login[1]; conectAPI(login[2]); } }); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: PaletaCores.branco, body: Container( padding: EdgeInsets.all(Dimensoes.width*0.15), width: Dimensoes.width, height: Dimensoes.height, alignment: Alignment.center, child: ListView( children: [ GestureDetector( onTap: carregando?null:()=>setState((){ contLogo++; if(contLogo<5){ urlAPI = Fixos.LINK_API_HOMOL; }else{ contLogo=0; urlAPI = Fixos.LINK_API_LOCAL; } // if(contLogo>=5 && contLogo<=10){ // urlAPI = Fixos.AMB_HOMO; // } // if(contLogo>10){ // urlAPI = Fixos.AMB_DEV; // if(contLogo==15){ // contLogo=0; // urlAPI = Fixos.AMB_PROD; // } // } // print(contLogo); // print(urlAPI); }), child: Container( child: Image.asset("assets/images/logoEduca.png",width:Dimensoes.width * 0.4,height: Dimensoes.height * 0.12) ), ), urlAPI==Fixos.LINK_API_LOCAL?Container( child: Image.asset("assets/images/desenvolvimento.png",width:Dimensoes.width * 0.5,height: Dimensoes.height * 0.12) ):Container(), urlAPI==Fixos.LINK_API_HOMOL?Container( child: Image.asset("assets/images/homologacao.png",width:Dimensoes.width * 0.5,height: Dimensoes.height * 0.12) ):Container(), carregando?Container():Container( width: Dimensoes.width>900? Dimensoes.width * 0.18:Dimensoes.width*0.7, child: InputText( inputFormatters: [], textInputType: TextInputType.text, controller: inputLogin, title: 'Login', width: Dimensoes.width>900? Dimensoes.width * 0.18:Dimensoes.width*0.7, colorBorder: PaletaCores.branco, ), ), carregando?Container():Container( width: Dimensoes.width>900? Dimensoes.width * 0.18:Dimensoes.width*0.7, child: InputText( inputFormatters: [], controller: inputSenha, title: tituloSenha, obscure: true, width: Dimensoes.width>900? Dimensoes.width * 0.18:Dimensoes.width*0.7, colorBorder: PaletaCores.branco, ), ), SizedBox(height: Dimensoes.height * 0.02), carregando?Container():DropDownButtonCity( error: 'Campo obrigatório', validator: true, select: selectCity, onChanged: (value){ setState(() { selectCity = value!; print(selectCity); }); }, ), SizedBox(height: Dimensoes.height * 0.02), carregando?Row( mainAxisAlignment: MainAxisAlignment.center, children: [ CircularProgressIndicator(color: PaletaCores.cinzaClaro,), SizedBox(width: 20,), TextCustom(text: status,maxLines: 1,size: 12.0,) ], ):ButtonCustom( widthCustom: 0.7, heightCustom: 0.07, text: "Entrar", fontsize: 14.0, colorText: PaletaCores.branco, colorButton: PaletaCores.corPrimaria, colorBorder: PaletaCores.corPrimaria, onPressed: ()=>verificacao(), ), ], ), ) ); } }