diff --git a/lib/main.dart b/lib/main.dart index 5ff3f13..452de41 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -20,7 +20,7 @@ class MyApp extends StatelessWidget { title: 'CONTROLE DE ACESSO', routes: { '/': (_)=> LoginScreen(), - '/home':(context)=> HomeScreen(acesso: ModalRoute.of(context)!.settings.arguments as String), + '/home':(context)=> HomeScreen(cidade: ModalRoute.of(context)!.settings.arguments as String), '/cadastro':(context)=>ResponsibleRegisterScreen(ModalRoute.of(context)!.settings.arguments as AlunoModel), }, ); diff --git a/lib/models/aluno_model.dart b/lib/models/aluno_model.dart index 7a4cbf2..8b77643 100644 --- a/lib/models/aluno_model.dart +++ b/lib/models/aluno_model.dart @@ -5,6 +5,7 @@ class AlunoModel{ String escola; String serie; String turma; + String cidade; var dados; AlunoModel({ @@ -14,6 +15,7 @@ class AlunoModel{ required this.escola, required this.serie, required this.turma, - required this.dados + required this.dados, + required this.cidade }); } \ No newline at end of file diff --git a/lib/models/cidade_model.dart b/lib/models/cidade_model.dart new file mode 100644 index 0000000..d148274 --- /dev/null +++ b/lib/models/cidade_model.dart @@ -0,0 +1,9 @@ +class CidadeModel{ + String codigo; + String cidadeQuery; + + CidadeModel({ + required this.codigo, + required this.cidadeQuery + }); +} \ No newline at end of file diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index 3e62651..8a085ee 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -10,8 +10,8 @@ import 'package:http/http.dart' as http; import '../widgets/snackBars.dart'; class HomeScreen extends StatefulWidget { - String acesso; - HomeScreen({this.acesso=''}); + String cidade; + HomeScreen({required this.cidade}); @override State createState() => _HomeScreenState(); @@ -35,8 +35,8 @@ class _HomeScreenState extends State { alunos.clear(); String q = inputPesquisa.text.replaceAll(' ', '%20').toUpperCase(); // print(q); - final url = 'http://192.168.18.2:8000/aluno?NOME=$q'; - // print(url); + final url = 'http://192.168.18.2:8000/aluno?NOME=$q&CIDADE=${widget.cidade}'; + print(url); final response = await http.get(Uri.parse(url)); var map = json.decode(response.body); if(map==null){ @@ -66,7 +66,8 @@ class _HomeScreenState extends State { escola: list[i]['NO_RAZAO_SOCIAL']==''||list[i]['NO_RAZAO_SOCIAL']==null?list[i]['NO_FANTASIA']:list[i]['NO_RAZAO_SOCIAL'], serie: list[i]['DESC_SERIE'], turma: list[i]['TURMA'], - dados: list[i] + dados: list[i], + cidade: widget.cidade ) ); resultadoPesquisa.add(alunos[i]); @@ -122,7 +123,7 @@ class _HomeScreenState extends State { double width = MediaQuery.of(context).size.width; double height = MediaQuery.of(context).size.height; - return widget.acesso==null || widget.acesso == ''?Container():Scaffold( + return widget.cidade==null || widget.cidade == ''?Container():Scaffold( appBar: AppBar( title: Row( children: [ @@ -130,6 +131,8 @@ class _HomeScreenState extends State { child: Image.asset("assets/images/logoEduca.png",width:width * 0.08,height: height * 0.12) ), TextCustom(text: '- PESQUISAR ALUNO',color: Colors.white,), + Spacer(), + TextCustom(text: widget.cidade,color: Colors.white,) ], ), backgroundColor: PaletteColors.grey, diff --git a/lib/screens/login_screen.dart b/lib/screens/login_screen.dart index ea9308b..dba53cf 100644 --- a/lib/screens/login_screen.dart +++ b/lib/screens/login_screen.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'package:educa_controle_acesso/utils/cidades_db.dart'; import 'package:educa_controle_acesso/widgets/input_text.dart'; import 'package:educa_controle_acesso/widgets/text_custom.dart'; import 'package:flutter/material.dart'; @@ -20,17 +21,33 @@ class _LoginScreenState extends State { //las1594@@ //SENHAS CRIPTOGRAFADAS PORQUE FORMA ALTERADAS, SENHAS NOVAS USUÁRIO E SENHA SÃO IGUAIS //ibueno - final inputLogin = TextEditingController(); - final inputSenha = TextEditingController(); + final inputLogin = TextEditingController(text: 'admin'); + final inputSenha = TextEditingController(text: 'las1594@@'); + final inputCodigo = TextEditingController(text: 'e001'); bool loading = false; + List listCodigo = []; + + carregarLista(){ + for(int i=0;Cidades().listCidades.length>i;i++){ + listCodigo.add(Cidades().listCidades[i].codigo); + } + } verificacao(){ if(inputLogin.text.isNotEmpty){ if(inputSenha.text.isNotEmpty){ - setState(() { - loading = true; - }); - conectAPI(); + if(inputCodigo.text.isNotEmpty){ + if(listCodigo.contains(inputCodigo.text.toUpperCase())){ + setState(() { + loading = true; + }); + conectAPI(); + }else{ + showSnackBar(context, 'Código inválido', Colors.red); + } + }else{ + showSnackBar(context, 'Preencha o código de acesso', Colors.red); + } }else{ showSnackBar(context, 'Preencha sua senha', Colors.red); } @@ -40,7 +57,15 @@ class _LoginScreenState extends State { } conectAPI()async{ - final url = 'http://192.168.18.2:8000/logincontrole?NO_USERNAME=${inputLogin.text.toUpperCase()}'; + + String cidade = ''; + for(int i =0; Cidades().listCidades.length>i;i++){ + if(Cidades().listCidades[i].codigo == inputCodigo.text.toUpperCase()){ + cidade = Cidades().listCidades[i].cidadeQuery.toUpperCase(); + } + } + + final url = 'http://192.168.18.2:8000/logincontrole?NO_USERNAME=${inputLogin.text.toUpperCase()}&CIDADE=$cidade'; print(url); final response = await http.get(Uri.parse(url)); var map = json.decode(response.body); @@ -51,14 +76,14 @@ class _LoginScreenState extends State { if(map['NO_USERNAME']==map['SENHA']){ if(map['NO_USERNAME']==inputLogin.text.toUpperCase() && map['SENHA']==inputSenha.text.toUpperCase()){ showSnackBar(context, 'Acesso validado', Colors.green); - Navigator.pushNamed(context, '/home',arguments: 'ok'); + Navigator.pushNamed(context, '/home',arguments: cidade); }else{ showSnackBar(context, 'Login não cadastrado e/ou senha incorreta', Colors.red); } }else{ if(MainControllers().encrypt(inputSenha.text,map['SENHA']) == map['SENHA']){ showSnackBar(context, 'Acesso validado', Colors.green); - Navigator.pushNamed(context, '/home',arguments: 'ok'); + Navigator.pushNamed(context, '/home',arguments: cidade); }else{ showSnackBar(context, 'Login não cadastrado e/ou senha incorreta', Colors.red); } @@ -69,6 +94,12 @@ class _LoginScreenState extends State { }); } + @override + void initState() { + super.initState(); + carregarLista(); + } + @override Widget build(BuildContext context) { double height = MediaQuery.of(context).size.height; @@ -106,6 +137,17 @@ class _LoginScreenState extends State { ), ), SizedBox(height: height * 0.02), + loading?Container():Container( + width: width>900? width * 0.18:width*0.5, + child: InputText( + inputFormatters: [], + controller: inputCodigo, + title: 'CÓDIGO', + width: width * 0.18, + colorBorder: PaletteColors.white, + ), + ), + SizedBox(height: height * 0.02), loading?Row( mainAxisAlignment: MainAxisAlignment.center, children: [ diff --git a/lib/screens/responsible_register_screen.dart b/lib/screens/responsible_register_screen.dart index 941a600..b66f748 100644 --- a/lib/screens/responsible_register_screen.dart +++ b/lib/screens/responsible_register_screen.dart @@ -50,6 +50,7 @@ class _ResponsibleRegisterScreenState extends State { 'PARENTESCO' : inputParentesco.text, 'DATA_CADASTRO' : DateFormat('dd/MM/yyyy HH:mm').format(DateTime.now()), 'CONDICAO' : editando?'EDITADO':'NOVO', + 'CIDADE' : widget.alunoModel.cidade } ); print(response.body); diff --git a/lib/utils/cidades_db.dart b/lib/utils/cidades_db.dart new file mode 100644 index 0000000..f75aca0 --- /dev/null +++ b/lib/utils/cidades_db.dart @@ -0,0 +1,8 @@ +import 'package:educa_controle_acesso/models/cidade_model.dart'; +class Cidades{ + List listCidades =[ + CidadeModel(codigo: 'E001', cidadeQuery: 'aguasdelindoia'), + CidadeModel(codigo: 'E002', cidadeQuery: 'corumbatai'), + CidadeModel(codigo: 'E003',cidadeQuery: 'iracemapolis'), + ]; +} \ No newline at end of file