diff --git a/lib/models/equipe_modelo.dart b/lib/models/equipe_modelo.dart new file mode 100644 index 0000000..3502e57 --- /dev/null +++ b/lib/models/equipe_modelo.dart @@ -0,0 +1,23 @@ +class EquipeModelo{ + int ID_EQUIPE; + int ID_UNIDADE; + String INE; + int AREA; + int ID_ATB_MICROAREA; + int ID_ATB_AREA; + int MICROAREA; + int ID_PROFISSIONAL; + int ATIVO; + + EquipeModelo({ + required this.ID_EQUIPE, + required this.ID_UNIDADE, + required this.INE, + required this.AREA, + required this.ID_ATB_MICROAREA, + required this.ID_ATB_AREA, + required this.MICROAREA, + required this.ID_PROFISSIONAL, + required this.ATIVO, + }); +} \ No newline at end of file diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index e1ba5f3..6e43ad1 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -30,7 +30,8 @@ class _HomeScreenState extends State { loadCitizen()async{ await DbSqliteLoad().intialDB().then((db)async { dataCitizen = await db.query('CIDADAOS ORDER BY NOME_CIDADAO'); - // print(await db.rawQuery("SELECT * FROM CIDADAOS WHERE NOME_PAI='REGINALDO OLIVEIRA'")); + print(dataCitizen.length); + // print(await db.rawQuery("SELECT * FROM CIDADAOS")); }); searchCitizen(); return 'complete'; diff --git a/lib/screens/login/sync_login_screen.dart b/lib/screens/login/sync_login_screen.dart index a2d7180..079d29f 100644 --- a/lib/screens/login/sync_login_screen.dart +++ b/lib/screens/login/sync_login_screen.dart @@ -8,10 +8,12 @@ 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 '../../models/equipe_modelo.dart'; import '../../service/api/api_data_load.dart'; import '../../service/api/api_data_sync.dart'; import '../../service/db/db_sqlite_load.dart'; import '../../service/shared_preferences/shared_preferences_service.dart'; +import '../../widgets/dropdown_equipe.dart'; import '../../widgets/title_input.dart'; class SyncLoginScreen extends StatefulWidget { @@ -26,7 +28,7 @@ class _SyncLoginScreenState extends State { String error = ''; String? now; String? selectUnit; - String? selectTeam; + EquipeModelo? selectTeam; bool validatorDropDown= false; bool citizenOutArea = false; int contLogo = 0; @@ -36,9 +38,11 @@ class _SyncLoginScreenState extends State { bool loading = false; List listUnit=[]; List searchUnitCodList=[]; - List listTeam = []; + List listTeam = []; String idUnidade =''; int idUsuario =0; + int ID_ATB_AREA = 0; + int ID_ATB_MICROAREA = 0; final PrefService _prefService = PrefService(); @@ -155,15 +159,29 @@ class _SyncLoginScreenState extends State { var query = "SELECT * FROM EQUIPES JOIN PROFISSIONAIS_EQUIPE ON PROFISSIONAIS_EQUIPE.ID_EQUIPE = EQUIPES.ID_EQUIPE WHERE ID_UNIDADE = $idUnidade AND ID_PROFISSIONAL = $value"; List list = await db.rawQuery(query); listTeam.clear(); + print(list); for(int i=0; list.length > i;i++){ - listTeam.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']==null?'':list[i]['MICROAREA']}'); + listTeam.add( + EquipeModelo( + AREA:list[i]['AREA'], + ID_EQUIPE:list[i]['ID_EQUIPE'], + INE:list[i]['INE'].toString(), + ID_ATB_AREA:list[i]['ID_ATB_AREA'], + ID_ATB_MICROAREA:list[i]['ID_ATB_MICROAREA'], + MICROAREA:list[i]['MICROAREA'], + ID_PROFISSIONAL:list[i]['ID_PROFISSIONAL'], + ATIVO:list[i]['ATIVO'], + ID_UNIDADE:list[i]['ID_UNIDADE'], + ) + ); + // listTeam.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']==null?'':list[i]['MICROAREA']}'); } var query1 = "SELECT * FROM EQUIPES WHERE ID_EQUIPE = $idUnidade"; List list1 = await db.rawQuery(query1); - print(list1); + // print(list1); var query2 = "SELECT * FROM PROFISSIONAIS_EQUIPE WHERE ID_PROFISSIONAL = $idUsuario"; List list2 = await db.rawQuery(query2); - print(list2); + // print(list2); print(list2.length); print('idUsuario'); print(idUsuario); @@ -252,7 +270,7 @@ class _SyncLoginScreenState extends State { }, ), TitleInput(title:'Equipe'), - DropDownButtonDefault( + DropDownEquipe( width: width*0.7, title: 'Equipe', list: listTeam, @@ -260,6 +278,7 @@ class _SyncLoginScreenState extends State { onChanged: (value){ setState(() { selectTeam = value!; + print(selectTeam!.ID_ATB_MICROAREA.toString()); }); }, ), diff --git a/lib/screens/registers_citizen/register_citizen_screen.dart b/lib/screens/registers_citizen/register_citizen_screen.dart index 0e987cd..4232b37 100644 --- a/lib/screens/registers_citizen/register_citizen_screen.dart +++ b/lib/screens/registers_citizen/register_citizen_screen.dart @@ -452,7 +452,6 @@ class _RegisterCitizenScreenState extends State { 'NUM_PIS_PASEP' : PISController.text.isNotEmpty?int.parse(PISController.text):0, 'FL_RETIROU_CARTAO' : enableCityCard?'S':'N', 'NUM_NIS' : NISController.text.isNotEmpty?int.parse(NISController.text):0, - //aqui 'NUM_PROT_CROSS' : '', 'RENDA_MENSAL' : incomeController.text.isNotEmpty?double.parse(incomeController.text.replaceAll('R\$ ', '').replaceAll('.', '').replaceAll(',', '.')):0, 'PROFISSAO' : professionalController.text, @@ -461,11 +460,6 @@ class _RegisterCitizenScreenState extends State { 'BLOQUEIO' : enableBlocked?1:0, 'ORIGEM' : 'A', 'DT_HORA_CADASTRO' : DateTime.now().toString(), - // 'ID_USUARIO_CADASTRO' : '', - //só quando for feito o atendimento domicíliar - 'ID_DOMICILIO' : '', - //só quando for feito um atendimento - 'ATENDIMENTOS' : '', 'SINCRONIZADO' : 'N', }; await DbSqliteSync().insertCidadaos(row,editing?'update':'new',codSus).then((value){ @@ -2062,7 +2056,7 @@ class _RegisterCitizenScreenState extends State { mainAxisSize: MainAxisSize.min, children: [ Container( - color: ColorPalette.white, + color: edit?Colors.grey[200]:ColorPalette.disable, margin: EdgeInsets.only(top: 5), width: width*0.7, child: TextFormField( diff --git a/lib/screens/registers_citizen/register_home_screen.dart b/lib/screens/registers_citizen/register_home_screen.dart index b06f38a..1496c07 100644 --- a/lib/screens/registers_citizen/register_home_screen.dart +++ b/lib/screens/registers_citizen/register_home_screen.dart @@ -34,7 +34,17 @@ class _RegisterHomeScreenState extends State { var NOME_RESP_CADASTRO = TextEditingController(); var CNES_RESP_CADASTRO = TextEditingController(); var DT_CADASTRO = TextEditingController(); + var RENDA_TOTAL_FAMILIAR = TextEditingController(); + var RENDA_MENSAL = TextEditingController(); + var ANO_VEICULO = TextEditingController(); + var MODELO_VEICULO = TextEditingController(); + var VALOR_PARCELA_FINANCIAMENTO = TextEditingController(); + var VALOR_PARCELA_EMPRESTIMO = TextEditingController(); + var PROFISSAO = TextEditingController(); + bool POSSUI_FINANCIAMENTO = false; + bool POSSUI_EMPRESTIMO = false; + bool POSSUI_VEICULO = false; bool FORA_AREA = false; bool DISPONIBILIDADE_ENERGIA = false; bool FL_ANIMAIS = false; @@ -184,7 +194,28 @@ class _RegisterHomeScreenState extends State { } loadRegisterHome()async{ - ID_DOMICILIO = widget.listData[0]['ID_DOMICILIO']==null || widget.listData[0]['ID_DOMICILIO'] == ''?0:int.parse(widget.listData[0]['ID_DOMICILIO']); + //dados + PROFISSAO.text = widget.listData[0]['PROFISSAO']??''; + RENDA_TOTAL_FAMILIAR.text = widget.listData[0]['RENDA_TOTAL_FAMILIAR']==null?'0,00':'${widget.listData[0]['RENDA_TOTAL_FAMILIAR'].toString().replaceAll('.', ',')}'; + MODELO_VEICULO.text = widget.listData[0]['MODELO_VEICULO']; + ANO_VEICULO.text = widget.listData[0]['ANO_VEICULO'].toString(); + VALOR_PARCELA_FINANCIAMENTO.text = widget.listData[0]['VALOR_PARCELA_FINANCIAMENTO'].toString(); + VALOR_PARCELA_EMPRESTIMO.text = widget.listData[0]['VALOR_PARCELA_EMPRESTIMO'].toString(); + RENDA_MENSAL.text = widget.listData[0]['RENDA_MENSAL']==null?'0,00':'${widget.listData[0]['RENDA_MENSAL'].toString().replaceAll('.', ',')}'; + POSSUI_VEICULO = widget.listData[0]['POSSUI_VEICULO']=='S'?true:false; + POSSUI_FINANCIAMENTO = widget.listData[0]['POSSUI_FINANCIAMENTO']=='S'?true:false; + POSSUI_EMPRESTIMO = widget.listData[0]['POSSUI_EMPRESTIMO']=='S'?true:false; + + // print(RENDA_TOTAL_FAMILIAR.text); + // print(MODELO_VEICULO.text); + // print(ANO_VEICULO.text); + // print(VALOR_PARCELA_FINANCIAMENTO.text); + // print(VALOR_PARCELA_EMPRESTIMO.text); + // print(POSSUI_VEICULO); + // print(POSSUI_FINANCIAMENTO); + // print(POSSUI_EMPRESTIMO); + + ID_DOMICILIO = widget.listData[0]['ID_DOMICILIO']==null || widget.listData[0]['ID_DOMICILIO'] == ''?0:widget.listData[0]['ID_DOMICILIO']; ID_CIDADAO = widget.listData[0]['ID_CIDADAO']; CD_USUARIO_SUS = widget.listData[0]['CD_USUARIO_SUS']; DBQuerys().buscaCadDomiciliar(ID_DOMICILIO).then((dataHome)async{ @@ -290,20 +321,22 @@ class _RegisterHomeScreenState extends State { CBO_RESP_CADASTRO = list.length == 0?null:list[0]['CODIGO_CBO'].toString(); setState(() {}); }); + await DBQuerys().buscaProfissionalCadInd(dataHome[0]['ID_RESP_CADASTRO']).then((list)async{ + ID_RESP_CADASTRO = list['ID_PROFISSIONAL']; + NOME_RESP_CADASTRO.text = list['NOME_PROFISSIONAL']; + String CNS_PROFISSIONAL = list['CNS_PROFISSIONAL']; + CNES_RESP_CADASTRO.text = await DBQuerys().buscaNomeUnidade(list['ID_UNIDADE']); + print(list); + if(CNS_PROFISSIONAL == 999999999999999 || CNS_PROFISSIONAL == '999999999999999'){ + CNS_VALIDO = true; + } + }); }); List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); for(int i=0; list.length > i;i++){ INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}'; listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}'); } - await DBQuerys().buscaProfissionalCadInd(idUsuario).then((list){ - ID_RESP_CADASTRO = list['ID_PROFISSIONAL']; - NOME_RESP_CADASTRO.text = list['NOME_PROFISSIONAL']; - String CNS_PROFISSIONAL = list['CNS_PROFISSIONAL']; - if(CNS_PROFISSIONAL == 999999999999999 || CNS_PROFISSIONAL == '999999999999999'){ - CNS_VALIDO = true; - } - }); setState(() {}); } @@ -327,7 +360,21 @@ class _RegisterHomeScreenState extends State { } saveCitizenHome()async{ - Map row = { + //save + Map rowCitizen = { + 'PROFISSAO' : PROFISSAO.text.trim(), + 'RENDA_TOTAL_FAMILIAR' : double.parse(RENDA_TOTAL_FAMILIAR.text.trim().replaceAll('.','').replaceAll(',', '.')), + 'MODELO_VEICULO' : MODELO_VEICULO.text.trim(), + 'ANO_VEICULO' : int.parse(ANO_VEICULO.text.trim().replaceAll('.', '')), + 'VALOR_PARCELA_FINANCIAMENTO' : double.parse(VALOR_PARCELA_FINANCIAMENTO.text.trim().replaceAll('.','').replaceAll(',', '.')), + 'VALOR_PARCELA_EMPRESTIMO' : double.parse(VALOR_PARCELA_EMPRESTIMO.text.trim().replaceAll('.','').replaceAll(',', '.')), + 'RENDA_MENSAL' : double.parse(RENDA_MENSAL.text.trim().replaceAll('.','').replaceAll(',', '.')), + 'POSSUI_VEICULO' : POSSUI_VEICULO?'S':'N', + 'POSSUI_FINANCIAMENTO' : POSSUI_FINANCIAMENTO?'S':'N', + 'POSSUI_EMPRESTIMO' : POSSUI_EMPRESTIMO?'S':'N', + }; + + Map rowHome = { 'TIPO_IMOVEL' : TIPO_IMOVEL_COD, 'ID_AREA_DOMICILIO' : ID_AREA_DOMICILIO, 'ID_MICROAREA_DOMICILIO' : ID_MICROAREA_DOMICILIO, @@ -365,17 +412,19 @@ class _RegisterHomeScreenState extends State { 'CARGO_RESP_TECNICO_INST' : CARGO_RESP_TECNICO_INST, 'TEL_RESP_TECNICO_INST' : TEL_RESP_TECNICO_INST, }; - await DbSqliteSync().insertCadastrosDomiciliares(row,TIPO_SALVAR,ID_DOMICILIO,ID_CIDADAO,CD_USUARIO_SUS).then((value){ - AlertDialogDefault().alert( - context, - 'Aviso', - TIPO_SALVAR!='new'? - 'Cadastro Domiciliar alterado com sucesso!': - 'Cadastro Domiciliar realizado com sucesso!', - 'OK' - ); - Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: widget.username)), (route) => false); - // print(value); + await DbSqliteSync().insertCadastrosDomiciliares(rowHome,TIPO_SALVAR,ID_DOMICILIO,ID_CIDADAO,CD_USUARIO_SUS).then((value)async{ + await DbSqliteSync().insertCidadaos(rowCitizen,editing?'update':'new',widget.listData[0]['CD_USUARIO_SUS']).then((value){ + AlertDialogDefault().alert( + context, + 'Aviso', + TIPO_SALVAR!='new'? + 'Cadastro Domiciliar alterado com sucesso!': + 'Cadastro Domiciliar realizado com sucesso!', + 'OK' + ); + Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: widget.username)), (route) => false); + // print(value); + }); }); } @@ -761,7 +810,7 @@ class _RegisterHomeScreenState extends State { margin: EdgeInsets.all(10), child: Column( children: [ - TitleContainers(title: 'Outros'), + TitleContainers(title: 'Profissional Responsável'), Row( children: [ Container( @@ -845,6 +894,177 @@ class _RegisterHomeScreenState extends State { ], ), ), + Card( + margin: EdgeInsets.all(10), + child: Column( + children: [ + TitleContainers(title: 'Outros'), + Row( + children: [ + Container( + height: heigth*0.4, + width: width*0.2, + child: Icon(Icons.tag,size: 80,), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 0.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Row( + children: [ + Container(width: width*0.05,child: TextDefault(text: 'R\$',color: Colors.black87)), + InputWithSubtitle( + controller: RENDA_MENSAL, + subtitle: 'Renda Mensal', + errorInput: 'Campo Obrigatório', + labelInput: 'Renda Mensal', + widthInput: width*0.65, + widthSubtitle: width*0.65, + hintInput: 'Escreva aqui', + enabled: editing, + onChanged: (v)=>setState((){}), + ), + ], + ), + Row( + children: [ + Container(width: width*0.05,child: TextDefault(text: '',color: Colors.black87)), + InputWithSubtitle( + controller: PROFISSAO, + subtitle: 'Profissão', + errorInput: 'Campo Obrigatório', + labelInput: 'Profissão', + widthInput: width*0.65, + widthSubtitle: width*0.65, + hintInput: 'Escreva aqui', + enabled: editing, + onChanged: (v)=>setState((){}), + ), + ], + ), + Row( + children: [ + Container(width: width*0.05,child: TextDefault(text: 'R\$',color: Colors.black87)), + InputWithSubtitle( + textInputType: TextInputType.number, + controller: RENDA_TOTAL_FAMILIAR, + subtitle: 'Renda Total Familiar', + errorInput: 'Campo Obrigatório', + labelInput: 'Renda Total Familiar', + widthInput: width*0.65, + widthSubtitle: width*0.65, + hintInput: 'Escreva aqui', + enabled: editing, + onChanged: (v)=>setState((){}), + ), + ], + ), + Row( + children: [ + Container(width: width*0.05,child: TextDefault(text: '',color: Colors.black87)), + SwitchWithSubtitle( + width: width*0.65, + title: 'Possui Veículo Próprio', + value: POSSUI_VEICULO, + onChanged: !editing?null: (value)=>setState(()=>POSSUI_VEICULO = value!), + ), + ], + ), + Container( + width: width*0.7, + child: Row( + children: [ + Container(width: width*0.05,child: TextDefault(text: '',color: Colors.black87)), + InputWithSubtitle( + controller: MODELO_VEICULO, + subtitle: 'Modelo Veículo', + errorInput: 'Campo Obrigatório', + labelInput: 'Modelo Veículo', + widthInput: width*0.53, + widthSubtitle: width*0.53, + hintInput: 'Escreva aqui', + enabled: editing && POSSUI_VEICULO, + onChanged: (v)=>setState((){}), + ), + Spacer(), + InputWithSubtitle( + controller: ANO_VEICULO, + subtitle: 'Ano Veículo', + errorInput: 'Campo Obrigatório', + labelInput: 'Ano Veículo', + widthInput: width*0.1, + widthSubtitle: width*0.1, + hintInput: 'Escreva aqui', + enabled: editing && POSSUI_VEICULO, + onChanged: (v)=>setState((){}), + ), + ], + ), + ), + Row( + children: [ + Container(width: width*0.05,child: TextDefault(text: '',color: Colors.black87)), + SwitchWithSubtitle( + width: width*0.65, + title: 'Possui Financiamento', + value: POSSUI_FINANCIAMENTO, + onChanged: !editing?null: (value)=>setState(()=>POSSUI_FINANCIAMENTO = value!), + ), + ], + ), + Row( + children: [ + Container(width: width*0.05,child: TextDefault(text: 'R\$',color: Colors.black87)), + InputWithSubtitle( + controller: VALOR_PARCELA_FINANCIAMENTO, + subtitle: 'Valor Parcela Financiamento', + errorInput: 'Campo Obrigatório', + labelInput: 'Valor Parcela Financiamento', + widthInput: width*0.65, + widthSubtitle: width*0.65, + hintInput: 'Escreva aqui', + enabled: editing && POSSUI_FINANCIAMENTO, + onChanged: (v)=>setState((){}), + ), + ], + ), + Row( + children: [ + Container(width: width*0.05,child: TextDefault(text: '',color: Colors.black87)), + SwitchWithSubtitle( + width: width*0.65, + title: 'Possui Veículo Empréstimo', + value: POSSUI_EMPRESTIMO, + onChanged: !editing?null: (value)=>setState(()=>POSSUI_EMPRESTIMO = value!), + ), + ], + ), + Row( + children: [ + Container(width: width*0.05,child: TextDefault(text: 'R\$',color: Colors.black87)), + InputWithSubtitle( + controller: VALOR_PARCELA_EMPRESTIMO, + subtitle: 'Valor Parcela Empréstimo', + errorInput: 'Campo Obrigatório', + labelInput: 'Valor Parcela Empréstimo', + widthInput: width*0.65, + widthSubtitle: width*0.65, + hintInput: 'Escreva aqui', + enabled: editing && POSSUI_EMPRESTIMO, + onChanged: (v)=>setState((){}), + ), + ], + ), + ], + ), + ), + ] + ), + ], + ), + ), CNS_VALIDO?Card( margin: EdgeInsets.all(10), child: Container( diff --git a/lib/screens/registers_citizen/register_individual_screen.dart b/lib/screens/registers_citizen/register_individual_screen.dart index a4401e7..f5b2c3f 100644 --- a/lib/screens/registers_citizen/register_individual_screen.dart +++ b/lib/screens/registers_citizen/register_individual_screen.dart @@ -144,6 +144,7 @@ class _RegisterIndividualScreenState extends State { int ID_AREA_CIDADAO = 0; int ID_MICROAREA_CIDADAO = 0; String TIPO_SALVAR = 'new'; + int ID_PROFISSIONAL = 0; var NOME_RESPONSAVEL_FAMILIAR = TextEditingController(); var NATURALIDADE = TextEditingController(text: 'BRASILEIRO'); @@ -158,7 +159,7 @@ class _RegisterIndividualScreenState extends State { var OUTRAS_CONDICOES = TextEditingController(); var ACOMP_INTITUICAO_QUAL = TextEditingController(); var PARENTESCO_VISITA = TextEditingController(); - var ID_RESP_CADASTRO = TextEditingController(); + var USUARIO_RESP_CADASTRO = TextEditingController(); var CNES_RESP_CADASTRO = TextEditingController(); var DT_CADASTRO = TextEditingController(); final PrefService _prefService = PrefService(); @@ -223,21 +224,14 @@ class _RegisterIndividualScreenState extends State { print(widget.listData[0]['ID_USUARIO_CADASTRO']); Database db = await DbSqliteLoad().intialDB(); - // print('ID_PROFISSIONAL'); - // print(ID_PROFISSIONAL); - var query = "SELECT ID_PROFISSIONAL FROM PROFISSIONAIS"; - // var query = "SELECT * FROM PROFISSIONAIS"; - List list = await db.rawQuery(query); - print(list); - // if(widget.listData[0]['ID_USUARIO_CADASTRO']!='' && widget.listData[0]['ID_USUARIO_CADASTRO']!=null){ - // await DBQuerys().buscaProfissionalCadInd(widget.listData[0]['ID_USUARIO_CADASTRO']).then((value){ - // print(value); - // }); - // } - + await DBQuerys().buscaCadInvidual(ID_CIDADAO).then((dataCitizen)async{ // print(CD_USUARIO_SUS); if(dataCitizen.length != 0) { + ID_PROFISSIONAL = dataCitizen[0]['ID_RESP_CADASTRO']; + print(dataCitizen[0]['ID_RESP_CADASTRO']); + // print(dataCitizen[0]['FIBROMIALGIA']); + // print(dataCitizen[0]['TRANSTORNO_ESPECTRO_AUTISTA']); TIPO_SALVAR = 'update'; showTab = true; FORA_AREA = dataCitizen[0]['FORA_AREA'] == 1 ? true : false; @@ -404,7 +398,6 @@ class _RegisterIndividualScreenState extends State { SANITARIO = dataCitizen[0]['SANITARIO'] == 1 ? true : false; HIGIENE_BUCAL = dataCitizen[0]['HIGIENE_BUCAL'] == 1 ? true : false; OUTROS_HIGIENE = dataCitizen[0]['OUTROS_HIGIENE'] == 1 ? true : false; - CNES_RESP_CADASTRO.text = await DBQuerys().buscaNomeUnidade(idUnidade); CBO_RESP_CADASTRO = dataCitizen[0]['CBO_RESP_CADASTRO'].toString(); date_cad = dataCitizen[0]['DT_CADASTRO']??''; // print('data $date_cad'); @@ -428,13 +421,13 @@ class _RegisterIndividualScreenState extends State { } } await DBQuerys().buscaProfissionalCadInd(idUsuario).then((list){ - ID_RESP_CADASTRO.text = list['NOME_PROFISSIONAL']; + USUARIO_RESP_CADASTRO.text = list['NOME_PROFISSIONAL']; CNS_PROFISSIONAL = list['CNS_PROFISSIONAL']; if(CNS_PROFISSIONAL == 999999999999999 || CNS_PROFISSIONAL == '999999999999999'){ CNS_VALIDO = true; } }); - CNES_RESP_CADASTRO.text = await DBQuerys().buscaNomeUnidade(idUnidade); + // CNES_RESP_CADASTRO.text = await DBQuerys().buscaNomeUnidade(idUnidade); await DBQuerys().buscaCBOProfissional(idUsuario).then((list){ if(list.length!=0){ for(int i = 0; list.length>i;i++){ @@ -443,6 +436,14 @@ class _RegisterIndividualScreenState extends State { } CBO_RESP_CADASTRO = list.length == 0?null:list[0]['CODIGO_CBO'].toString(); }); + if(ID_PROFISSIONAL!=0){ + await DBQuerys().buscaProfissionalCadInd(ID_PROFISSIONAL).then((value)async{ + print(value); + USUARIO_RESP_CADASTRO.text = value['NOME_PROFISSIONAL']; + //aguardando unidade + CNES_RESP_CADASTRO.text = await DBQuerys().buscaNomeUnidade(value['ID_UNIDADE']); + }); + } }); setState(() {}); } @@ -1495,7 +1496,7 @@ class _RegisterIndividualScreenState extends State { mainAxisSize: MainAxisSize.min, children: [ InputWithSubtitle( - controller: ID_RESP_CADASTRO, + controller: USUARIO_RESP_CADASTRO, subtitle: 'Usuário responsável Pelo Cadastro', errorInput: 'Campo Obrigatório!', labelInput: 'Usuário responsável Pelo Cadastro', diff --git a/lib/screens/sync_init_screen.dart b/lib/screens/sync_init_screen.dart index c696069..6a5486d 100644 --- a/lib/screens/sync_init_screen.dart +++ b/lib/screens/sync_init_screen.dart @@ -26,8 +26,8 @@ class _SyncInitScreenState extends State { String idUsuario = ''; String idUnidade = ''; String nomeUnidade = ''; - String area = ''; - String microarea = ''; + int idArea = 0; + int idMicroarea = 0; bool foraArea = false; String urlAPI=''; String mode = ''; @@ -64,12 +64,12 @@ class _SyncInitScreenState extends State { dataUser()async{ _prefService.readCacheUnidade().then((listUnidade)async{ - _prefService.readCacheSync('area', false).then((list){ - foraArea = list[1]; - List splited = list[0].split(': '); - area = splited[2].toString().substring(0,1); - microarea = splited[3]; - idUnidade = listUnidade[0]; + _prefService.readCacheSync().then((list){ + print(list); + foraArea = list[8]; + idArea = list[2]; + idMicroarea = list[4]; + idUnidade = listUnidade[0].toString(); nomeUnidade = listUnidade[1]; initSync(); }); @@ -133,7 +133,7 @@ class _SyncInitScreenState extends State { await DbSqliteSync().insertProfissionaisCBOs(value).then((value)async{ countProg = 0.7; setState(() {}); - await ApiDataSync().syncCidadaos(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea).then((value)async{ + await ApiDataSync().syncCidadaos(urlAPI,mode,nameCityApi,user,idUnidade,idArea,idMicroarea,foraArea).then((value)async{ if(value.length == 0){ setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros dos Cidadãos - Por favor, tente novamente!"); }else{ @@ -141,7 +141,7 @@ class _SyncInitScreenState extends State { await DbSqliteSync().insertCidadaos(value,'sync','').then((value)async{ countProg = 0.8; setState(() {}); - await ApiDataSync().syncCadastrosDomiciliares(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea).then((value)async{ + await ApiDataSync().syncCadastrosDomiciliares(urlAPI,mode,nameCityApi,user,idUnidade,idArea,idMicroarea,foraArea).then((value)async{ if(value.length == 0){ setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros Domiciliares - Por favor, tente novamente!"); }else{ @@ -149,13 +149,13 @@ class _SyncInitScreenState extends State { await DbSqliteSync().insertCadastrosDomiciliares(value,'sync',0,0,'').then((value)async{ countProg = 0.9; setState(() {}); - await ApiDataSync().syncCadastrosIndividuais(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea).then((value)async{ + await ApiDataSync().syncCadastrosIndividuais(urlAPI,mode,nameCityApi,user,idUnidade,idArea,idMicroarea,foraArea).then((value)async{ if(value.length == 0){ setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros Individuais - Por favor, tente novamente!"); }else{ setState(()=> messageSteps = "Etapa 10 de 10 - Gravando os Cadastros Individuais no Aplicativo"); await DbSqliteSync().insertCadastrosIndividuais(value,'sync',0).then((value)async{ - await DbSqliteSync().saveSync(codCity,codState,urlAPI,mode,nameCityApi,nameCityFront,codCityIbge,user,idUnidade,nomeUnidade,area,microarea).then((value)async{ + await DbSqliteSync().saveSync(codCity,codState,urlAPI,mode,nameCityApi,nameCityFront,codCityIbge,user,idUnidade,nomeUnidade,idArea,idMicroarea).then((value)async{ countProg = 1; setState(() {}); Navigator.pushReplacement(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: user))); diff --git a/lib/service/api/api_data_sync.dart b/lib/service/api/api_data_sync.dart index 565ec94..21c692a 100644 --- a/lib/service/api/api_data_sync.dart +++ b/lib/service/api/api_data_sync.dart @@ -57,6 +57,7 @@ class ApiDataSync{ Future syncCidadaos(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/cidadaos/1/1/true final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/cidadaos/$area/$microarea/$foraArea'; + print(url); final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); return map; diff --git a/lib/service/db/db_querys.dart b/lib/service/db/db_querys.dart index 50a94c5..63dc590 100644 --- a/lib/service/db/db_querys.dart +++ b/lib/service/db/db_querys.dart @@ -54,28 +54,46 @@ class DBQuerys{ var query = "SELECT * FROM PROFISSIONAIS WHERE ID_PROFISSIONAL = $ID_PROFISSIONAL"; // var query = "SELECT * FROM PROFISSIONAIS"; List list = await db.rawQuery(query); - // print(list); - return list[0]; + if(list.isEmpty){ + return ''; + }else{ + // print(list); + return list[0]; + } } - buscaNomeUnidade(String ID_UNIDADE)async{ + buscaNomeUnidade(int ID_UNIDADE)async{ Database db = await DbSqliteLoad().intialDB(); var query = "SELECT * FROM UNIDADES WHERE ID_UNIDADE = $ID_UNIDADE"; List list = await db.rawQuery(query); - // print(list); - return list[0]['NOME_UNIDADE']; + if(list.isEmpty){ + return ''; + }else{ + // print(list); + return list[0]['NOME_UNIDADE']; + } } buscaBairro(nomeBairro)async{ Database db = await DbSqliteLoad().intialDB(); List list = await db.rawQuery("SELECT * FROM BAIRROS WHERE NO_BAIRRO = '$nomeBairro'"); // print(await db.rawQuery('SELECT NO_BAIRRO FROM BAIRROS')); // print(list[0]['ID_BAIRRO']); - return list[0]['ID_BAIRRO'].toString(); + if(list.isEmpty){ + return ''; + }else{ + // print(list); + return list[0]['ID_BAIRRO'].toString(); + } } buscaTipoLogradouro(tipo)async{ Database db = await DbSqliteLoad().intialDB(); List list = await db.rawQuery("SELECT * FROM LOGRADOUROS_TIPOS WHERE NO_LOGR_TIPO = '$tipo'"); // print(list[0]['ID_LOGR_TIPO']); - return list[0]['ID_LOGR_TIPO']; + if(list.isEmpty){ + return ''; + }else{ + // print(list); + return list[0]['ID_LOGR_TIPO']; + } } buscaprocedimento()async{ Database db = await DbSqliteLoad().intialDB(); @@ -130,7 +148,7 @@ class DBQuerys{ 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']; + int result = list.length==0?0:list[0]['ID_LOGR_LOTEAMENTO']; return result; } buscaLoteamentoPorID(int ID_LOGR_LOTEAMENTO)async{ @@ -138,7 +156,7 @@ class DBQuerys{ 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']; + String result = list.length==0?'':list[0]['DESC_LOGR_LOTEAMENTO']; return result; } buscaTodosMunicipios()async{ diff --git a/lib/service/db/db_sqlite_load.dart b/lib/service/db/db_sqlite_load.dart index 0bc3391..cb2ad4c 100644 --- a/lib/service/db/db_sqlite_load.dart +++ b/lib/service/db/db_sqlite_load.dart @@ -30,10 +30,10 @@ class DbSqliteLoad{ db.execute('CREATE TABLE IF NOT EXISTS AVAL_ELEG_CONCL_INE (ID_AVALIACAO_ELEGIBILIDADE INTEGER, AVALIACAO INTEGER);'); db.execute('CREATE TABLE IF NOT EXISTS AVAL_ELEG_COND_AVAL (ID_AVALIACAO_ELEGIBILIDADE INTEGER, AVALIACAO INTEGER);'); db.execute('CREATE TABLE IF NOT EXISTS BAIRROS (ID_BAIRRO INTEGER PRIMARY KEY AUTOINCREMENT, NO_BAIRRO TEXT);'); - db.execute('CREATE TABLE IF NOT EXISTS CADASTROS_INDIVIDUAIS (ID_CAD_INDIVIDUAL INTEGER PRIMARY KEY AUTOINCREMENT, STATUS_CADASTRO INTEGER, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, ID_AREA_CIDADAO INTEGER, ID_MICROAREA_CIDADAO INTEGER, FORA_AREA INTEGER, RESPONSAVEL_FAMILIAR INTEGER, ID_RESPONSAVEL_FAMILIAR TEXT, NOME_RESPONSAVEL_FAMILIAR TEXT, PARENTESCO INTEGER, ESCOLARIDADE INTEGER, FREQ_ESCOLA_CRECHE INTEGER, SITUACAO_MERCADO INTEGER, CUIDADOR_TRADICIONAL INTEGER, GRUPO_COMUNITARIO INTEGER, PLANO_PRIVADO INTEGER, COMUNIDADE_TRADICIONAL INTEGER, COM_TRADI_QUAL TEXT, ORIENT_SEXUAL INTEGER, TEM_DEFICIENCIA INTEGER, DEF_AUDITIVA INTEGER, DEF_INTELECTUAL INTEGER, DEF_VISUAL INTEGER, DEF_FISICA INTEGER, DEF_OUTRAS INTEGER, SAIDA_CADASTRO INTEGER, DATA_SAIDA_CADASTRO TEXT, CADASTRO_RECUSADO INTEGER, GESTANTE INTEGER, MATERNIDADE_REFERENCIA TEXT, PESO INTEGER, FUMANTE INTEGER, USA_ALCOOL INTEGER, USA_DROGAS INTEGER, HIPERTENSAO INTEGER, DIABETES INTEGER, AVC_DERRAME INTEGER, INFARTO INTEGER, HANSENIASE INTEGER, TUBERCULOSE INTEGER, CANCER INTEGER, INTERNACAO INTEGER, MOTIVO TEXT, DOENCA_CARDIACA INTEGER, PROBLEMA_RINS INTEGER, DOENCA_PULMAO INTEGER, SAUDE_MENTAL INTEGER, ACAMADO INTEGER, DOMICILIADO INTEGER, PLANTAS_MED INTEGER, PLANTAS_MED_QUAIS TEXT, PIC INTEGER, OUTRAS_CONDICOES TEXT, TEMPO_SITUACAO_RUA INTEGER, ACOMP_INTITUICAO INTEGER, ACOMP_INTITUICAO_QUAL TEXT, BENEFICIO INTEGER, REF_FAMILIAR INTEGER, VISITA_FAMILIAR INTEGER, PARENTESCO_VISITA TEXT, ALIMENTACAO_DIARIA INTEGER, REST_POPULAR INTEGER, DOACAO_REST INTEGER, DOACAO_RELIGIOSO INTEGER, DOACAO_POPULAR INTEGER, OUTROS_ALIM INTEGER, ACESSO_HIGIENE INTEGER, BANHO INTEGER, SANITARIO INTEGER, HIGIENE_BUCAL INTEGER, OUTROS_HIGIENE INTEGER, FICHA_ALTERACAO INTEGER, ID_RESP_CADASTRO INTEGER, CNES_RESP_CADASTRO TEXT, CBO_RESP_CADASTRO TEXT, INE_RESP_CADASTRO TEXT, DT_CADASTRO TEXT, ID_EQUIPE INTEGER, ORIGEM TEXT, SINCRONIZADO TEXT, DT_ENTRADA_BRASIL TEXT, DT_NATURALIZACAO TEXT, PORTARIA_NATURALIZACAO TEXT, CRIANCAS_ADULTO INTEGER, CRIANCAS_OUTRAS_CRIANCAS INTEGER, CRIANCAS_ADOLESCENTE INTEGER, CRIANCAS_SOZINHA INTEGER, CRIANCAS_CRECHE INTEGER, CRIANCAS_OUTRO INTEGER, IDENTIDADE_GENERO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS CADASTROS_INDIVIDUAIS (ID_CAD_INDIVIDUAL INTEGER PRIMARY KEY AUTOINCREMENT, STATUS_CADASTRO INTEGER, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, ID_AREA_CIDADAO INTEGER, ID_MICROAREA_CIDADAO INTEGER, FORA_AREA INTEGER, RESPONSAVEL_FAMILIAR INTEGER, ID_RESPONSAVEL_FAMILIAR TEXT, NOME_RESPONSAVEL_FAMILIAR TEXT, PARENTESCO INTEGER, ESCOLARIDADE INTEGER, FREQ_ESCOLA_CRECHE INTEGER, SITUACAO_MERCADO INTEGER, CUIDADOR_TRADICIONAL INTEGER, GRUPO_COMUNITARIO INTEGER, PLANO_PRIVADO INTEGER, COMUNIDADE_TRADICIONAL INTEGER, COM_TRADI_QUAL TEXT, ORIENT_SEXUAL INTEGER, TEM_DEFICIENCIA INTEGER, DEF_AUDITIVA INTEGER, DEF_INTELECTUAL INTEGER, DEF_VISUAL INTEGER, DEF_FISICA INTEGER, DEF_OUTRAS INTEGER, SAIDA_CADASTRO INTEGER, DATA_SAIDA_CADASTRO TEXT, CADASTRO_RECUSADO INTEGER, GESTANTE INTEGER, MATERNIDADE_REFERENCIA TEXT, PESO INTEGER, FUMANTE INTEGER, USA_ALCOOL INTEGER, USA_DROGAS INTEGER, HIPERTENSAO INTEGER, DIABETES INTEGER, AVC_DERRAME INTEGER, INFARTO INTEGER, HANSENIASE INTEGER, TUBERCULOSE INTEGER, CANCER INTEGER, INTERNACAO INTEGER, MOTIVO TEXT, DOENCA_CARDIACA INTEGER, PROBLEMA_RINS INTEGER, DOENCA_PULMAO INTEGER, SAUDE_MENTAL INTEGER, ACAMADO INTEGER, DOMICILIADO INTEGER, PLANTAS_MED INTEGER, PLANTAS_MED_QUAIS TEXT, PIC INTEGER, OUTRAS_CONDICOES TEXT, TEMPO_SITUACAO_RUA INTEGER, ACOMP_INTITUICAO INTEGER, ACOMP_INTITUICAO_QUAL TEXT, BENEFICIO INTEGER, REF_FAMILIAR INTEGER, VISITA_FAMILIAR INTEGER, PARENTESCO_VISITA TEXT, ALIMENTACAO_DIARIA INTEGER, REST_POPULAR INTEGER, DOACAO_REST INTEGER, DOACAO_RELIGIOSO INTEGER, DOACAO_POPULAR INTEGER, OUTROS_ALIM INTEGER, ACESSO_HIGIENE INTEGER, BANHO INTEGER, SANITARIO INTEGER, HIGIENE_BUCAL INTEGER, OUTROS_HIGIENE INTEGER, FICHA_ALTERACAO INTEGER, ID_RESP_CADASTRO INTEGER, CNES_RESP_CADASTRO TEXT, CBO_RESP_CADASTRO TEXT, INE_RESP_CADASTRO TEXT, DT_CADASTRO TEXT, ID_EQUIPE INTEGER, ORIGEM TEXT, SINCRONIZADO TEXT, DT_ENTRADA_BRASIL TEXT, DT_NATURALIZACAO TEXT, PORTARIA_NATURALIZACAO TEXT, CRIANCAS_ADULTO INTEGER, CRIANCAS_OUTRAS_CRIANCAS INTEGER, CRIANCAS_ADOLESCENTE INTEGER, CRIANCAS_SOZINHA INTEGER, CRIANCAS_CRECHE INTEGER, CRIANCAS_OUTRO INTEGER, IDENTIDADE_GENERO INTEGER, FIBROMIALGIA INTEGER, TRANSTORNO_ESPECTRO_AUTISTA INTEGER);'); db.execute('CREATE TABLE IF NOT EXISTS CBOS (CODIGO_CBO TEXT, DESCRICAO_CBO TEXT);'); db.execute('CREATE TABLE IF NOT EXISTS CIAPS (CODIGO_CIAP TEXT, DESC_CIAP TEXT, TIPO_CIAP TEXT);'); - db.execute('CREATE TABLE IF NOT EXISTS CIDADAOS (ID_CIDADAO INTEGER PRIMARY KEY AUTOINCREMENT, CD_USUARIO_SUS TEXT, NOME_CIDADAO TEXT, NOME_SOCIAL TEXT, SEXO TEXT, DT_NASCIMENTO TEXT, ID_ESTADO_CIVIL INTEGER, NOME_CONJUGE TEXT, NACIONALIDADE INTEGER, ID_MUNICIPIO_NASC INTEGER, NO_MUNICIPIO_NASC TEXT, ESTADO_UF_NASC TEXT, ID_ETNIA INTEGER, ID_ESCOLARIDADE INTEGER, ID_DEFICIENCIA INTEGER, NOME_MAE TEXT, DESCONHECE_MAE INTEGER, NOME_PAI TEXT, DESCONHECE_PAI INTEGER, ID_UNIDADE INTEGER, NUM_PRONTUARIO TEXT, NUM_PRONTUARIO_PROV TEXT, CLASSIFICACAO INTEGER, CLASSIFICACAO_SUB INTEGER, NUM_FAMILIA INTEGER, ID_PAIS_RESID INTEGER, ID_MUNICIPIO_RESID INTEGER, NO_MUNICIPIO_RESID TEXT, ESTADO_UF_RESID TEXT, CODIGO_IBGE_RESID INTEGER, NO_BAIRRO_LOGR TEXT, ID_LOGR_TIPO INTEGER, NOME_LOGR TEXT, CEP_LOGR INTEGER, NUMERO_LOGR INTEGER, LOTEAMENTO_LOGR INTEGER, COMPL_LOGR TEXT, PONTO_REFERENCIA TEXT, ZONA_LOGR INTEGER, DDD_TELEFONE INTEGER, NUM_TELEFONE INTEGER, DDD_CELULAR INTEGER, NUM_CELULAR INTEGER, DDD_RECADO INTEGER, NUM_RECADO INTEGER, EMAIL TEXT, OBSERVACOES TEXT, CPF INTEGER, CNS TEXT, TITULO_ELEITOR INTEGER, RG_NUMERO INTEGER, RG_COMPLEMENTO TEXT, RG_UF TEXT, RG_ORGAO TEXT, RG_DATA_EMISSAO TEXT, TIPO_CERTIDAO INTEGER, NUM_CERTIDAO TEXT, CARTORIO_CERTIDAO TEXT, LIVRO_CERTIDAO TEXT, FOLHA_CERTIDAO TEXT, TERMO_CERTIDAO TEXT, DT_EMISSAO_CERTIDAO TEXT, NUM_CTPS TEXT, NUM_SERIE_CTPS TEXT, ESTADO_UF_CTPS TEXT, NUM_PIS_PASEP TEXT, FL_RETIROU_CARTAO INTEGER, NUM_NIS TEXT, NUM_PROT_CROSS TEXT, RENDA_MENSAL REAL, PROFISSAO TEXT, DT_OBITO TEXT, DECLARACAO_OBITO TEXT, BLOQUEIO INTEGER, ORIGEM INTEGER, DT_HORA_CADASTRO TEXT, ID_USUARIO_CADASTRO INTEGER, ID_DOMICILIO INTEGER, ATENDIMENTOS INTEGER, SINCRONIZADO TEXT);'); + db.execute('CREATE TABLE IF NOT EXISTS CIDADAOS (ID_CIDADAO INTEGER PRIMARY KEY AUTOINCREMENT, CD_USUARIO_SUS TEXT, NOME_CIDADAO TEXT, NOME_SOCIAL TEXT, SEXO TEXT, DT_NASCIMENTO TEXT, ID_ESTADO_CIVIL INTEGER, NOME_CONJUGE TEXT, NACIONALIDADE INTEGER, ID_MUNICIPIO_NASC INTEGER, NO_MUNICIPIO_NASC TEXT, ESTADO_UF_NASC TEXT, ID_ETNIA INTEGER, ID_ESCOLARIDADE INTEGER, ID_DEFICIENCIA INTEGER, NOME_MAE TEXT, DESCONHECE_MAE INTEGER, NOME_PAI TEXT, DESCONHECE_PAI INTEGER, ID_UNIDADE INTEGER, NUM_PRONTUARIO TEXT, NUM_PRONTUARIO_PROV TEXT, CLASSIFICACAO INTEGER, CLASSIFICACAO_SUB INTEGER, NUM_FAMILIA INTEGER, ID_PAIS_RESID INTEGER, ID_MUNICIPIO_RESID INTEGER, NO_MUNICIPIO_RESID TEXT, ESTADO_UF_RESID TEXT, CODIGO_IBGE_RESID INTEGER, NO_BAIRRO_LOGR TEXT, ID_LOGR_TIPO INTEGER, NOME_LOGR TEXT, CEP_LOGR INTEGER, NUMERO_LOGR INTEGER, LOTEAMENTO_LOGR INTEGER, COMPL_LOGR TEXT, PONTO_REFERENCIA TEXT, ZONA_LOGR INTEGER, DDD_TELEFONE INTEGER, NUM_TELEFONE INTEGER, DDD_CELULAR INTEGER, NUM_CELULAR INTEGER, DDD_RECADO INTEGER, NUM_RECADO INTEGER, EMAIL TEXT, OBSERVACOES TEXT, CPF INTEGER, CNS TEXT, TITULO_ELEITOR INTEGER, RG_NUMERO INTEGER, RG_COMPLEMENTO TEXT, RG_UF TEXT, RG_ORGAO TEXT, RG_DATA_EMISSAO TEXT, TIPO_CERTIDAO INTEGER, NUM_CERTIDAO TEXT, CARTORIO_CERTIDAO TEXT, LIVRO_CERTIDAO TEXT, FOLHA_CERTIDAO TEXT, TERMO_CERTIDAO TEXT, DT_EMISSAO_CERTIDAO TEXT, NUM_CTPS TEXT, NUM_SERIE_CTPS TEXT, ESTADO_UF_CTPS TEXT, NUM_PIS_PASEP TEXT, FL_RETIROU_CARTAO INTEGER, NUM_NIS TEXT, NUM_PROT_CROSS TEXT, RENDA_MENSAL REAL, PROFISSAO TEXT, DT_OBITO TEXT, DECLARACAO_OBITO TEXT, BLOQUEIO INTEGER, ORIGEM INTEGER, DT_HORA_CADASTRO TEXT, ID_USUARIO_CADASTRO INTEGER, ID_DOMICILIO INTEGER, ATENDIMENTOS INTEGER, SINCRONIZADO TEXT, RENDA_TOTAL_FAMILIAR REAL , POSSUI_VEICULO TEXT , MODELO_VEICULO TEXT , ANO_VEICULO INTEGER , POSSUI_FINANCIAMENTO TEXT , VALOR_PARCELA_FINANCIAMENTO REAL , POSSUI_EMPRESTIMO TEXT , VALOR_PARCELA_EMPRESTIMO REAL);'); db.execute('CREATE TABLE IF NOT EXISTS CIDADAO_DOMICILIO (ID_DOMICILIO INTEGER PRIMARY KEY AUTOINCREMENT, TIPO_IMOVEL INTEGER, ID_AREA_DOMICILIO INTEGER, ID_MICROAREA_DOMICILIO INTEGER, FORA_AREA INTEGER, SITUACAO_MORADIA INTEGER, TIPO_LOCALIDADE INTEGER, TIPO_DOMICILIO INTEGER, NUM_MORADORES INTEGER, NUM_COMODOS INTEGER, SITUACAO_RURAL INTEGER, TIPO_ACESSO INTEGER, MAT_PREDOMINANTE INTEGER, DISPONIBILIDADE_ENERGIA INTEGER, TIPO_ABASTECIMENTO INTEGER, TRATAMENTO_AGUA INTEGER, DESTINO_LIXO INTEGER, ESCOAMENTO INTEGER, FL_ANIMAIS INTEGER, ANIMAIS_GATO INTEGER, ANIMAIS_CACHORRO INTEGER, ANIMAIS_PASSARO INTEGER, ANIMAIS_OUTROS INTEGER, QTDE_ANIMAIS INTEGER, CBO_RESP_CADASTRO TEXT, ID_RESP_CADASTRO INTEGER, CNES_RESP_CADASTRO TEXT, INE_RESP_CADASTRO TEXT, DT_CADASTRO TEXT, ID_EQUIPE INTEGER, ORIGEM TEXT, SINCRONIZADO TEXT, NOME_INSTITUICAO_PERMANENCIA TEXT, PROFISSIONAIS_VINCULADOS_INST INTEGER, RESPONSAVEL_TECNICO_INST TEXT, CNS_RESP_TECNICO_INST TEXT, CARGO_RESP_TECNICO_INST TEXT, TEL_RESP_TECNICO_INST TEXT);'); db.execute('CREATE TABLE IF NOT EXISTS CIDS (CODIGO_CID TEXT, DESCRICAO_CID TEXT, RESTRICAO_SEXO INTEGER);'); db.execute( 'CREATE TABLE IF NOT EXISTS CONTROLE_INTERNO (CARGA_INICIAL INTEGER, SYNC_UNIDADE INTEGER, CIDADE_LOAD TEXT, NOME_CIDADE TEXT, ID_MUNICIPIO INTEGER, UF_ESTADO TEXT, UNIDADE_SYNC TEXT, CODIGO_IBGE INTEGER, NOME_UNIDADE TEXT, AMBIENTE TEXT, ULTIMA_SINCRONIZACAO TEXT, COMPETENCIA TEXT, AREA INTEGER, MICROAREA INTEGER);'); @@ -55,7 +55,7 @@ class DbSqliteLoad{ db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_SIGTAP_CBO (COD_PROC_SIGTAP TEXT, CODIGO_CBO TEXT);'); db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_SIGTAP_CID (COD_PROC_SIGTAP TEXT, CODIGO_CID TEXT);'); db.execute('CREATE TABLE IF NOT EXISTS PROCEDIMENTOS_SIGTAP_REGISTRO (COD_PROC_SIGTAP TEXT, CODIGO_REGISTRO INTEGER);'); - db.execute('CREATE TABLE IF NOT EXISTS PROFISSIONAIS (ID_PROFISSIONAL INTEGER PRIMARY KEY AUTOINCREMENT, NOME_PROFISSIONAL TEXT, CNS_PROFISSIONAL TEXT, USERNAME TEXT, SENHA TEXT, BLOQUEIO_ACESSO INTEGER);'); + db.execute('CREATE TABLE IF NOT EXISTS PROFISSIONAIS (ID_PROFISSIONAL INTEGER PRIMARY KEY AUTOINCREMENT, NOME_PROFISSIONAL TEXT, CNS_PROFISSIONAL TEXT, USERNAME TEXT, SENHA TEXT, BLOQUEIO_ACESSO INTEGER, ID_UNIDADE INTEGER);'); db.execute('CREATE TABLE IF NOT EXISTS PROFISSIONAIS_CBOS (ID_PROFISSIONAL INTEGER, CODIGO_CBO TEXT);'); db.execute('CREATE TABLE IF NOT EXISTS PROFISSIONAIS_EQUIPE (ID_EQUIPE INTEGER, ID_PROFISSIONAL INTEGER, ATIVO INTEGER);'); db.execute('CREATE TABLE IF NOT EXISTS UNIDADES (ID_UNIDADE INTEGER PRIMARY KEY AUTOINCREMENT, NOME_UNIDADE TEXT, CNES_UNIDADE TEXT);'); diff --git a/lib/service/db/db_sqlite_sync.dart b/lib/service/db/db_sqlite_sync.dart index 855ffd2..c185d78 100644 --- a/lib/service/db/db_sqlite_sync.dart +++ b/lib/service/db/db_sqlite_sync.dart @@ -130,6 +130,7 @@ class DbSqliteSync{ 'USERNAME' : value[i]['username'], 'SENHA' : value[i]['senha'], 'BLOQUEIO_ACESSO' : value[i]['bloqueioAcesso'], + 'ID_UNIDADE' : value[i]['idUnidade'], }; rows.add(row); } @@ -258,6 +259,14 @@ class DbSqliteSync{ 'ID_USUARIO_CADASTRO' : value[i]['idUsuarioCadastro'], 'ID_DOMICILIO' : value[i]['cdDomicilio'], 'ATENDIMENTOS' : value[i]['atendimentos'], + 'RENDA_TOTAL_FAMILIAR': value[i]['rendaTotalFamiliar'], + 'POSSUI_VEICULO': value[i]['possuiVeiculo'], + 'MODELO_VEICULO': value[i]['modeloVeiculo'] , + 'ANO_VEICULO': value[i]['anoVeiculo'], + 'POSSUI_FINANCIAMENTO': value[i]['possuiFinanciamento'] , + 'VALOR_PARCELA_FINANCIAMENTO': value[i]['valorParcelaFinanciamento'] , + 'POSSUI_EMPRESTIMO': value[i]['possuiEmprestimo'] , + 'VALOR_PARCELA_EMPRESTIMO': value[i]['valorParcelaEmprestimo'], 'SINCRONIZADO' : '', }; rows.add(row); @@ -284,12 +293,13 @@ class DbSqliteSync{ return db; } Future insertCadastrosDomiciliares(var value,String type,int ID_DOMICILIO,int ID_CIDADAO,String CD_USUARIO_SUS)async{ - List list = value; + List> rows = []; Database db = await DbSqliteLoad().intialDB(); Batch batch = db.batch(); if(type=='sync'){ + List list = value; for (int i = 0; i < list.length; i++) { Map row = { 'ID_DOMICILIO': value[i]['cdDomicilio'], @@ -372,12 +382,13 @@ class DbSqliteSync{ return db; } Future insertCadastrosIndividuais(var value,String type,int ID_CIDADAO)async{ - List list = value; + List> rows = []; Database db = await DbSqliteLoad().intialDB(); Batch batch = db.batch(); if(type=='sync'){ + List list = value; for (int i = 0; i < list.length; i++) { Map row = { 'ID_CAD_INDIVIDUAL': value[i]['idCadIndividual'], @@ -470,6 +481,8 @@ class DbSqliteSync{ 'CRIANCAS_CRECHE': value[i]['criancasCresce'], 'CRIANCAS_OUTRO': value[i]['criancasOutro'], 'IDENTIDADE_GENERO': value[i]['identidadeGenero'], + 'FIBROMIALGIA': value[i]['fibromialgia'], + 'TRANSTORNO_ESPECTRO_AUTISTA': value[i]['transtornoEspectroAutista'], }; rows.add(row); } @@ -483,10 +496,12 @@ class DbSqliteSync{ List> CADASTROS_INDIVIDUAIS = await db.query('CADASTROS_INDIVIDUAIS'); print('Total de CADASTROS_INDIVIDUAIS : ${CADASTROS_INDIVIDUAIS.length}'); }else if(type=='new'){ - int id = await db.insert('CADASTROS_INDIVIDUAIS', value); + Map dataMap = value; + int id = await db.insert('CADASTROS_INDIVIDUAIS', dataMap); // print('novo id $id'); }else if(type=='update'){ - await db.update('CADASTROS_INDIVIDUAIS', value,where: "ID_CIDADAO = $ID_CIDADAO"); + Map dataMap = value; + await db.update('CADASTROS_INDIVIDUAIS', dataMap ,where: "ID_CIDADAO = $ID_CIDADAO"); } return db; } diff --git a/lib/service/shared_preferences/shared_preferences_service.dart b/lib/service/shared_preferences/shared_preferences_service.dart index f8b4326..5974b91 100644 --- a/lib/service/shared_preferences/shared_preferences_service.dart +++ b/lib/service/shared_preferences/shared_preferences_service.dart @@ -1,5 +1,7 @@ import 'package:shared_preferences/shared_preferences.dart'; +import '../../models/equipe_modelo.dart'; + class PrefService{ Future createCacheidUsuario(String idUsuario)async{ @@ -20,10 +22,17 @@ class PrefService{ _preferences.setString('idUnidade', idUnidade); _preferences.setString('nomeUnidade', nomeUnidade); } - Future createCacheSync(String area,bool foraArea)async{ + Future createCacheSync(EquipeModelo equipe,bool foraArea)async{ SharedPreferences _preferences = await SharedPreferences.getInstance(); - _preferences.setString('area', area); + _preferences.setInt('idEquipe',equipe.ID_EQUIPE); + _preferences.setString('ine',equipe.INE); + _preferences.setInt('area',equipe.AREA); + _preferences.setInt('idAtbMicroarea',equipe.ID_ATB_MICROAREA); + _preferences.setInt('idAtbArea',equipe.ID_ATB_AREA); + _preferences.setInt('microarea',equipe.MICROAREA); + _preferences.setInt('idProfissional',equipe.ID_PROFISSIONAL); + _preferences.setInt('ativo',equipe.ATIVO); _preferences.setBool('foraArea', foraArea); } @@ -65,12 +74,26 @@ class PrefService{ ]; return list; } - Future readCacheSync(String area,bool foraArea) async{ + Future readCacheSync() async{ SharedPreferences _preferences = await SharedPreferences.getInstance(); - String? area = _preferences.getString('area'); + int? area = _preferences.getInt('area'); + int? idEquipe = _preferences.getInt('idEquipe'); + String? ine = _preferences.getString('ine'); + int? idAtbMicroarea = _preferences.getInt('idAtbMicroarea'); + int? idAtbArea = _preferences.getInt('idAtbArea'); + int? microarea = _preferences.getInt('microarea'); + int? idProfissional = _preferences.getInt('idProfissional'); + int? ativo = _preferences.getInt('ativo'); bool? foraArea = _preferences.getBool('foraArea'); List list =[ + idEquipe, + ine, + idAtbArea, area, + idAtbMicroarea, + microarea, + idProfissional, + ativo, foraArea ]; return list; diff --git a/lib/widgets/dropdown_equipe.dart b/lib/widgets/dropdown_equipe.dart new file mode 100644 index 0000000..29848fb --- /dev/null +++ b/lib/widgets/dropdown_equipe.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; +import 'package:rkm/widgets/text_default.dart'; +import '../config/color_palette.dart'; +import '../config/const_variable.dart'; +import '../models/equipe_modelo.dart'; + +class DropDownEquipe extends StatelessWidget { + var onChanged; + EquipeModelo? select; + String title; + double fontSize; + List list; + double width; + double widthContainer; + + DropDownEquipe({ + required this.onChanged, + required this.select, + required this.title, + required this.list, + required this.width, + this.fontSize = 15, + this.widthContainer = 300 +}); + + @override + Widget build(BuildContext context) { + + return Column( + children: [ + Container( + width: width*0.95, + margin: ConstVariable().marginHightInput, + color: ColorPalette.white, + child: DropdownButtonHideUnderline( + child: DropdownButton( + hint: Padding( + padding: const EdgeInsets.symmetric(horizontal: 0.0), + child: TextDefault(text: title,fontSize: ConstVariable().fontSizeInput,textAlign: TextAlign.end,color: Colors.black,), + ), + value: select, + items: list.map((value) => DropdownMenuItem( + value: value, + child: Container( + width: widthContainer, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 0.0), + child: TextDefault( + text: 'INE: ${value.INE} / Área: ${value.AREA} - Microárea : ${value.MICROAREA==null?'':value.MICROAREA}', + maxLines: 2, + fontSize: fontSize, + color: Colors.black, + ), + ), + ), + ) + ).toList(), + onChanged:onChanged + ), + ), + ), + ], + ); + } +}