ajustes envio das tabelas, criação e edição de cidadão
This commit is contained in:
@@ -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<RegisterCitizenScreen> createState() => _RegisterCitizenScreenState();
|
||||
}
|
||||
@@ -87,6 +87,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
|
||||
String? selectTypeStreet;
|
||||
String? selectStreet;
|
||||
String? selectSubdivision;
|
||||
int? selectSubdivisionCOD;
|
||||
String? selectZone;
|
||||
int? selectZoneCod;
|
||||
String? selectVillage;
|
||||
@@ -135,6 +136,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
|
||||
List<String> listBreed = [];
|
||||
List<String> listMaritalStatus = [];
|
||||
String idUnidade = '';
|
||||
String codSus = '';
|
||||
|
||||
escolherprazoInicio(BuildContext context,String type) async {
|
||||
|
||||
@@ -190,6 +192,9 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
|
||||
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<RegisterCitizenScreen> {
|
||||
}
|
||||
|
||||
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<RegisterCitizenScreen> {
|
||||
});
|
||||
}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<String, dynamic> 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<RegisterCitizenScreen> {
|
||||
'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<RegisterCitizenScreen> {
|
||||
'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<RegisterCitizenScreen> {
|
||||
}
|
||||
}
|
||||
|
||||
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<RegisterCitizenScreen> {
|
||||
loadTypeStreetDB();
|
||||
loadSubdivisionsDB();
|
||||
loadLists();
|
||||
setState(() {
|
||||
cityBirthController.text = widget.select;
|
||||
});
|
||||
if(widget.listData.length!=0){
|
||||
getData();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -635,7 +770,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
|
||||
child: TextDefault(
|
||||
text: date,
|
||||
color: ColorPalette.black54,
|
||||
fontSize: 18,
|
||||
fontSize: 16,
|
||||
),
|
||||
),
|
||||
)
|
||||
@@ -755,7 +890,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
|
||||
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<RegisterCitizenScreen> {
|
||||
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<RegisterCitizenScreen> {
|
||||
changedCity();
|
||||
selectCountry = 'BRASIL';
|
||||
}
|
||||
});
|
||||
setState(() {});
|
||||
},
|
||||
list: [
|
||||
'MUNICIPE',
|
||||
@@ -1128,7 +1263,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
|
||||
// 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<RegisterCitizenScreen> {
|
||||
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<RegisterCitizenScreen> {
|
||||
child: TextDefault(
|
||||
text: RGDateController.text,
|
||||
color: ColorPalette.black54,
|
||||
fontSize: 18,
|
||||
fontSize: 16,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -1709,7 +1845,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
|
||||
child: TextDefault(
|
||||
text: dateCertificateController.text,
|
||||
color: ColorPalette.black54,
|
||||
fontSize: 18,
|
||||
fontSize: 16,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -1805,16 +1941,46 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
|
||||
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<RegisterCitizenScreen> {
|
||||
child: TextDefault(
|
||||
text: dateDeathController.text,
|
||||
color: ColorPalette.black54,
|
||||
fontSize: 18,
|
||||
fontSize: 16,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user