diff --git a/lib/config/const_variable.dart b/lib/config/const_variable.dart index 86012f1..abd9018 100644 --- a/lib/config/const_variable.dart +++ b/lib/config/const_variable.dart @@ -1,5 +1,9 @@ import 'package:flutter/material.dart'; import 'package:rkm/models/city_load_model.dart'; +import 'package:rkm/models/type_breed_model.dart'; +import 'package:rkm/models/type_certificate_model.dart'; +import '../models/type_marital_model.dart'; +import '../models/type_scooling_model.dart'; import 'color_palette.dart'; class ConstVariable{ @@ -149,44 +153,33 @@ class ConstVariable{ 'DEMANDA ESPONTÂNEA - CONSULTA NO DIA', 'DEMANDA ESPONTÂNEA - ATENDIMENTO DE EMERGÊNCIA', ]; - List listBreed = [ - 'AMARELA', - 'BRANCA', - 'INDIGENA', - 'NEGRA', - 'PARDA', + List listBreed = [ + TypeBreedModel(cod: 4, title: 'AMARELA'), + TypeBreedModel(cod: 1, title: 'BRANCA'), + TypeBreedModel(cod: 5, title: 'INDIGENA'), + TypeBreedModel(cod: 2, title: 'NEGRA'), + TypeBreedModel(cod: 3, title: 'PARDA'), ]; - List listScooling = [ - 'ENSINO FUNDAMENTAL', - 'ENSINO MEDIO', - 'ENSINO MEDIO INCOMPLETO', - 'NAO DEFINIDO', - 'SUPERIOR', - 'SUPERIOR INCOMPLETO', - ]; - List listDeficiency = [ - 'AFONICA', - 'AUDITIVA', - 'FISICA', - 'IGNORADO', - 'INTELECTUAL', - 'MOTORA', - 'MULTIPLA', - 'NENHUMA', - 'VISUAL', + List listScooling = [ + TypeScoolingModel(cod: 4, title: 'ENSINO FUNDAMENTAL'), + TypeScoolingModel(cod: 3, title: 'ENSINO MEDIO'), + TypeScoolingModel(cod: 5, title: 'ENSINO MEDIO INCOMPLETO'), + TypeScoolingModel(cod: 0, title: 'NAO DEFINIDO'), + TypeScoolingModel(cod: 1, title: 'SUPERIOR'), + TypeScoolingModel(cod: 2, title: 'SUPERIOR INCOMPLETO'), ]; List listTeam = [ 'INE: 0001558536 / Área: 4 - Microárea: --' ]; - List listMaritalStatus = [ - 'CASADO(A)', - 'DESQUITADO(A)', - 'DIVORCIADO(A)', - 'NAO DEFINIDO', - 'SEPARADO(A)', - 'SOLTEIRO(A)', - 'UNIAO ESTAVEL', - 'VIUVO(A)', + List listMaritalStatus = [ + TypeMaritalModel(cod: 2,title: 'CASADO(A)'), + TypeMaritalModel(cod: 6,title: 'DESQUITADO(A)'), + TypeMaritalModel(cod: 4,title: 'DIVORCIADO(A)'), + TypeMaritalModel(cod: 99,title: 'NAO DEFINIDO'), + TypeMaritalModel(cod: 7,title: 'SEPARADO(A)'), + TypeMaritalModel(cod: 1,title: 'SOLTEIRO(A)'), + TypeMaritalModel(cod: 5,title: 'UNIAO ESTAVEL'), + TypeMaritalModel(cod: 3,title: 'VIUVO(A)'), ]; List listGender = [ 'FEMININO','MASCULINO' @@ -222,6 +215,30 @@ class ConstVariable{ '225124 - Médico pediatra', '225125 - Médico clínico', ]; + + List itensDeficiency = [ + TypeCertificateModel(cod: 4, title: 'AFONICA'), + TypeCertificateModel(cod: 5, title: 'AUDITIVA'), + TypeCertificateModel(cod:10, title: 'FISICA'), + TypeCertificateModel(cod: 2, title: 'IGNORADO'), + TypeCertificateModel(cod: 6, title: 'INTELECTUAL'), + TypeCertificateModel(cod: 7, title: 'MOTORA'), + TypeCertificateModel(cod: 8, title: 'MULTIPLA'), + TypeCertificateModel(cod: 3, title: 'NENHUMA'), + TypeCertificateModel(cod: 9, title: 'VISUAL'), + ]; + + List itensCertificate = [ + TypeCertificateModel(cod: 91, title: 'NASCIMENTO'), + TypeCertificateModel(cod: 92, title: 'CASAMENTO'), + TypeCertificateModel(cod: 93, title: 'DIVÓRCIO'), + TypeCertificateModel(cod: 95, title: 'ADMINISTRATIVA - ÍNDIO'), + TypeCertificateModel(cod: 91, title: 'NASCIMENTO - N'), + TypeCertificateModel(cod: 92, title: 'CASAMENTO - N'), + TypeCertificateModel(cod: 93, title: 'DIVÓRCIO - N'), + TypeCertificateModel(cod: 95, title: 'ADMINISTRATIVA - ÍNDIO - N'), + ]; + List itensCity = [ CityLoadModel(codCity: 3311, nameCityApi: 'anhembi', nameCityFront: 'Anhembi', codState: 'SP', codCityIbge: 350230), CityLoadModel(codCity: 3313, nameCityApi: 'aparecida', nameCityFront: 'Aparecida', codState: 'SP', codCityIbge: 350250), diff --git a/lib/models/type_breed_model.dart b/lib/models/type_breed_model.dart new file mode 100644 index 0000000..716412f --- /dev/null +++ b/lib/models/type_breed_model.dart @@ -0,0 +1,10 @@ +class TypeBreedModel{ + int cod; + String title; + + TypeBreedModel({ + required this.cod, + required this.title + }); +} + diff --git a/lib/models/type_certificate_model.dart b/lib/models/type_certificate_model.dart new file mode 100644 index 0000000..683989c --- /dev/null +++ b/lib/models/type_certificate_model.dart @@ -0,0 +1,10 @@ +class TypeCertificateModel{ + int cod; + String title; + + TypeCertificateModel({ + required this.cod, + required this.title + }); +} + diff --git a/lib/models/type_dificiency_model.dart b/lib/models/type_dificiency_model.dart new file mode 100644 index 0000000..0f1c7d2 --- /dev/null +++ b/lib/models/type_dificiency_model.dart @@ -0,0 +1,10 @@ +class TypeDeficiencyModel{ + int cod; + String title; + + TypeDeficiencyModel({ + required this.cod, + required this.title + }); +} + diff --git a/lib/models/type_marital_model.dart b/lib/models/type_marital_model.dart new file mode 100644 index 0000000..9e61ce2 --- /dev/null +++ b/lib/models/type_marital_model.dart @@ -0,0 +1,10 @@ +class TypeMaritalModel{ + int cod; + String title; + + TypeMaritalModel({ + required this.cod, + required this.title + }); +} + diff --git a/lib/models/type_scooling_model.dart b/lib/models/type_scooling_model.dart new file mode 100644 index 0000000..41dbda8 --- /dev/null +++ b/lib/models/type_scooling_model.dart @@ -0,0 +1,10 @@ +class TypeScoolingModel{ + int cod; + String title; + + TypeScoolingModel({ + required this.cod, + required this.title + }); +} + diff --git a/lib/screens/configurations/main_procedures_screen.dart b/lib/screens/configurations/main_procedures_screen.dart index 4821f71..406bc87 100644 --- a/lib/screens/configurations/main_procedures_screen.dart +++ b/lib/screens/configurations/main_procedures_screen.dart @@ -1,10 +1,14 @@ import 'package:flutter/material.dart'; +import 'package:line_icons/line_icons.dart'; import 'package:rkm/config/color_palette.dart'; import 'package:rkm/config/const_variable.dart'; -import 'package:rkm/widgets/alert_dialog_default.dart'; +import 'package:rkm/service/db/db_querys.dart'; +import 'package:rkm/service/db/db_sqlite_load.dart'; import 'package:rkm/widgets/appbar_default.dart'; import 'package:rkm/widgets/button_default.dart'; +import '../../widgets/alert_dialog_default.dart'; import '../../widgets/dropdown_button_default.dart'; +import '../../widgets/input_search_text.dart'; import '../../widgets/subtitle_containers.dart'; import '../../widgets/text_default.dart'; import '../../widgets/title_containers.dart'; @@ -21,14 +25,158 @@ class _MainProceduresScreenState extends State { String? selectService; String? selectProcedure; String? selectCBO; + String COD_PROC_SIGTAP = ''; + String CODIGO_CBO = ''; bool disableButton = true; var controllerProceduresSearch = TextEditingController(); var controllerCBOSearch = TextEditingController(); + List listProcedures = []; + List listProcInit = []; + List listCBOS = []; + List showResultSearchProcedures = []; + List showResultSearchCBO = []; + + @override + void initState() { + super.initState(); + loadProcedures(); + loadCBOS(); + loadProceduresInit(); + controllerProceduresSearch.addListener(_searchProceduresInit); + controllerCBOSearch.addListener(_searchCBOSInit); + } + + _searchProceduresInit(){ + searchProcedures(); + } + + _searchCBOSInit(){ + searchCBOS(); + } + + searchProcedures()async{ + showResultSearchProcedures =[]; + if(controllerProceduresSearch.text.isNotEmpty){ + for (int i =0;listProcedures.length>i;i++) { + String procedure = '${listProcedures[i]}'; + + if(procedure.contains(controllerProceduresSearch.text.toUpperCase())){ + if(showResultSearchProcedures.length<10){ + showResultSearchProcedures.add(listProcedures[i]); + } + } + } + setState(() {}); + }else{ + if(listProcedures.length>9){ + for(int i = 0;i<10;i++){ + showResultSearchProcedures.add(listProcedures[i]); + } + }else{ + for(int i = 0;ii;i++) { + String cbo = '${listCBOS[i]}'; + + if(cbo.contains(controllerCBOSearch.text)){ + if(showResultSearchCBO.length<10){ + showResultSearchCBO.add(listCBOS[i]); + } + } + } + setState(() {}); + }else{ + if(listCBOS.length>9){ + for(int i = 0;i<10;i++){ + showResultSearchCBO.add(listCBOS[i]); + } + }else{ + for(int i = 0;i i;i++){ + listProcedures.add('${list[i]['COD_PROC_SIGTAP']} - ${list[i]['DESC_PROC_SIGTAP']}'); + } + setState(() {}); + } + } + + loadCBOS()async{ + // [{CODIGO_CBO: 223208, DESCRICAO_CBO: Cirurgião dentista - clínico geral}] + List list = await DBQuerys().buscaCBOS(); + if(list.length != 0){ + for(int i = 0; list.length > i;i++){ + listCBOS.add('${list[i]['CODIGO_CBO']} - ${list[i]['DESCRICAO_CBO']}'); + } + // print(listCBOS); + setState(() {}); + } + } + + loadProceduresInit()async{ + listProcInit = []; + // [{CODIGO_CBO: 223208, DESCRICAO_CBO: Cirurgião dentista - clínico geral}] + listProcInit = await DBQuerys().buscaProcIniciais(); + // print(listProcInit); + setState(() {}); + } + + saveProcedures()async{ + List splittedCODProc = selectProcedure!.split(' '); + List splittedCODCBO = selectCBO!.split(' '); + List check = await DBQuerys().buscaProceduresCBO(splittedCODProc[0], splittedCODCBO[0]); + if(check.length!=0){ + Map row = { + 'ATENDIMENTO' : selectService=='ATENDIMENTO INDIVIDUAL'?1:2, + 'COD_PROC_SIGTAP' : splittedCODProc[0], + 'CODIGO_CBO' : splittedCODCBO[0], + }; + await DbSqliteLoad().saveProceduresInit(row).then((value){ + loadProceduresInit(); + }); + }else{ + AlertDialogDefault().alert(context, 'Aviso', 'Procedimento não permitido para o CBO informado!', 'OK'); + } + } + deleteProcedures(int ATENDIMENTO,String CODIGO_CBO,String COD_PROC_SIGTAP)async{ + // [{ATENDIMENTO: 1, COD_PROC_SIGTAP: 0101010010, CODIGO_CBO: 223208}, {ATENDIMENTO: 2, COD_PROC_SIGTAP: 0101010010, CODIGO_CBO: 223208}] + await DbSqliteLoad().deleteProceduresInit(ATENDIMENTO,CODIGO_CBO,COD_PROC_SIGTAP).then((value){ + loadProceduresInit(); + }); + } + + updateContext(){ + Navigator.pop(context); + if(selectProcedure!= null && selectCBO!= null && selectService!=null){ + disableButton = false; + } + setState(() {}); + } @override Widget build(BuildContext context) { double width = MediaQuery.of(context).size.width; + double height = MediaQuery.of(context).size.height; return Scaffold( appBar: AppBarDefault().appbar(context, 'RKM AB - Procedimentos Iniciais'), @@ -53,7 +201,7 @@ class _MainProceduresScreenState extends State { widthContainer: width*0.35, title: '', width: width*0.4, - list: ConstVariable().itensProceduresStart, + list: ['ATENDIMENTO INDIVIDUAL','VISITA DOMICILIAR'], select: selectService, onChanged: (value){ setState(() { @@ -69,37 +217,69 @@ class _MainProceduresScreenState extends State { ), Divider(color: ColorPalette.black54,endIndent: 10,indent: 10,height: 1), GestureDetector( - onTap: ()=>AlertDialogDefault().alert_with_search( - context, - controllerProceduresSearch, - ListView.separated( - separatorBuilder:(context,index)=> Divider(color: ColorPalette.black54,height: 5,), - itemCount: ConstVariable().itensProcedures.length, - itemBuilder: (context,index){ - return Container( - width: width*0.8, - color: ColorPalette.white, - child: ListTile( - onTap: (){ - setState(() { - selectProcedure = ConstVariable().itensProcedures[index]; - Navigator.pop(context); - if(selectProcedure!= null && selectCBO!= null && selectService!=null){ - disableButton = false; - } - }); - }, - title: TextDefault( - color: ColorPalette.black54, - text: ConstVariable().itensProcedures[index], - fontSize: 16, - maxLines: 2, - ), - ), + onTap: (){ + controllerProceduresSearch.text = ''; + searchProcedures(); + showDialog( + context: context, + builder: (context){ + return AlertDialog( + scrollable: true, + content: StatefulBuilder( + builder: (context, setState) { + //aqui + return Column( + children: [ + InputSearchText( + onChanged: (v){ + setState((){ + searchProcedures(); + }); + }, + controller: controllerProceduresSearch, + width: width*0.8, + hint: 'Buscar...', + color: ColorPalette.titleContainer, + border: false, + ), + Container( + padding: EdgeInsets.symmetric(vertical: 10), + width: width*0.8, + child: Container( + width: width*0.8, + height: height*0.6, + padding: EdgeInsets.symmetric(horizontal: 10), + child: ListView.separated( + separatorBuilder:(context,index)=> Divider(color: ColorPalette.black54,height: 5,), + itemCount: showResultSearchProcedures.length, + itemBuilder: (context,index){ + return Container( + width: width*0.8, + color: ColorPalette.white, + child: ListTile( + onTap: (){ + selectProcedure = showResultSearchProcedures[index]; + updateContext(); + }, + title: TextDefault( + color: ColorPalette.black54, + text: showResultSearchProcedures[index], + fontSize: 16, + maxLines: 2, + ), + ), + ); + } + ), + ), + ), + ], + ); + }), ); - } - ), - ), + }, + ); + }, child: selectProcedure!=null? Container( width: width, @@ -123,37 +303,69 @@ class _MainProceduresScreenState extends State { SubtitleContainers(title: 'Procedimento') ), GestureDetector( - onTap: ()=>AlertDialogDefault().alert_with_search( - context, - controllerCBOSearch, - ListView.separated( - separatorBuilder:(context,index)=> Divider(color: ColorPalette.black54,height: 5,), - itemCount: ConstVariable().itensCBO.length, - itemBuilder: (context,index){ - return Container( - width: width*0.8, - color: ColorPalette.white, - child: ListTile( - onTap: (){ - setState(() { - selectCBO = ConstVariable().itensCBO[index]; - Navigator.pop(context); - if(selectProcedure!= null && selectCBO!= null && selectService!=null){ - disableButton = false; - } - }); - }, - title: TextDefault( - color: ColorPalette.black54, - text: ConstVariable().itensCBO[index], - fontSize: 16, - maxLines: 2, - ), - ), - ); - } - ), - ), + onTap: (){ + controllerCBOSearch.text = ''; + searchCBOS(); + showDialog( + context: context, + builder: (context){ + return AlertDialog( + scrollable: true, + content: StatefulBuilder( + builder: (context, setState) { + //aqui + return Column( + children: [ + InputSearchText( + onChanged: (v){ + setState((){ + searchCBOS(); + }); + }, + controller: controllerCBOSearch, + width: width*0.8, + hint: 'Buscar...', + color: ColorPalette.titleContainer, + border: false, + ), + Container( + padding: EdgeInsets.symmetric(vertical: 10), + width: width*0.8, + child: Container( + width: width*0.8, + height: height*0.6, + padding: EdgeInsets.symmetric(horizontal: 10), + child: ListView.separated( + separatorBuilder:(context,index)=> Divider(color: ColorPalette.black54,height: 5,), + itemCount: showResultSearchCBO.length, + itemBuilder: (context,index){ + return Container( + width: width*0.8, + color: ColorPalette.white, + child: ListTile( + onTap: (){ + selectCBO = showResultSearchCBO[index]; + updateContext(); + }, + title: TextDefault( + color: ColorPalette.black54, + text: showResultSearchCBO[index], + fontSize: 16, + maxLines: 2, + ), + ), + ); + } + ), + ), + ), + ], + ); + }), + ); + }, + ); + }, child: selectCBO!=null? Container( width: width, @@ -184,7 +396,11 @@ class _MainProceduresScreenState extends State { background: ColorPalette.appBar, disableColor: ColorPalette.buttonDisable, textColor: ColorPalette.white, - onPressed: disableButton?null:()=>Navigator.pushReplacementNamed(context, '/home'), + onPressed: disableButton?null:(){ + if(selectProcedure!= null && selectCBO!= null && selectService!=null){ + saveProcedures(); + } + }, width: double.infinity, ), ) @@ -194,8 +410,39 @@ class _MainProceduresScreenState extends State { Padding( padding: const EdgeInsets.symmetric(vertical: 10.0,horizontal: 2), child: Card( - child: TitleContainers( - title: 'Procedimentos', + child: Column( + children: [ + TitleContainers( + title: 'Procedimentos', + ), + Container( + height: height*listProcInit.length*0.08, + child: ListView.builder( + itemCount: listProcInit.length, + itemBuilder: (context,index){ + return Padding( + padding: const EdgeInsets.all(10.0), + child: Row( + children: [ + TextDefault( + text: '${listProcInit[index]['ATENDIMENTO']==1?'ATENDIMENTO INDIVIDUAL':'VISITA DOMICILIAR'} - ${listProcInit[index]['COD_PROC_SIGTAP']} - ${listProcInit[index]['CODIGO_CBO']}', + fontSize: 15, + color: ColorPalette.black54, + ), + Spacer(), + IconButton( + icon: Icon(LineIcons.trash), + onPressed: (){ + deleteProcedures(listProcInit[index]['ATENDIMENTO'],listProcInit[index]['CODIGO_CBO'],listProcInit[index]['COD_PROC_SIGTAP']); + }, + ) + ], + ), + ); + }, + ), + ) + ], ) ), ), diff --git a/lib/screens/registers_citizen/register_citizen_screen.dart b/lib/screens/registers_citizen/register_citizen_screen.dart index 214f65d..8ddaf05 100644 --- a/lib/screens/registers_citizen/register_citizen_screen.dart +++ b/lib/screens/registers_citizen/register_citizen_screen.dart @@ -10,6 +10,7 @@ import '../../controllers/main_controllers.dart'; import '../../service/db/db_querys.dart'; import '../../service/db/db_sqlite_load.dart'; import '../../service/db/db_sqlite_sync.dart'; +import '../../service/shared_preferences/shared_preferences_service.dart'; import '../../widgets/appbar_default.dart'; import '../../widgets/dropdown_with_subtitle.dart'; import '../../widgets/error_default.dart'; @@ -80,21 +81,30 @@ class _RegisterCitizenScreenState extends State { String checkCNS = ''; String checkCPF = ''; String? selectTypeCertificate; + int? selectTypeCertificateCod; String? selectCTPSUF; String? selectRGUF; String? selectTypeStreet; String? selectStreet; String? selectSubdivision; String? selectZone; + int? selectZoneCod; String? selectVillage; String? selectCountry; String? selectClassification; + int? selectClassificationCOD; String? selectGender; String? selectMaritalStatus; + int? selectMaritalStatusCod; String? selectBreed; + int? selectBreedCod; String? selectScooling; + int? selectScoolingCod; String? selectDeficiency; + int? selectDeficiencyCod; String? selectNaturality; + int? selectNaturalityCod; + int? cityBirthCod; bool enableSpouse = false; bool enableMother = false; bool enableFather = false; @@ -112,11 +122,19 @@ class _RegisterCitizenScreenState extends State { List showResultSearchCity = []; List showResultSearchIbge = []; List listVillageDB =[]; + List resultListNasc =[]; + List resultListResid =[]; String idBairro=''; String idTipo=''; bool showCheckError = false; bool showTab = false; String errorTopo = 'Existem campos obrigatórios não preenchidos.'; + List typeCertificate = []; + List listDeficiency = []; + List listScooling = []; + List listBreed = []; + List listMaritalStatus = []; + String idUnidade = ''; escolherprazoInicio(BuildContext context,String type) async { @@ -154,7 +172,10 @@ class _RegisterCitizenScreenState extends State { Database db = await DbSqliteLoad().intialDB(); var queryControl = "SELECT * FROM CONTROLE_INTERNO"; List listControl = await db.rawQuery(queryControl); - + final PrefService _prefService = PrefService(); + _prefService.readCacheUnidade('idUnidade').then((listUnidade)async{ + idUnidade =listUnidade[0]; + }); setState(() { unitController.text = listControl[0]['NOME_UNIDADE']; }); @@ -317,38 +338,47 @@ class _RegisterCitizenScreenState extends State { } } + 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', 'NOME_CIDADAO' : nameController.text, 'NOME_SOCIAL' : nameSocialController.text, - 'SEXO' : selectGender, + 'SEXO' : selectGender=='MASCULINO'?'M':'F', 'DT_NASCIMENTO' : dateDB, - 'ID_ESTADO_CIVIL' : '', - 'ID_ESTADO_CIVIL' : '', + 'ID_ESTADO_CIVIL' : selectMaritalStatusCod, 'NOME_CONJUGE' : spouseController.text, - 'NACIONALIDADE' : selectNaturality, - 'ID_MUNICIPIO_NASC' : '', - 'NO_MUNICIPIO_NASC' : cityBirthController.text, - 'ESTADO_UF_NASC' : '', - 'ID_ETNIA' : '', - 'ID_ESCOLARIDADE' : '', - 'ID_DEFICIENCIA' : '', + 'NACIONALIDADE' : selectNaturalityCod, + 'ID_MUNICIPIO_NASC' : resultListNasc[0]['ID_MUNICIPIO'], + 'NO_MUNICIPIO_NASC' : resultListNasc[0]['NO_MUNICIPIO'], + 'ESTADO_UF_NASC' : resultListNasc[0]['UF_ESTADO'], + 'ID_ETNIA' : selectBreedCod, + 'ID_ESCOLARIDADE' : selectScoolingCod, + 'ID_DEFICIENCIA' : selectDeficiencyCod, 'NOME_MAE' : nameMotherController.text, 'DESCONHECE_MAE' : '${!enableMother}', 'NOME_PAI' : nameFatherController.text, 'DESCONHECE_PAI' : '${!enableFather}', - 'ID_UNIDADE' : '', + 'ID_UNIDADE' : idUnidade, 'NUM_PRONTUARIO' : medicalRecordController.text, 'NUM_PRONTUARIO_PROV' : medicalRecordProvController.text, - 'CLASSIFICACAO' : selectClassification, + 'CLASSIFICACAO' : selectClassificationCOD, + //aqui 'CLASSIFICACAO_SUB' : '', 'NUM_FAMILIA' : numberFamilyController.text, - 'ID_PAIS_RESID' : '', - 'ID_MUNICIPIO_RESID' : '', - 'NO_MUNICIPIO_RESID' : cityController.text, - 'ESTADO_UF_RESID' : '', + '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, @@ -358,7 +388,7 @@ class _RegisterCitizenScreenState extends State { 'LOTEAMENTO_LOGR' : selectSubdivision, 'COMPL_LOGR' : complementController.text, 'PONTO_REFERENCIA' : referencePointController.text, - 'ZONA_LOGR' : selectZone, + 'ZONA_LOGR' : selectZoneCod, 'DDD_TELEFONE' : foneDDDController.text, 'NUM_TELEFONE' : foneController.text, 'DDD_RECADO' : messageDDDController.text, @@ -373,7 +403,7 @@ class _RegisterCitizenScreenState extends State { 'RG_UF' : selectRGUF, 'RG_ORGAO' : RGOrganController.text, 'RG_DATA_EMISSAO' : RGDateController.text, - 'TIPO_CERTIDAO' : selectTypeCertificate, + 'TIPO_CERTIDAO' : selectTypeCertificateCod, 'NUM_CERTIDAO' : numberCertificateController.text, 'CARTORIO_CERTIDAO' : nameCertificateController.text, 'LIVRO_CERTIDAO' : bookCertificateController.text, @@ -386,18 +416,22 @@ class _RegisterCitizenScreenState extends State { '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' : '', + 'ORIGEM' : 'A', 'DT_HORA_CADASTRO' : DateTime.now().toString(), + //aqui 'ID_USUARIO_CADASTRO' : '', + //aqui 'ID_DOMICILIO' : '', + //aqui 'ATENDIMENTOS' : '', - 'SINCRONIZADO' : '', + 'SINCRONIZADO' : 'N', }; await DbSqliteSync().insertCidadaos(row,'update').then((value){ if(checkCNS != 'ok' || CNSController.text.isEmpty){ @@ -428,6 +462,24 @@ class _RegisterCitizenScreenState extends State { }); } + loadLists(){ + for(int i = 0; ConstVariable().itensCertificate.length > i; i++){ + typeCertificate.add(ConstVariable().itensCertificate[i].title); + } + for(int i = 0; ConstVariable().itensDeficiency.length > i; i++){ + listDeficiency.add(ConstVariable().itensDeficiency[i].title); + } + for(int i = 0; ConstVariable().listScooling.length > i; i++){ + listScooling.add(ConstVariable().listScooling[i].title); + } + for(int i = 0; ConstVariable().listBreed.length > i; i++){ + listBreed.add(ConstVariable().listBreed[i].title); + } + for(int i = 0; ConstVariable().listMaritalStatus.length > i; i++){ + listMaritalStatus.add(ConstVariable().listMaritalStatus[i].title); + } + } + @override void initState() { super.initState(); @@ -438,6 +490,7 @@ class _RegisterCitizenScreenState extends State { loadVillgeDB(); loadTypeStreetDB(); loadSubdivisionsDB(); + loadLists(); setState(() { cityBirthController.text = widget.select; }); @@ -591,7 +644,7 @@ class _RegisterCitizenScreenState extends State { ), date == 'Data de Nascimento'?ErrorDefault():Container(), DropdownWithSubtitle( - list: ConstVariable().listMaritalStatus, + list: listMaritalStatus, subtitle: 'Estado Civil', hintDropdown: 'Estado Civil', select: selectMaritalStatus, @@ -601,6 +654,12 @@ class _RegisterCitizenScreenState extends State { onChanged: (value){ setState(() { selectMaritalStatus = value!; + for(int i = 0;ConstVariable().listMaritalStatus.length >i;i++){ + if(ConstVariable().listMaritalStatus[i].title == selectMaritalStatus){ + selectMaritalStatusCod = ConstVariable().listMaritalStatus[i].cod; + print(selectMaritalStatusCod); + } + } if(selectMaritalStatus=='CASADO(A)'){ enableSpouse = true; }else{ @@ -632,9 +691,15 @@ class _RegisterCitizenScreenState extends State { setState(() { selectNaturality = value!; if(selectNaturality!='BRASILEIRO'){ + if(selectNaturality=='ESTRANGEIRO'){ + selectNaturalityCod = 2; + }else{ + selectNaturalityCod = 3; + } cityBirthController.text = 'MUNICIPIO IGNORADO - SP'; }else{ cityBirthController.text = ''; + selectNaturalityCod = 1; } }); }, @@ -652,7 +717,7 @@ class _RegisterCitizenScreenState extends State { scrollable: true, content: StatefulBuilder( builder: (context, setState) { - //aqui + return Column( children: [ InputSearchText( @@ -682,11 +747,18 @@ class _RegisterCitizenScreenState extends State { width: width*0.8, color: ColorPalette.white, child: ListTile( - onTap: (){ + onTap: ()async{ + List splitted = []; setState(() { cityBirthController.text = showResultSearchCity[index]; + splitted = cityBirthController.text.split(' - '); + print(splitted[0]); Navigator.pop(context); }); + resultListNasc = await DBQuerys().buscaMunicipio(splitted[0]); + print(resultListNasc[0]['ID_MUNICIPIO'],); + print(resultListNasc[0]['NO_MUNICIPIO'],); + print(resultListNasc[0]['UF_ESTADO'],); }, title: TextDefault( color: ColorPalette.black54, @@ -720,7 +792,7 @@ class _RegisterCitizenScreenState extends State { ), ), DropdownWithSubtitle( - list: ConstVariable().listBreed, + list: listBreed, subtitle: 'Raça/Cor', hintDropdown: 'Raça/Cor', select: selectBreed, @@ -730,12 +802,18 @@ class _RegisterCitizenScreenState extends State { onChanged: (value){ setState(() { selectBreed = value!; + for(int i = 0;ConstVariable().listBreed.length >i;i++){ + if(ConstVariable().listBreed[i].title == selectBreed){ + selectBreedCod = ConstVariable().listBreed[i].cod; + print(selectBreedCod); + } + } }); }, ), selectBreed==null?ErrorDefault():Container(), DropdownWithSubtitle( - list: ConstVariable().listScooling, + list: listScooling, subtitle: 'Escolaridade', hintDropdown: 'Escolaridade', select: selectScooling, @@ -745,11 +823,17 @@ class _RegisterCitizenScreenState extends State { onChanged: (value){ setState(() { selectScooling = value!; + for(int i = 0;ConstVariable().listScooling.length >i;i++){ + if(ConstVariable().listScooling[i].title == selectScooling){ + selectScoolingCod = ConstVariable().listScooling[i].cod; + print(selectScoolingCod); + } + } }); }, ), DropdownWithSubtitle( - list: ConstVariable().listDeficiency, + list: listDeficiency, subtitle: 'Deficiência', hintDropdown: 'Deficiência', select: selectDeficiency, @@ -759,6 +843,12 @@ class _RegisterCitizenScreenState extends State { onChanged: (value){ setState(() { selectDeficiency = value!; + for(int i = 0;ConstVariable().itensDeficiency.length >i;i++){ + if(ConstVariable().itensDeficiency[i].title == selectDeficiency){ + selectDeficiencyCod = ConstVariable().itensDeficiency[i].cod; + print(selectDeficiencyCod); + } + } }); }, ), @@ -878,6 +968,7 @@ class _RegisterCitizenScreenState extends State { setState(() { selectClassification = value; if(selectClassification=='OUTRO MUNICIPIO'){ + selectClassificationCOD = 3; cityController.clear(); codIBGEController.clear(); cepController.clear(); @@ -896,6 +987,11 @@ class _RegisterCitizenScreenState extends State { 'OK' ); }else{ + if(selectClassification=='PROVISORIO'){ + selectClassificationCOD = 2; + }else{ + selectClassificationCOD = 1; + } changedCity(); selectCountry = 'BRASIL'; } @@ -954,6 +1050,7 @@ class _RegisterCitizenScreenState extends State { selectCountry = value; if(selectCountry=='OUTRO'){ cityController.text= 'MUNICIPIO IGNORADO - SP'; + resultListResid = [{"ID_MUNICIPIO":1,"CODIGO_IBGE":"000000","NO_MUNICIPIO":"MUNICIPIO IGNORADO","UF_ESTADO":"--","ID_PAIS":33}]; codIBGEController.text = '000000'; numberController.clear(); selectVillage = null; @@ -1022,13 +1119,19 @@ class _RegisterCitizenScreenState extends State { width: width*0.8, color: ColorPalette.white, child: ListTile( - onTap: (){ + onTap: ()async{ + List splitted = []; setState(() { cityController.text = showResultSearchCity[index]; codIBGEController.text = showResultSearchIbge[index]; + splitted = cityController.text.split(' - '); // print("IBGE ${showResultSearchIbge[index]}"); Navigator.pop(context); }); + resultListResid = await DBQuerys().buscaMunicipio(splitted[0]); + print(resultListResid[0]['ID_MUNICIPIO'],); + print(resultListResid[0]['NO_MUNICIPIO'],); + print(resultListResid[0]['UF_ESTADO'],); }, title: TextDefault( color: ColorPalette.black54, @@ -1089,7 +1192,6 @@ class _RegisterCitizenScreenState extends State { }); idBairro = await DBQuerys().buscaBairro(selectVillage); }, - //aqui list: villageDB ), selectClassification!='OUTRO MUNICIPIO' && selectVillage == null?ErrorDefault():Container(), @@ -1222,6 +1324,11 @@ class _RegisterCitizenScreenState extends State { onChanged: (value){ setState(() { selectZone = value; + if(selectZone == 'URBANA'){ + selectZoneCod = 1; + }else{ + selectZoneCod = 2; + } }); }, list: ['URBANA','RURAL'] @@ -1520,18 +1627,15 @@ class _RegisterCitizenScreenState extends State { onChanged: (value){ setState(() { selectTypeCertificate = value; + for(int i = 0;ConstVariable().itensCertificate.length >i;i++){ + if(ConstVariable().itensCertificate[i].title == selectTypeCertificate){ + selectTypeCertificateCod = ConstVariable().itensCertificate[i].cod; + print(selectTypeCertificateCod); + } + } }); }, - list: [ - 'NASCIMENTO', - 'CASAMENTO', - 'DIVÓRCIO', - 'ADMINISTRATIVA - ÍNDIO', - 'NASCIMENTO - N', - 'CASAMENTO - N', - 'DIVÓRCIO - N', - 'ADMINISTRATIVA - ÍNDIO - N', - ] + list:typeCertificate ), InputWithSubtitle( controller: numberCertificateController, diff --git a/lib/screens/registers_citizen/register_home_screen.dart b/lib/screens/registers_citizen/register_home_screen.dart index c34f485..6d24028 100644 --- a/lib/screens/registers_citizen/register_home_screen.dart +++ b/lib/screens/registers_citizen/register_home_screen.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:rkm/config/color_palette.dart'; import 'package:rkm/config/const_variable.dart'; -import 'package:rkm/widgets/alert_dialog_default.dart'; import 'package:rkm/widgets/button_default.dart'; import 'package:rkm/widgets/title_containers.dart'; import '../../widgets/appbar_default.dart'; @@ -11,7 +10,6 @@ import '../../widgets/input_with_subtitle.dart'; import '../../widgets/onbackbutton.dart'; import '../../widgets/subtitle_appbar_citizen.dart'; import '../../widgets/switch_with_subtitle.dart'; -import '../../widgets/text_default.dart'; class RegisterHomeScreen extends StatefulWidget { const RegisterHomeScreen({Key? key}) : super(key: key); diff --git a/lib/service/db/db_querys.dart b/lib/service/db/db_querys.dart index 2507af4..1d63fa5 100644 --- a/lib/service/db/db_querys.dart +++ b/lib/service/db/db_querys.dart @@ -33,4 +33,38 @@ class DBQuerys{ print(list[0]['ID_LOGR_TIPO']); return list[0]['ID_LOGR_TIPO'].toString(); } + buscaprocedimento()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT * FROM PROCEDIMENTOS_SIGTAP"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + buscaCBOS()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT * FROM CBOS ORDER BY DESCRICAO_CBO"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + buscaProcIniciais()async{ + Database db = await DbSqliteLoad().intialDB(); + var query = "SELECT DISTINCT ATENDIMENTO, COD_PROC_SIGTAP, CODIGO_CBO FROM PROCEDIMENTOS_INICIAIS ORDER BY ATENDIMENTO, COD_PROC_SIGTAP, CODIGO_CBO"; + List list = await db.rawQuery(query); + // print(list); + return list; + } + buscaProceduresCBO(String COD_PROC_SIGTAP,String CODIGO_CBO)async{ + Database db = await DbSqliteLoad().intialDB(); + var query = 'SELECT * FROM PROCEDIMENTOS_SIGTAP_CBO WHERE COD_PROC_SIGTAP = "$COD_PROC_SIGTAP" AND CODIGO_CBO = "$CODIGO_CBO"'; + List list = await db.rawQuery(query); + return list; + } + buscaMunicipio(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; + } } \ No newline at end of file diff --git a/lib/service/db/db_sqlite_load.dart b/lib/service/db/db_sqlite_load.dart index 711cc25..a368873 100644 --- a/lib/service/db/db_sqlite_load.dart +++ b/lib/service/db/db_sqlite_load.dart @@ -322,4 +322,19 @@ class DbSqliteLoad{ // print(await db.query('PROFISSIONAIS_EQUIPE')); return db; } + Future saveProceduresInit(var value)async{ + Database db = await intialDB(); + int id = await db.insert('PROCEDIMENTOS_INICIAIS', value); + // print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO'); + print(await db.query('PROCEDIMENTOS_INICIAIS')); + return db; + } + + Future deleteProceduresInit(int ATENDIMENTO,String CODIGO_CBO,String COD_PROC_SIGTAP)async{ + Database db = await intialDB(); + await db.rawDelete('DELETE FROM PROCEDIMENTOS_INICIAIS WHERE ATENDIMENTO = $ATENDIMENTO AND CODIGO_CBO = "$CODIGO_CBO" AND COD_PROC_SIGTAP = "$COD_PROC_SIGTAP"'); + // print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO'); + print(await db.query('PROCEDIMENTOS_INICIAIS')); + return db; + } } \ No newline at end of file