diff --git a/assets/images/error.png b/assets/images/error.png new file mode 100644 index 0000000..a9a5379 Binary files /dev/null and b/assets/images/error.png differ diff --git a/assets/images/send-done.png b/assets/images/send-done.png new file mode 100644 index 0000000..0223d57 Binary files /dev/null and b/assets/images/send-done.png differ diff --git a/assets/images/sync-done.png b/assets/images/sync-done.png new file mode 100644 index 0000000..d18cf7a Binary files /dev/null and b/assets/images/sync-done.png differ diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 0d0e3f9..4421783 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -21,7 +21,6 @@ import '../screens/configurations/sinc_data_screen.dart'; var routes = { '/home': (context) => HomeScreen(), '/login_load': (context) => LoginLoadScreen(), - '/register_citizen': (context) => RegisterCitizenScreen(select: '',), '/attendance_list': (context) => AttendanceListScreen(), '/about': (context) => AboutScreen(), '/main_procedures': (context) => MainProceduresScreen(), diff --git a/lib/controllers/main_controllers.dart b/lib/controllers/main_controllers.dart index 28afa0b..3d8b458 100644 --- a/lib/controllers/main_controllers.dart +++ b/lib/controllers/main_controllers.dart @@ -1,7 +1,48 @@ +import 'dart:math'; + +import 'package:gainer_crypto/crypto.dart'; import 'package:get/get.dart'; import 'package:rkm/service/db/db_querys.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; + } validaCNS(String cns)async{ //valido provisório 783107557570002 //cns valido def 187455333020009 @@ -141,4 +182,38 @@ class MainControllers{ return 'CPF inválido'; } } + gerarCDUsuarioSus(){ + String mkTime = ((DateTime.now().millisecond)).toString(); + String seqID = ((Random().nextInt(10)*100).floor() + ((Random().nextInt(10) * 5).floor() + 1)).toString() + '00000'; + String cdUsuarioSUS = (grHashString(GRCryptoType.md5, mkTime) + seqID).toUpperCase(); + var codSize = cdUsuarioSUS.length; + cdUsuarioSUS = cdUsuarioSUS.substring(0,32); + 'cod sus recuperado api'; + // 571A22D79C24526537C7E4CE8C0D4046 + 'cod gerado para teste'; + // CA8155F4D27F205953F9D3D7974BDD70 + // 571A22D79C24526537C7E4CE8C0D4046 + // C73F93513A57571D2C7B6384A34AD22F + + return cdUsuarioSUS; + } + replaceDefaul(String text){ + String newText = text.toUpperCase() + .replaceAll('Ã', 'A') + .replaceAll('Á', 'A') + .replaceAll('À', 'A') + .replaceAll('Â', 'A') + .replaceAll('Ç', 'C') + .replaceAll('È', 'E') + .replaceAll('É', 'E') + .replaceAll('Ê', 'E') + .replaceAll('Í', 'I') + .replaceAll('Ô', 'O') + .replaceAll('Õ', 'O') + .replaceAll('Ó', 'O') + .replaceAll('Ú', 'U') + .replaceAll('Û', 'U') + ; + return newText; + } } \ No newline at end of file diff --git a/lib/screens/configurations/sinc_data_screen.dart b/lib/screens/configurations/sinc_data_screen.dart index 81f8f37..b37e5cf 100644 --- a/lib/screens/configurations/sinc_data_screen.dart +++ b/lib/screens/configurations/sinc_data_screen.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -import 'package:rkm/config/const_variable.dart'; +import 'package:rkm/service/db/db_querys.dart'; import 'package:rkm/widgets/button_default.dart'; - import '../../config/color_palette.dart'; -import '../../service/shared_preferences/shared_preferences_service.dart'; +import '../../service/api/api_data_post.dart'; +import '../../service/db/db_sqlite_load.dart'; import '../../widgets/text_default.dart'; class SincDataScreen extends StatefulWidget { @@ -16,15 +16,200 @@ class SincDataScreen extends StatefulWidget { class _SincDataScreenState extends State { String mode =''; + String urlAPI =''; + String nameCityApi =''; + List tableCIDADAOS = []; + List tableCIDADAO_DOMICILIO = []; + List tableDOMICILIOS_CIDADAOS = []; + List tableINNERJOINCIDADAO_DOMICILIO = []; + List tableCADASTROS_INDIVIDUAIS = []; + List tableATENDS_INDIV_COMPL = []; + List tableATENDS_INDIV_EXAMES = []; + List tableATENDS_INDIV_PROC = []; + List tableATENDS_INDIV_PROF = []; + List tableATENDS_INDIVIDUAIS = []; + List tablePROCEDIMENTOS_FICHAS = []; + List tablePROCEDIMENTOS_INDIV = []; + List tablePROCEDIMENTOS_INDIV_FICHA = []; + List tablePROCEDIMENTOS_INDIV_SIGTAP = []; + List tableVISITAS_DOMICILIARES = []; + List tableVISITAS_DOMICILIARES_COMPL = []; + List tableVISITAS_DOMICILIARES_PROC = []; + List tableFICHAS_COMPLEMENTARES = []; + List tableATENDIMENTOS_DOMICILIARES = []; + List tableATENDS_DOM_COMPL = []; + List tableATENDS_DOM_PROC = []; + List tableATENDS_DOM_SIGTAP = []; + List tableATENDS_ODONTOLOGICOS = []; + List tableATENDS_ODONTO_PROF = []; + List tableATENDS_ODONTO_PROC = []; + List tableATENDS_ODONTO_SIGTAP = []; + List tableATENDS_ODONTO_COMPL = []; + List tableMARCADORES_CON_QUEST = []; + List tableMARCADORES_CONSUMO = []; + List tableAVAL_ELEG_COND_AVAL = []; + List tableAVAL_ELEG_CONCL_INE = []; + List tableAVALIACOES_ELEGIBILIDADE = []; + String message = 'A Sincronização poderá demorar. Prosseguir?'; + bool upload = false; + bool done = false; - dataSQLite()async{ - final PrefService _preferences = PrefService(); - _preferences.readCacheModel('user', 'password', 'city', 'mode').then((list){ - setState(() { - mode = list[3]; + updateTable()async{ + setState(() { + upload = true; + message = 'Aguarde enquanto os dados são Sincronizados.'; + }); + await DBQuerys().cadCidadaos().then((response)async{ + tableCIDADAOS = response; + // print(tableCIDADAOS); + await DBQuerys().cadDomiciliares().then((response)async{ + tableCIDADAO_DOMICILIO = response; + // print(tableCIDADAO_DOMICILIO); + await DBQuerys().domCidadaos().then((response)async{ + tableDOMICILIOS_CIDADAOS = response; + // print(tableDOMICILIOS_CIDADAOS); + await DBQuerys().logrDomicilios().then((response)async{ + tableINNERJOINCIDADAO_DOMICILIO = response; + // print(tableINNERJOINCIDADAO_DOMICILIO); + await DBQuerys().cadIndividuais().then((response)async{ + tableCADASTROS_INDIVIDUAIS = response; + // print(tableCADASTROS_INDIVIDUAIS); + await DBQuerys().atendsIndivCompl().then((response)async{ + tableATENDS_INDIV_COMPL = response; + // print(tableATENDS_INDIV_COMPL); + await DBQuerys().atendsIndivExames().then((response)async{ + tableATENDS_INDIV_EXAMES =response; + // print(tableATENDS_INDIV_EXAMES); + await DBQuerys().atendsIndivProc().then((response)async{ + tableATENDS_INDIV_PROC = response; + // print(tableATENDS_INDIV_PROC); + await DBQuerys().atendsIndivProf().then((response)async{ + tableATENDS_INDIV_PROF = response; + // print(tableATENDS_INDIV_PROF); + await DBQuerys().atendsIndividuais().then((response)async{ + tableATENDS_INDIVIDUAIS = response; + // print(tableATENDS_INDIVIDUAIS); + await DBQuerys().procedimentosFichas().then((response)async{ + tablePROCEDIMENTOS_FICHAS = response; + // print(tablePROCEDIMENTOS_FICHAS); + await DBQuerys().procedimentosIndiv().then((response)async{ + tablePROCEDIMENTOS_INDIV = response; + // print(tablePROCEDIMENTOS_INDIV); + await DBQuerys().procedimentosIndivFicha().then((response)async{ + tablePROCEDIMENTOS_INDIV_FICHA = response; + // print(tablePROCEDIMENTOS_INDIV_FICHA); + await DBQuerys().procedimentosIndivSigtap().then((response)async{ + tablePROCEDIMENTOS_INDIV_SIGTAP = response; + // print(tablePROCEDIMENTOS_INDIV_SIGTAP); + await DBQuerys().visitasDomiciliares().then((response)async{ + tableVISITAS_DOMICILIARES = response; + // print(tableVISITAS_DOMICILIARES); + await DBQuerys().visitasDomiciliaresCompl().then((response)async{ + tableVISITAS_DOMICILIARES_COMPL = response; + // print(tableVISITAS_DOMICILIARES_COMPL); + await DBQuerys().visitasDomiciliaresProc().then((response)async{ + tableVISITAS_DOMICILIARES_PROC = response; + // print(tableVISITAS_DOMICILIARES_PROC); + await DBQuerys().fichasComplementares().then((response)async{ + tableFICHAS_COMPLEMENTARES = response; + // print(tableFICHAS_COMPLEMENTARES); + await DBQuerys().atendimentosDomiciliares().then((response)async{ + tableATENDIMENTOS_DOMICILIARES = response; + // print(tableATENDIMENTOS_DOMICILIARES); + await DBQuerys().atendDomCompl().then((response)async{ + tableATENDS_DOM_COMPL = response; + // print(tableATENDS_DOM_COMPL); + await DBQuerys().atendDomProcsFicha().then((response)async{ + tableATENDS_DOM_PROC = response; + // print(tableATENDS_DOM_PROC); + await DBQuerys().atendDomProcsSigtap().then((response)async{ + tableATENDS_DOM_SIGTAP = response; + // print(tableATENDS_DOM_SIGTAP); + await DBQuerys().atendsOdontologicos().then((response)async{ + tableATENDS_ODONTOLOGICOS = response; + // print(tableATENDS_ODONTOLOGICOS); + await DBQuerys().atendsOdontoProf().then((response)async{ + tableATENDS_ODONTO_PROF = response; + // print(tableATENDS_ODONTO_PROF); + await DBQuerys().atendsOdontoProc().then((response)async{ + tableATENDS_ODONTO_PROC = response; + // print(tableATENDS_ODONTO_PROC); + await DBQuerys().atendsOdontoSigtap().then((response)async{ + tableATENDS_ODONTO_SIGTAP = response; + // print(tableATENDS_ODONTO_SIGTAP); + await DBQuerys().atendsOdontoCompl().then((response)async{ + tableATENDS_ODONTO_COMPL = response; + // print(tableATENDS_ODONTO_COMPL); + await DBQuerys().marcadoresConQuest().then((response)async{ + tableMARCADORES_CON_QUEST = response; + // print(tableMARCADORES_CON_QUEST); + await DBQuerys().marcadoresConsumo().then((response)async{ + tableMARCADORES_CONSUMO = response; + // print(tableMARCADORES_CONSUMO); + await DBQuerys().avalElegCondAval().then((response)async{ + tableAVAL_ELEG_COND_AVAL = response; + // print(tableAVAL_ELEG_COND_AVAL); + await DBQuerys().avalElegConclIne().then((response)async{ + tableAVAL_ELEG_CONCL_INE = response; + // print(tableAVAL_ELEG_CONCL_INE); + await DBQuerys().avaliacoesElegibilidade().then((response)async{ + tableAVALIACOES_ELEGIBILIDADE = response; + // print(tableAVALIACOES_ELEGIBILIDADE); + // print('aqui2'); + syncData(); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); + }); }); }); } + syncData()async{ + // ApiDataPost().sincronizacao(urlAPI, mode, nameCityApi).then((value){}); + setState(() { + upload = false; + done = true; + message = ''; + }); + } + + dataSQLite()async{ + await DbSqliteLoad().intialDB().then((db)async { + List list = await db.query('ARGS'); + urlAPI = list[0]['URLAPI']; + mode = list[0]['MODE']; + nameCityApi = list[0]['NAME_CITY_API']; + }); + // print(urlAPI); + // print(mode); + // print(nameCityApi); + } @override void initState() { @@ -35,6 +220,7 @@ class _SincDataScreenState extends State { @override Widget build(BuildContext context) { double width = MediaQuery.of(context).size.width; + double height = MediaQuery.of(context).size.height; return Scaffold( bottomSheet: Container( color: ColorPalette.appBar, @@ -71,20 +257,126 @@ class _SincDataScreenState extends State { Padding( padding: const EdgeInsets.symmetric(vertical: 5.0), child: TextDefault( - text: 'A Sincronização poderá demorar. Prosseguir?', + text: message, color: ColorPalette.black54, fontSize: 22, fontWeigth: FontWeight.bold, ), ), - ButtonDefault( + upload?Image.asset('assets/images/loading.gif',width: width*0.4):Container(), + done?Image.asset('assets/images/send-done.png',width: width*0.9):Container(), + !upload && !done?ButtonDefault( title: 'Enviar informações', width: width*0.9, textColor: ColorPalette.white, background: ColorPalette.appBar, borderColor: ColorPalette.appBar, - onPressed: ()=>Navigator.pushReplacementNamed(context, '/home'), - ) + onPressed: ()=>updateTable(), + ):Container(), + SizedBox(height: 20,), + done?Container( + color: ColorPalette.white, + width: width, + height: height*0.3, + child: ListView( + children: [ + TextDefault( + text: 'Atendimentos Domiciliares: ${tableATENDIMENTOS_DOMICILIARES.length}', + textAlign: TextAlign.center, + fontWeigth: FontWeight.bold, + color: ColorPalette.black54, + fontSize: 18, + ), + TextDefault( + text: 'Atendimento Individuais: ${tableATENDS_INDIVIDUAIS.length}', + textAlign: TextAlign.center, + fontWeigth: FontWeight.bold, + color: ColorPalette.black54, + fontSize: 18, + ), + TextDefault( + textAlign: TextAlign.center, + text: 'Atendimentos Odontológicos: ${tableATENDS_ODONTOLOGICOS.length}', + fontWeigth: FontWeight.bold, + color: ColorPalette.black54, + fontSize: 18, + ), + TextDefault( + textAlign: TextAlign.center, + text: 'Avaliação Elegibilidade: ${tableAVALIACOES_ELEGIBILIDADE.length}', + fontWeigth: FontWeight.bold, + color: ColorPalette.black54, + fontSize: 18, + ), + TextDefault( + textAlign: TextAlign.center, + text: 'Cadastros Cidadãos Realizados / Atualizados : ${tableCIDADAOS.length}', + fontWeigth: FontWeight.bold, + color: ColorPalette.black54, + fontSize: 18, + ), + TextDefault( + textAlign: TextAlign.center, + text: 'Fichas Complementares: ${tableFICHAS_COMPLEMENTARES.length}', + fontWeigth: FontWeight.bold, + color: ColorPalette.black54, + fontSize: 18, + ), + TextDefault( + textAlign: TextAlign.center, + text: 'Marcadores de Consumo : ${tableMARCADORES_CONSUMO.length}', + fontWeigth: FontWeight.bold, + color: ColorPalette.black54, + fontSize: 18, + ), + TextDefault( + textAlign: TextAlign.center, + //aqui verificar de qual tela seria esses dados + text: 'Procedimentos Consolidados: 0', + fontWeigth: FontWeight.bold, + color: ColorPalette.black54, + fontSize: 18, + ), + TextDefault( + textAlign: TextAlign.center, + text: 'Procedimentos Individuais : ${tablePROCEDIMENTOS_INDIV.length}', + fontWeigth: FontWeight.bold, + color: ColorPalette.black54, + fontSize: 18, + ), + TextDefault( + textAlign: TextAlign.center, + text: 'Visitas Domiciliares: ${tableVISITAS_DOMICILIARES.length}', + fontWeigth: FontWeight.bold, + color: ColorPalette.black54, + fontSize: 18, + ), + ], + ) + ):Container(), + SizedBox(height: 30,), + done?Padding( + padding: const EdgeInsets.symmetric(horizontal: 30.0), + child: ButtonDefault( + title: 'Continuar (Mantendo os Dados)', + width: width*0.9, + textColor: ColorPalette.white, + background: ColorPalette.appBar, + borderColor: ColorPalette.appBar, + onPressed: ()=>Navigator.pushNamedAndRemoveUntil(context, '/home', (Route route) => false), + ), + ):Container(), + done?Padding( + padding: const EdgeInsets.symmetric(horizontal: 30.0), + child: ButtonDefault( + title: 'Continuar (Limpando os Dados)', + width: width*0.9, + textColor: ColorPalette.white, + background: ColorPalette.red, + borderColor: ColorPalette.red, + onPressed: (){}, + ), + ):Container(), ], ), ), diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index 5a3bf25..549e525 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; import 'package:line_icons/line_icons.dart'; +import 'package:rkm/controllers/main_controllers.dart'; import 'package:rkm/screens/registers_citizen/register_citizen_screen.dart'; import 'package:rkm/config/const_variable.dart'; +import 'package:rkm/service/db/db_querys.dart'; import 'package:rkm/widgets/icon_button_default.dart'; import 'package:rkm/widgets/input_search_text.dart'; import '../service/db/db_sqlite_load.dart'; @@ -68,12 +70,12 @@ class _HomeScreenState extends State { searchCitizen(); } + @override void initState() { super.initState(); loadCitizen(); inputSearch.addListener(_searchInit); - } @override void dispose() { @@ -106,7 +108,7 @@ class _HomeScreenState extends State { icon: Icons.person_add, onPressed: ()=> Navigator.push( context, - MaterialPageRoute(builder: (context) => RegisterCitizenScreen(select: '')), + MaterialPageRoute(builder: (context) => RegisterCitizenScreen(listData: [],)), ) ), IconButtonDefault( @@ -138,10 +140,15 @@ class _HomeScreenState extends State { mother:'${showResults[index]['NOME_MAE']}', numberCNS: '${showResults[index]['CNS']}'=='null'||'${showResults[index]['CNS']}'==''?'999999999999999':'${showResults[index]['CNS']}', numberMedicalRecord: '${showResults[index]['NUM_PRONTUARIO']}'==''?'-----':'${showResults[index]['NUM_PRONTUARIO']}', - onTap: ()=> Navigator.push( - context, - MaterialPageRoute(builder: (context) => RegisterCitizenScreen(select: '')), - ), + onTap: ()async { + await DBQuerys().buscaCidadao(showResults[index]['NOME_CIDADAO']).then((list){ + Navigator.push( + context, + MaterialPageRoute(builder: + (context) => RegisterCitizenScreen(listData: list,)), + ); + }); + } ); } ) diff --git a/lib/screens/login/login_load_screen.dart b/lib/screens/login/login_load_screen.dart index 98f677a..5e5ebf9 100644 --- a/lib/screens/login/login_load_screen.dart +++ b/lib/screens/login/login_load_screen.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:rkm/controllers/main_controllers.dart'; import 'package:rkm/service/api/url_api_const.dart'; import 'package:rkm/config/color_palette.dart'; import 'package:rkm/config/const_variable.dart'; @@ -7,7 +8,6 @@ import 'package:rkm/widgets/dropdown_button_city.dart'; import 'package:rkm/widgets/input_text.dart'; import 'package:rkm/widgets/text_default.dart'; import '../../service/api/api_data_load.dart'; -import '../../service/api/encrypt_password.dart'; import '../../service/db/db_sqlite_load.dart'; import '../../service/shared_preferences/shared_preferences_service.dart'; import '../load_init_screen.dart'; @@ -78,7 +78,7 @@ class _LoginLoadScreenState extends State { error = ''; }); //verificar se a criptografia identificou se a senha está correta - if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){ + if(MainControllers().encrypt(inputPassword.text,response['userPass']) == response['userPass']){ // print(EncryptPassword().encrypt(inputPassword.text,response['userPass'])); setState(() { loading = false; diff --git a/lib/screens/login/login_saved_screen.dart b/lib/screens/login/login_saved_screen.dart index 7f8bde0..938ec23 100644 --- a/lib/screens/login/login_saved_screen.dart +++ b/lib/screens/login/login_saved_screen.dart @@ -7,8 +7,8 @@ import 'package:rkm/config/const_variable.dart'; import 'package:rkm/widgets/button_default.dart'; import 'package:rkm/widgets/input_text.dart'; import 'package:rkm/widgets/text_default.dart'; +import '../../controllers/main_controllers.dart'; import '../../service/api/api_data_load.dart'; -import '../../service/api/encrypt_password.dart'; import '../../service/db/db_sqlite_load.dart'; class LoginSavedScreen extends StatefulWidget { List listControl; @@ -74,7 +74,7 @@ class _LoginSavedScreenState extends State { error = ''; }); //verificar se a criptografia identificou se a senha está correta - if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){ + if(MainControllers().encrypt(inputPassword.text,response['userPass']) == response['userPass']){ // print(EncryptPassword().encrypt(inputPassword.text,response['userPass'])); DbSqliteLoad().updateArgs(mode, inputUser.text, inputPassword.text).then((value){ setState(() { diff --git a/lib/screens/login/sync_login_screen.dart b/lib/screens/login/sync_login_screen.dart index 7091351..ede42a2 100644 --- a/lib/screens/login/sync_login_screen.dart +++ b/lib/screens/login/sync_login_screen.dart @@ -7,8 +7,8 @@ import 'package:rkm/widgets/dropdown_button_default.dart'; import 'package:rkm/widgets/input_text.dart'; import 'package:rkm/widgets/text_default.dart'; import 'package:sqflite/sqflite.dart'; +import '../../controllers/main_controllers.dart'; import '../../service/api/api_data_load.dart'; -import '../../service/api/encrypt_password.dart'; import '../../service/db/db_sqlite_load.dart'; import '../../service/shared_preferences/shared_preferences_service.dart'; class SyncLoginScreen extends StatefulWidget { @@ -74,7 +74,7 @@ class _SyncLoginScreenState extends State { setState((){ error = ''; }); - if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){ + if(MainControllers().encrypt(inputPassword.text,response['userPass']) == response['userPass']){ setState(() { loading = false; }); diff --git a/lib/screens/registers_citizen/register_citizen_screen.dart b/lib/screens/registers_citizen/register_citizen_screen.dart index 8ddaf05..bc787b8 100644 --- a/lib/screens/registers_citizen/register_citizen_screen.dart +++ b/lib/screens/registers_citizen/register_citizen_screen.dart @@ -1,4 +1,6 @@ +import 'package:brasil_fields/brasil_fields.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:intl/intl.dart'; import 'package:rkm/config/color_palette.dart'; import 'package:rkm/config/const_variable.dart'; @@ -21,10 +23,8 @@ import '../../widgets/subtitle_appbar_citizen.dart'; import '../../widgets/switch_with_subtitle.dart'; import '../../widgets/text_default.dart'; class RegisterCitizenScreen extends StatefulWidget { - String select; - - RegisterCitizenScreen({required this.select}); - + List listData; + RegisterCitizenScreen({required this.listData}); @override State createState() => _RegisterCitizenScreenState(); } @@ -87,6 +87,7 @@ class _RegisterCitizenScreenState extends State { String? selectTypeStreet; String? selectStreet; String? selectSubdivision; + int? selectSubdivisionCOD; String? selectZone; int? selectZoneCod; String? selectVillage; @@ -135,6 +136,7 @@ class _RegisterCitizenScreenState extends State { List listBreed = []; List listMaritalStatus = []; String idUnidade = ''; + String codSus = ''; escolherprazoInicio(BuildContext context,String type) async { @@ -190,6 +192,9 @@ class _RegisterCitizenScreenState extends State { cityController.text = '${listCity[0]['NAME_CITY_FRONT']} - ${listCity[0]['COD_STATE']}'.toUpperCase(); codIBGEController.text = listCity[0]['COD_IBGE'].toString(); }); + String city = MainControllers().replaceDefaul(listCity[0]['NAME_CITY_FRONT']); + print(city); + resultListResid = await DBQuerys().buscaMunicipioporNome(city); } loadVillgeDB()async{ @@ -247,11 +252,7 @@ class _RegisterCitizenScreenState extends State { } getCity()async{ - Database db = await DbSqliteLoad().intialDB(); - var query = "SELECT * FROM MUNICIPIOS ORDER BY NO_MUNICIPIO"; - List list = await db.rawQuery(query); - // print("SELECT * FROM UNIDADES"); - // print(await db.rawQuery("SELECT * FROM UNIDADES")); + List list = await DBQuerys().buscaTodosMunicipios(); for(int i=0; list.length > i;i++){ cityDB.add('${list[i]['NO_MUNICIPIO']} - ${list[i]['UF_ESTADO']}'); ibgeDB.add('${list[i]['CODIGO_IBGE']}'); @@ -334,23 +335,20 @@ class _RegisterCitizenScreenState extends State { }); }else{ print('passou'); - saveCitizen(); + if(widget.listData.length==0){ + codSus = MainControllers().gerarCDUsuarioSus(); + }else{ + codSus = widget.listData[0]['CD_USUARIO_SUS']; + } + if(codSus!=''){ + saveCitizen(); + } } } - gerarCDUsuarioSus(){ - var mkTime = ((int.parse(DateTime.now())/1000)).toString(); - var seqID = (Math.floor((Math.random() * 100) + int.parse((Math.floor((Math.random() * 5) + 1)) + '00000'))).toString(); - var cdUsuarioSUS = (md5(mkTime) + seqID).toUpperCase(); - var codSize = cdUsuarioSUS.length; - cdUsuarioSUS = cdUsuarioSUS.substr((codSize <= 58) ? (codSize * -1) : -58 , 58); - return cdUsuarioSUS; - } - saveCitizen()async{ - Map row = { - 'CD_USUARIO_SUS' : '0', + 'CD_USUARIO_SUS' : codSus, 'NOME_CIDADAO' : nameController.text, 'NOME_SOCIAL' : nameSocialController.text, 'SEXO' : selectGender=='MASCULINO'?'M':'F', @@ -365,15 +363,14 @@ class _RegisterCitizenScreenState extends State { 'ID_ESCOLARIDADE' : selectScoolingCod, 'ID_DEFICIENCIA' : selectDeficiencyCod, 'NOME_MAE' : nameMotherController.text, - 'DESCONHECE_MAE' : '${!enableMother}', + 'DESCONHECE_MAE' : enableMother?1:0, 'NOME_PAI' : nameFatherController.text, - 'DESCONHECE_PAI' : '${!enableFather}', + 'DESCONHECE_PAI' : enableFather?1:0, 'ID_UNIDADE' : idUnidade, 'NUM_PRONTUARIO' : medicalRecordController.text, 'NUM_PRONTUARIO_PROV' : medicalRecordProvController.text, 'CLASSIFICACAO' : selectClassificationCOD, - //aqui - 'CLASSIFICACAO_SUB' : '', + 'CLASSIFICACAO_SUB' : selectSubdivisionCOD, 'NUM_FAMILIA' : numberFamilyController.text, 'ID_PAIS_RESID' : selectCountry=='BRASIL'?33:0, 'ID_MUNICIPIO_RESID' : resultListResid[0]['ID_MUNICIPIO'], @@ -425,11 +422,11 @@ class _RegisterCitizenScreenState extends State { 'BLOQUEIO' : enableBlocked, 'ORIGEM' : 'A', 'DT_HORA_CADASTRO' : DateTime.now().toString(), - //aqui + //só depois de salvar o cidadão no banco 'ID_USUARIO_CADASTRO' : '', - //aqui + //só quando for feito o atendimento domicíliar 'ID_DOMICILIO' : '', - //aqui + //só quando for feito um atendimento 'ATENDIMENTOS' : '', 'SINCRONIZADO' : 'N', }; @@ -480,6 +477,144 @@ class _RegisterCitizenScreenState extends State { } } + getData()async{ + // print('passou'); + // print(widget.listData); + codSus = widget.listData[0]['CD_USUARIO_SUS']; + nameController.text = widget.listData[0]['NOME_CIDADAO']; + nameSocialController.text = widget.listData[0]['NOME_SOCIAL']; + selectGender = widget.listData[0]['SEXO']=='M'?'MASCULINO':'FEMININO'; + dateDB = widget.listData[0]['DT_NASCIMENTO']; + List splittedDate = dateDB.split('-'); + date = '${splittedDate[2]}/${splittedDate[1]}/${splittedDate[0]}'; + for(int i = 0;ConstVariable().listMaritalStatus.length >i;i++){ + if(ConstVariable().listMaritalStatus[i].cod == widget.listData[0]['ID_ESTADO_CIVIL']){ + selectMaritalStatusCod = ConstVariable().listMaritalStatus[i].cod; + selectMaritalStatus = ConstVariable().listMaritalStatus[i].title; + } + } + spouseController.text = widget.listData[0]['NOME_CONJUGE']; + selectNaturalityCod = widget.listData[0]['NACIONALIDADE']; + if(selectNaturalityCod==1){ + selectNaturality = 'BRASILEIRO'; + } + if(selectNaturalityCod==2){ + selectNaturality = 'ESTRANGEIRO'; + } + if(selectNaturalityCod==3){ + selectNaturality = 'NATURALIZADO'; + } + int codCityBirth = widget.listData[0]['ID_MUNICIPIO_NASC']; + List listCityBirth = await DBQuerys().buscaMunicipioporId(codCityBirth); + cityBirthController.text = listCityBirth[0]['NO_MUNICIPIO']; + resultListNasc = listCityBirth; + for(int i = 0;ConstVariable().listBreed.length >i;i++){ + if(ConstVariable().listBreed[i].cod == widget.listData[0]['ID_ETNIA']){ + selectBreedCod = ConstVariable().listBreed[i].cod; + selectBreed = ConstVariable().listBreed[i].title; + } + } + for(int i = 0;ConstVariable().listScooling.length >i;i++){ + if(ConstVariable().listScooling[i].cod == widget.listData[0]['ID_ESCOLARIDADE']){ + selectScoolingCod = ConstVariable().listScooling[i].cod; + selectScooling = ConstVariable().listScooling[i].title; + } + } + for(int i = 0;ConstVariable().itensDeficiency.length >i;i++){ + if(ConstVariable().itensDeficiency[i].cod == widget.listData[0]['ID_DEFICIENCIA']){ + selectDeficiencyCod = ConstVariable().itensDeficiency[i].cod; + selectDeficiency = ConstVariable().itensDeficiency[i].title; + }else{ + selectDeficiencyCod = 3; + selectDeficiency = 'NENHUMA'; + } + } + nameMotherController.text = widget.listData[0]['NOME_MAE']; + enableMother = widget.listData[0]['DESCONHECE_MAE']==0?false:true; + nameFatherController.text = widget.listData[0]['NOME_PAI']; + enableFather = widget.listData[0]['DESCONHECE_PAI']==0?false:true; + idUnidade = widget.listData[0]['ID_UNIDADE'].toString(); + medicalRecordController.text = widget.listData[0]['NUM_PRONTUARIO']; + medicalRecordProvController.text = widget.listData[0]['NUM_PRONTUARIO_PROV'].toString(); + selectClassificationCOD = widget.listData[0]['CLASSIFICACAO']; + if(selectClassificationCOD==1){ + selectClassification = 'MUNICIPE'; + } + if(selectClassificationCOD==2){ + selectClassification = 'PROVISORIO'; + } + if(selectClassificationCOD==3){ + selectClassification = 'OUTRO MUNICIPIO'; + } + changedCity(); + print('sub'); + if(widget.listData[0]['CLASSIFICACAO_SUB']!=null && widget.listData[0]['CLASSIFICACAO_SUB']!=''){ + selectSubdivisionCOD = widget.listData[0]['CLASSIFICACAO_SUB']=='null'?0:widget.listData[0]['CLASSIFICACAO_SUB']; + selectSubdivision = await DBQuerys().buscaLoteamentoPorID(selectSubdivisionCOD!).toString(); + subdivisionDB.add(selectSubdivision!); + } + + // 'NUM_FAMILIA' : numberFamilyController.text, + // 'ID_PAIS_RESID' : selectCountry=='BRASIL'?33:0, + // 'ID_MUNICIPIO_RESID' : resultListResid[0]['ID_MUNICIPIO'], + // 'NO_MUNICIPIO_RESID' : resultListResid[0]['NO_MUNICIPIO'], + // 'ESTADO_UF_RESID' : resultListResid[0]['UF_ESTADO'], + // 'CODIGO_IBGE_RESID' : codIBGEController.text, + // 'NO_BAIRRO_LOGR' : selectVillage, + // 'ID_LOGR_TIPO' : idTipo, + // 'NOME_LOGR' : selectStreet, + // 'CEP_LOGR' : cepController.text, + // 'NUMERO_LOGR' : numberController.text, + // 'LOTEAMENTO_LOGR' : selectSubdivision, + // 'COMPL_LOGR' : complementController.text, + // 'PONTO_REFERENCIA' : referencePointController.text, + // 'ZONA_LOGR' : selectZoneCod, + // 'DDD_TELEFONE' : foneDDDController.text, + // 'NUM_TELEFONE' : foneController.text, + // 'DDD_RECADO' : messageDDDController.text, + // 'NUM_RECADO' : messageController.text, + // 'EMAIL' : emailController.text, + // 'OBSERVACOES' : observationController.text, + // 'CPF' : CPFController.text, + // 'CNS' : checkCNS == 'ok'&& CNSController.text.isNotEmpty?CNSController.text:'999999999999999', + // 'TITULO_ELEITOR' : voterController.text, + // 'RG_NUMERO' : RGController.text, + // 'RG_COMPLEMENTO' : RGComplementController.text, + // 'RG_UF' : selectRGUF, + // 'RG_ORGAO' : RGOrganController.text, + // 'RG_DATA_EMISSAO' : RGDateController.text, + // 'TIPO_CERTIDAO' : selectTypeCertificateCod, + // 'NUM_CERTIDAO' : numberCertificateController.text, + // 'CARTORIO_CERTIDAO' : nameCertificateController.text, + // 'LIVRO_CERTIDAO' : bookCertificateController.text, + // 'FOLHA_CERTIDAO' : sheetCertificateController.text, + // 'TERMO_CERTIDAO' : termCertificateController.text, + // 'DT_EMISSAO_CERTIDAO' : dateCertificateController.text, + // 'NUM_CTPS' : CTPSController.text, + // 'NUM_SERIE_CTPS' : numberCTPSController.text, + // 'ESTADO_UF_CTPS' : selectCTPSUF, + // 'NUM_PIS_PASEP' : PISController.text, + // 'FL_RETIROU_CARTAO' : enableCityCard, + // 'NUM_NIS' : NISController.text, + // //aqui + // 'NUM_PROT_CROSS' : '', + // 'RENDA_MENSAL' : incomeController.text, + // 'PROFISSAO' : professionalController.text, + // 'DT_OBITO' : dateDeathController.text, + // 'DECLARACAO_OBITO' : '', + // 'BLOQUEIO' : enableBlocked, + // 'ORIGEM' : 'A', + // 'DT_HORA_CADASTRO' : DateTime.now().toString(), + // //só depois de salvar o cidadão no banco + // 'ID_USUARIO_CADASTRO' : '', + // //só quando for feito o atendimento domicíliar + // 'ID_DOMICILIO' : '', + // //só quando for feito um atendimento + // 'ATENDIMENTOS' : '', + // 'SINCRONIZADO' : 'N', + setState(() {}); + } + @override void initState() { super.initState(); @@ -491,9 +626,9 @@ class _RegisterCitizenScreenState extends State { loadTypeStreetDB(); loadSubdivisionsDB(); loadLists(); - setState(() { - cityBirthController.text = widget.select; - }); + if(widget.listData.length!=0){ + getData(); + } } @override @@ -635,7 +770,7 @@ class _RegisterCitizenScreenState extends State { child: TextDefault( text: date, color: ColorPalette.black54, - fontSize: 18, + fontSize: 16, ), ), ) @@ -755,7 +890,7 @@ class _RegisterCitizenScreenState extends State { print(splitted[0]); Navigator.pop(context); }); - resultListNasc = await DBQuerys().buscaMunicipio(splitted[0]); + resultListNasc = await DBQuerys().buscaMunicipioporNome(splitted[0]); print(resultListNasc[0]['ID_MUNICIPIO'],); print(resultListNasc[0]['NO_MUNICIPIO'],); print(resultListNasc[0]['UF_ESTADO'],); @@ -964,8 +1099,8 @@ class _RegisterCitizenScreenState extends State { widthDropdown: width*0.69, widthContainerDropdown: width*0.6, hintDropdown: 'Classificação', - onChanged: (value){ - setState(() { + onChanged: (value)async{ + selectClassification = value; if(selectClassification=='OUTRO MUNICIPIO'){ selectClassificationCOD = 3; @@ -995,7 +1130,7 @@ class _RegisterCitizenScreenState extends State { changedCity(); selectCountry = 'BRASIL'; } - }); + setState(() {}); }, list: [ 'MUNICIPE', @@ -1128,7 +1263,7 @@ class _RegisterCitizenScreenState extends State { // print("IBGE ${showResultSearchIbge[index]}"); Navigator.pop(context); }); - resultListResid = await DBQuerys().buscaMunicipio(splitted[0]); + resultListResid = await DBQuerys().buscaMunicipioporNome(splitted[0]); print(resultListResid[0]['ID_MUNICIPIO'],); print(resultListResid[0]['NO_MUNICIPIO'],); print(resultListResid[0]['UF_ESTADO'],); @@ -1285,10 +1420,11 @@ class _RegisterCitizenScreenState extends State { widthDropdown: width*0.69, widthContainerDropdown: width*0.6, hintDropdown: 'Loteamento/Subdistrito', - onChanged: (value){ + onChanged: selectClassification=='OUTRO MUNICIPIO' || selectVillage == null?null:(value)async{ setState(() { selectSubdivision = value; }); + selectSubdivisionCOD = await DBQuerys().buscaLoteamentoPorDesc(selectSubdivision!); }, list: subdivisionDB ), @@ -1613,7 +1749,7 @@ class _RegisterCitizenScreenState extends State { child: TextDefault( text: RGDateController.text, color: ColorPalette.black54, - fontSize: 18, + fontSize: 16, ), ), ), @@ -1709,7 +1845,7 @@ class _RegisterCitizenScreenState extends State { child: TextDefault( text: dateCertificateController.text, color: ColorPalette.black54, - fontSize: 18, + fontSize: 16, ), ), ), @@ -1805,16 +1941,46 @@ class _RegisterCitizenScreenState extends State { mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - InputWithSubtitle( - controller: incomeController, - subtitle: 'Renda Mensal', - errorInput: 'Campo Obrigatório', - labelInput: 'Renda Mensal', - widthInput: width*0.7, - widthSubtitle: width*0.7, - hintInput: 'Escreva aqui', - mandatory: false, - onChanged: (v)=>setState((){}), + Container( + color: ColorPalette.white, + margin: EdgeInsets.only(top: 5), + width: width*0.7, + child: TextFormField( + keyboardType: TextInputType.number, + inputFormatters: [ + FilteringTextInputFormatter.digitsOnly, + CentavosInputFormatter(moeda: true), + ], + controller: incomeController, + style: TextStyle( + color: Colors.black, + fontSize: 16, + ), + decoration: InputDecoration( + fillColor: ColorPalette.appBar, + labelText: 'Renda Mensal', + border: OutlineInputBorder( + borderSide: BorderSide(width: 1,color: ColorPalette.black54) + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(width: 1, color: ColorPalette.black54), + borderRadius: BorderRadius.circular(3), + ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide(width: 1, color: ColorPalette.black54), + borderRadius: BorderRadius.circular(3), + ), + disabledBorder: OutlineInputBorder( + borderSide: BorderSide(width: 1, color: ColorPalette.black54), + borderRadius: BorderRadius.circular(3), + ), + hintText: 'Escreva aqui', + hintStyle: TextStyle( + color: ColorPalette.gray, + fontSize: 16, + ) + ) + ), ), InputWithSubtitle( controller: professionalController, @@ -1844,7 +2010,7 @@ class _RegisterCitizenScreenState extends State { child: TextDefault( text: dateDeathController.text, color: ColorPalette.black54, - fontSize: 18, + fontSize: 16, ), ), ), diff --git a/lib/service/api/api_data_post.dart b/lib/service/api/api_data_post.dart new file mode 100644 index 0000000..b64f769 --- /dev/null +++ b/lib/service/api/api_data_post.dart @@ -0,0 +1,12 @@ +import 'dart:convert'; +import 'package:http/http.dart' as http; + +class ApiDataPost{ + Future sincronizacao(urlAPI,mode,nameCityApi)async{ + // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/sincronizacao + final url = '${urlAPI}${mode}/${nameCityApi}/sincronizacao'; + final response = await http.post(Uri.parse(url)); + final map = json.decode(response.body); + return map; + } +} \ No newline at end of file diff --git a/lib/service/api/encrypt_password.dart b/lib/service/api/encrypt_password.dart deleted file mode 100644 index e80131b..0000000 --- a/lib/service/api/encrypt_password.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:gainer_crypto/crypto.dart'; - -class EncryptPassword{ - 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; - } -} \ No newline at end of file diff --git a/lib/service/db/db_querys.dart b/lib/service/db/db_querys.dart index 1d63fa5..8bd8265 100644 --- a/lib/service/db/db_querys.dart +++ b/lib/service/db/db_querys.dart @@ -60,11 +60,278 @@ class DBQuerys{ List list = await db.rawQuery(query); return list; } - buscaMunicipio(String NO_MUNICIPIO)async{ + buscaMunicipioporNome(String NO_MUNICIPIO)async{ Database db = await DbSqliteLoad().intialDB(); var query = 'SELECT * FROM MUNICIPIOS WHERE NO_MUNICIPIO = "$NO_MUNICIPIO"'; List list = await db.rawQuery(query); + // print(list); + return list; + } + buscaMunicipioporId(int ID_MUNICIPIO)async{ + Database db = await DbSqliteLoad().intialDB(); + var query = 'SELECT * FROM MUNICIPIOS WHERE ID_MUNICIPIO = $ID_MUNICIPIO'; + List list = await db.rawQuery(query); + // print(list); + return list; + } + buscaLoteamentoPorDesc(String DESC_LOGR_LOTEAMENTO)async{ + Database db = await DbSqliteLoad().intialDB(); + var query = 'SELECT * FROM LOGRADOUROS_LOTEAMENTOS WHERE DESC_LOGR_LOTEAMENTO = "$DESC_LOGR_LOTEAMENTO"'; + List list = await db.rawQuery(query); + // print(list); + int result = list[0]['ID_LOGR_LOTEAMENTO']; + return result; + } + buscaLoteamentoPorID(int ID_LOGR_LOTEAMENTO)async{ + Database db = await DbSqliteLoad().intialDB(); + var query = 'SELECT * FROM LOGRADOUROS_LOTEAMENTOS WHERE ID_LOGR_LOTEAMENTO = $ID_LOGR_LOTEAMENTO'; + List list = await db.rawQuery(query); print(list); + String result = list[0]['DESC_LOGR_LOTEAMENTO']; + return result; + } + buscaTodosMunicipios()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT * FROM MUNICIPIOS ORDER BY NO_MUNICIPIO"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future buscaCidadao(NOME_CIDADAO)async{ + Database db = await DbSqliteLoad().intialDB(); + var query = 'SELECT * FROM CIDADAOS WHERE NOME_CIDADAO = "$NOME_CIDADAO"'; + List list = await db.rawQuery(query); + // print(list); + return list; + } + ///////INICIO CIDADAO///// + Future cadCidadaos()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT * FROM CIDADAOS WHERE ORIGEM = 'A' AND SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future cadDomiciliares()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT * FROM CIDADAO_DOMICILIO WHERE ORIGEM = 'A' AND SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future domCidadaos()async{ + Database db = await DbSqliteLoad().intialDB(); + // Busca a relação de Domicilio e Cidadao + var query = "SELECT CC.* FROM DOMICILIOS_CIDADAOS CC INNER JOIN CIDADAO_DOMICILIO CD ON CD.ID_DOMICILIO = CC.ID_DOMICILIO WHERE CD.ORIGEM = 'A' AND CD.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future logrDomicilios()async{ + Database db = await DbSqliteLoad().intialDB(); + // Busca os Endereços de cada Domicilio + var query = "SELECT DISTINCT CD.ID_DOMICILIO, C.NO_BAIRRO_LOGR, C.ID_LOGR_TIPO, C.NOME_LOGR, C.NUMERO_LOGR, C.COMPL_LOGR, C.LOTEAMENTO_LOGR FROM CIDADAO_DOMICILIO CD INNER JOIN CIDADAOS C ON CD.ID_DOMICILIO = C.ID_DOMICILIO WHERE C.ORIGEM = 'A' AND CD.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future cadIndividuais()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT * FROM CADASTROS_INDIVIDUAIS WHERE ORIGEM = 'A' AND SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } +///////FIM CIDADAO///// + +///////ATENDIMENTOS - TODOS REGISTROS///// + Future atendsIndivCompl()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AIC.* FROM ATENDS_INDIV_COMPL AIC INNER JOIN ATENDS_INDIVIDUAIS AI ON AI.ID_ATEND_INDIVIDUAL = AIC.ID_ATEND_INDIVIDUAL WHERE AI.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendsIndivExames()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AIE.* FROM ATENDS_INDIV_EXAMES AIE INNER JOIN ATENDS_INDIVIDUAIS AI ON AI.ID_ATEND_INDIVIDUAL = AIE.ID_ATEND_INDIVIDUAL WHERE AI.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendsIndivProc()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AIP.* FROM ATENDS_INDIV_PROC AIP INNER JOIN ATENDS_INDIVIDUAIS AI ON AI.ID_ATEND_INDIVIDUAL = AIP.ID_ATEND_INDIVIDUAL WHERE AI.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendsIndivProf()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AIPR.* FROM ATENDS_INDIV_PROF AIPR INNER JOIN ATENDS_INDIVIDUAIS AI ON AI.ID_ATEND_INDIVIDUAL = AIPR.ID_ATEND_INDIVIDUAL WHERE AI.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendsIndividuais()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AI.*, CI.ID_AREA_CIDADAO, CI.ID_MICROAREA_CIDADAO FROM ATENDS_INDIVIDUAIS AI LEFT JOIN CADASTROS_INDIVIDUAIS CI ON AI.ID_CIDADAO = CI.ID_CIDADAO WHERE AI.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future procedimentosFichas()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT PF.* FROM PROCEDIMENTOS_FICHAS PF WHERE PF.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future procedimentosIndiv()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT PI.* FROM PROCEDIMENTOS_INDIV PI WHERE PI.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future procedimentosIndivFicha()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT PIF.* FROM PROCEDIMENTOS_INDIV_FICHA PIF INNER JOIN PROCEDIMENTOS_INDIV PI ON PI.ID_PROCEDIMENTOS_INDIV = PIF.ID_PROCEDIMENTOS_INDIV WHERE PI.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future procedimentosIndivSigtap()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT PIS.* FROM PROCEDIMENTOS_INDIV_SIGTAP PIS INNER JOIN PROCEDIMENTOS_INDIV PI ON PI.ID_PROCEDIMENTOS_INDIV = PIS.ID_PROCEDIMENTOS_INDIV WHERE PI.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future visitasDomiciliares()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT VD.* FROM VISITAS_DOMICILIARES VD WHERE VD.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future visitasDomiciliaresCompl()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT VDC.* FROM VISITAS_DOMICILIARES_COMPL VDC INNER JOIN VISITAS_DOMICILIARES VD ON VD.ID_VISITA_DOMICILIAR = VDC.ID_VISITA_DOMICILIAR WHERE VD.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future visitasDomiciliaresProc()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT VDP.* FROM VISITAS_DOMICILIARES_PROC VDP INNER JOIN VISITAS_DOMICILIARES VD ON VD.ID_VISITA_DOMICILIAR = VDP.ID_VISITA_DOMICILIAR WHERE VD.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future fichasComplementares()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT FC.* FROM FICHAS_COMPLEMENTARES FC WHERE FC.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendimentosDomiciliares()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AD.* FROM ATENDIMENTOS_DOMICILIARES AD WHERE AD.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendDomCompl()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT ADC.* FROM ATENDS_DOM_COMPL ADC INNER JOIN ATENDIMENTOS_DOMICILIARES AD ON AD.ID_ATENDIMENTO_DOMICILIAR = ADC.ID_ATENDIMENTO_DOMICILIAR WHERE AD.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendDomProcsFicha()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT ADP.* FROM ATENDS_DOM_PROC ADP INNER JOIN ATENDIMENTOS_DOMICILIARES AD ON AD.ID_ATENDIMENTO_DOMICILIAR = ADP.ID_ATENDIMENTO_DOMICILIAR WHERE AD.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendDomProcsSigtap()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT ADS.* FROM ATENDS_DOM_SIGTAP ADS INNER JOIN ATENDIMENTOS_DOMICILIARES AD ON AD.ID_ATENDIMENTO_DOMICILIAR = ADS.ID_ATENDIMENTO_DOMICILIAR WHERE AD.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendsOdontologicos()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AO.* FROM ATENDS_ODONTOLOGICOS AO WHERE AO.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendsOdontoProf()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AOC.* FROM ATENDS_ODONTO_PROF AOC INNER JOIN ATENDS_ODONTOLOGICOS AO ON AO.ID_ATENDIMENTO_ODONTOLOGICO = AOC.ID_ATENDIMENTO_ODONTOLOGICO WHERE AO.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendsOdontoProc()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AOC.* FROM ATENDS_ODONTO_PROC AOC INNER JOIN ATENDS_ODONTOLOGICOS AO ON AO.ID_ATENDIMENTO_ODONTOLOGICO = AOC.ID_ATENDIMENTO_ODONTOLOGICO WHERE AO.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendsOdontoSigtap()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AOC.* FROM ATENDS_ODONTO_SIGTAP AOC INNER JOIN ATENDS_ODONTOLOGICOS AO ON AO.ID_ATENDIMENTO_ODONTOLOGICO = AOC.ID_ATENDIMENTO_ODONTOLOGICO WHERE AO.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future atendsOdontoCompl()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AOC.* FROM ATENDS_ODONTO_COMPL AOC INNER JOIN ATENDS_ODONTOLOGICOS AO ON AO.ID_ATENDIMENTO_ODONTOLOGICO = AOC.ID_ATENDIMENTO_ODONTOLOGICO WHERE AO.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future marcadoresConQuest()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT MCQ.* FROM MARCADORES_CON_QUEST MCQ INNER JOIN MARCADORES_CONSUMO MC ON MC.ID_MARCADOR_CONSUMO = MCQ.ID_MARCADOR_CONSUMO WHERE MC.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future marcadoresConsumo()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT MC.* FROM MARCADORES_CONSUMO MC WHERE MC.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future avalElegCondAval()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AECA.* FROM AVAL_ELEG_COND_AVAL AECA INNER JOIN AVALIACOES_ELEGIBILIDADE AA ON AA.ID_AVALIACAO_ELEGIBILIDADE = AECA.ID_AVALIACAO_ELEGIBILIDADE WHERE AA.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future avalElegConclIne()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AECI.* FROM AVAL_ELEG_CONCL_INE AECI INNER JOIN AVALIACOES_ELEGIBILIDADE AA ON AA.ID_AVALIACAO_ELEGIBILIDADE = AECI.ID_AVALIACAO_ELEGIBILIDADE WHERE AA.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + Future avaliacoesElegibilidade()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT AA.* FROM AVALIACOES_ELEGIBILIDADE AA WHERE AA.SINCRONIZADO = 'N'"; + List list = await db.rawQuery(query); + // print(list); return list; } } \ No newline at end of file diff --git a/lib/service/db/db_sqlite_sync.dart b/lib/service/db/db_sqlite_sync.dart index 58d2725..8dd918b 100644 --- a/lib/service/db/db_sqlite_sync.dart +++ b/lib/service/db/db_sqlite_sync.dart @@ -66,7 +66,7 @@ class DbSqliteSync{ }; int id = await db.insert('LOGRADOUROS_ENDERECOS', row); // print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO'); - print(await db.query('LOGRADOUROS_ENDERECOS')); + // print(await db.query('LOGRADOUROS_ENDERECOS')); } return db; } @@ -229,7 +229,7 @@ class DbSqliteSync{ } }else{ int id = await db.insert('CIDADAOS', value); - print('novo id $id'); + // print('novo id $id'); } return db; } diff --git a/lib/widgets/alert_dialog_search_stateful.dart b/lib/widgets/alert_dialog_search_stateful.dart deleted file mode 100644 index 7857229..0000000 --- a/lib/widgets/alert_dialog_search_stateful.dart +++ /dev/null @@ -1,120 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:rkm/widgets/text_default.dart'; -import 'package:sqflite/sqflite.dart'; -import '../screens/registers_citizen/register_citizen_screen.dart'; -import '../service/db/db_sqlite_load.dart'; -import '../config/color_palette.dart'; -import 'input_search_text.dart'; - -class AlertDialogSearchStateful extends StatefulWidget { - - @override - State createState() => _AlertDialogSearchStatefulState(); -} - -class _AlertDialogSearchStatefulState extends State { - - List cityDB = []; - List showResultSearchCity = []; - var controller = TextEditingController(); - - _searchCityBirth(){ - searchCity(); - } - getCity()async{ - Database db = await DbSqliteLoad().intialDB(); - var query = "SELECT * FROM MUNICIPIOS ORDER BY NO_MUNICIPIO"; - List list = await db.rawQuery(query); - // print("SELECT * FROM UNIDADES"); - // print(await db.rawQuery("SELECT * FROM UNIDADES")); - for(int i=0; list.length > i;i++){ - cityDB.add('${list[i]['NO_MUNICIPIO']} - ${list[i]['UF_ESTADO']}'); - } - searchCity(); - return 'complete'; - } - - searchCity()async{ - if(controller.text.isNotEmpty){ - showResultSearchCity =[]; - for (int i =0;cityDB.length>i;i++) { - String CIDADE = '${cityDB[i]}'; - - if(CIDADE.contains(controller.text.toUpperCase())){ - if(showResultSearchCity.length<10){ - showResultSearchCity.add(cityDB[i]); - } - } - } - setState(() { - print(showResultSearchCity); - }); - }else{ - setState(() { - for(int i = 0;i<10;i++){ - showResultSearchCity.add(cityDB[i]); - } - }); - } - } - - @override - void initState() { - super.initState(); - getCity(); - controller.addListener(_searchCityBirth); - } - - @override - Widget build(BuildContext context) { - - double width = MediaQuery.of(context).size.width; - double height = MediaQuery.of(context).size.height; - - return AlertDialog( - title: InputSearchText( - controller: controller, - width: width*0.3, - hint: 'Buscar...', - color: ColorPalette.titleContainer, - border: false, - ), - content: Container( - padding: EdgeInsets.symmetric(vertical: 10), - width: width*0.8, - child: Container( - width: width*0.8, - height: height*0.8, - padding: EdgeInsets.symmetric(horizontal: 10), - child: ListView.separated( - separatorBuilder:(context,index)=> Divider(color: ColorPalette.black54,height: 5,), - itemCount: showResultSearchCity.length, - itemBuilder: (context,index){ - return Container( - width: width*0.8, - color: ColorPalette.white, - child: ListTile( - onTap: (){ - setState(() { - controller.text = showResultSearchCity[index]; - Navigator.push( - context, - MaterialPageRoute(builder: (context) => RegisterCitizenScreen(select: controller.text,)), - ); - }); - }, - title: TextDefault( - color: ColorPalette.black54, - text: showResultSearchCity[index], - fontSize: 16, - maxLines: 2, - ), - ), - ); - } - ), - ), - ), - ); - } -} diff --git a/lib/widgets/input_text.dart b/lib/widgets/input_text.dart index f0046a2..b343a9f 100644 --- a/lib/widgets/input_text.dart +++ b/lib/widgets/input_text.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:rkm/config/color_palette.dart'; import '../controllers/format_txt.dart'; @@ -26,7 +27,7 @@ class InputText extends StatelessWidget { this.textInputType = TextInputType.text, this.maxLines = 1, this.colorBorder = ColorPalette.black54, - this.onChanged = null + this.onChanged = null, }); @override diff --git a/lib/widgets/onbackbutton.dart b/lib/widgets/onbackbutton.dart index 1173ae9..52ecd57 100644 --- a/lib/widgets/onbackbutton.dart +++ b/lib/widgets/onbackbutton.dart @@ -5,30 +5,30 @@ import 'button_default.dart'; class OnBackButton{ onBackButton(context)async { - bool exiApp = await showDialog( - context: context, - builder: (context){ - return AlertDialog( - title: TextDefault(text: 'Aviso',color: ColorPalette.black54,textAlign: TextAlign.center,), - content: TextDefault(text: 'Deseja sair e descartar as alterações?',color: ColorPalette.black54,), - actions: [ - ButtonDefault( - onPressed: ()=>Navigator.pushNamedAndRemoveUntil(context, '/home', (route) => false), - title: 'Sim', - background: ColorPalette.appBar, - borderColor: ColorPalette.appBar, - textColor: ColorPalette.white, - ), - ButtonDefault( - onPressed: ()=>Navigator.of(context).pop(false), - title: 'Não', - background: ColorPalette.white, - borderColor: ColorPalette.white, - textColor: ColorPalette.black54, - ), - ], - ); - } + await showDialog( + context: context, + builder: (context){ + return AlertDialog( + title: TextDefault(text: 'Aviso',color: ColorPalette.black54,textAlign: TextAlign.center,), + content: TextDefault(text: 'Deseja sair e descartar as alterações?',color: ColorPalette.black54,), + actions: [ + ButtonDefault( + onPressed: ()=>Navigator.pushNamedAndRemoveUntil(context, '/home', (route) => false), + title: 'Sim', + background: ColorPalette.appBar, + borderColor: ColorPalette.appBar, + textColor: ColorPalette.white, + ), + ButtonDefault( + onPressed: ()=>Navigator.of(context).pop(false), + title: 'Não', + background: ColorPalette.white, + borderColor: ColorPalette.white, + textColor: ColorPalette.black54, + ), + ], ); + } + ); } } \ No newline at end of file diff --git a/lib/widgets/subtitle_appbar_citizen.dart b/lib/widgets/subtitle_appbar_citizen.dart index 905f88e..ec81e01 100644 --- a/lib/widgets/subtitle_appbar_citizen.dart +++ b/lib/widgets/subtitle_appbar_citizen.dart @@ -29,7 +29,7 @@ class SubtitleAppbarCitizen extends StatelessWidget { TextButton.icon( onPressed:edit? ()=> Navigator.push( context, - MaterialPageRoute(builder: (context) => RegisterCitizenScreen(select: '',)), + MaterialPageRoute(builder: (context) => RegisterCitizenScreen(listData: [],)), ):null, icon: Icon(Icons.person,color: title==1?Colors.black:ColorPalette.gray,), label: TextDefault(text: 'Cadastro Cidadão',fontSize: 14,color: title==1?Colors.black:ColorPalette.gray,) diff --git a/pubspec.lock b/pubspec.lock index 2a78a36..bda0c74 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -29,6 +29,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + brasil_fields: + dependency: "direct main" + description: + name: brasil_fields + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.0" characters: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index ec5e3d7..8df8fc4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,6 +20,7 @@ dependencies: sqflite: ^2.0.0+3 shared_preferences: ^2.0.15 get: + brasil_fields: dev_dependencies: flutter_test: