ajustes no front e finalizado o salvamento dos dados no DB

This commit is contained in:
Reginaldo
2023-05-03 15:49:31 -03:00
parent 115c7a9d4c
commit 7ab1fa5ebd
11 changed files with 309 additions and 132 deletions

View File

@@ -100,7 +100,8 @@ class _HomeScreenState extends State<HomeScreen> {
children: [
InputSearchText(
hint: 'Busca cidadão (Por NOME ou CNS ou PRONTUÁRIO ou DATA NASCIMENTO)',
fontSize: 10,
fontSize: 20,
fontSizeHint: 11,
controller: inputSearch,
width: width*0.72,
),

View File

@@ -25,7 +25,6 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
String error = '';
String? now;
String? selectCity;
bool validatorDropDown= false;
int contLogo = 0;
String mode = 'desenvolvimento';
String urlAPI = UrlApiConst.ApiUrlDesenvolvimento;
@@ -35,6 +34,7 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
String codState = '';
int codCity = 0;
int codCityIbge = 0;
bool mandatory = false;
final PrefService _prefService = PrefService();
checkLogin()async{
@@ -115,9 +115,9 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
}
});
}else{
setState(() {
error = 'Selecione sua cidade';
});
error = 'Selecione sua cidade';
mandatory = true;
setState(() {});
}
}else{
setState(() {
@@ -187,7 +187,7 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
children: [
InputText(
hint: 'Usuário',
label: inputUser.text.isNotEmpty?'':'Usuário',
label: 'Usuário',
controller: inputUser,
width: width*0.6,
colorBorder: Colors.white,
@@ -195,7 +195,7 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
),
InputText(
hint: 'Senha',
label: inputPassword.text.isNotEmpty?'':'Senha',
label: 'Senha',
obscure: true,
controller: inputPassword,
width: width*0.6,
@@ -204,12 +204,12 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
),
DropDownButtonCity(
error: 'Campo obrigatório',
validator: validatorDropDown,
validator: mandatory,
select: selectCity,
onChanged: (value){
setState(() {
selectCity = value!;
validatorDropDown = true;
mandatory = false;
});
},
),

View File

@@ -585,7 +585,7 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
selectCountry = widget.listData[0]['ID_PAIS_RESID']==33?'BRASIL':'OUTRO';
int codCity = widget.listData[0]['ID_MUNICIPIO_RESID'];
List listCity = await DBQuerys().buscaMunicipioporId(codCity);
cityController.text = listCity[0]['NO_MUNICIPIO'];
cityController.text = listCity[0]['NO_MUNICIPIO']+listCity.length!=0?' - SP':'';
resultListResid = listCity;
codIBGEController.text = listCity[0]['CODIGO_IBGE'];
selectVillage = widget.listData[0]['NO_BAIRRO_LOGR'];
@@ -800,31 +800,33 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
),
selectGender==null && mandatory?ErrorDefault():Container(),
Container(
width: width*0.75,
child: Row(
children: [
GestureDetector(
onTap:edit?null: ()=>escolherprazoInicio(context,'birth'),
child: Container(
alignment: Alignment.centerLeft,
height: 58,
margin: EdgeInsets.symmetric(horizontal: 15,vertical: 5),
padding: EdgeInsets.symmetric(horizontal: 8,vertical: 10),
decoration: BoxDecoration(
border: Border.all(color: ColorPalette.white),
borderRadius: BorderRadius.all(
Radius.circular(5.0)
),
),
width: width*0.7,
child: TextDefault(
text: date,
color: Colors.black,
fontSize: 16,
),
),
)
],
width: width*0.7,
child: TextDefault(
textAlign: TextAlign.start,
text: 'Data de Nascimento',
color: ColorPalette.black54,
fontSize: 12,
),
),
GestureDetector(
onTap:edit?null: ()=>escolherprazoInicio(context,'birth'),
child: Container(
alignment: Alignment.centerLeft,
height: 58,
margin: EdgeInsets.symmetric(horizontal: 15,vertical: 5),
padding: EdgeInsets.symmetric(horizontal: 8,vertical: 10),
decoration: BoxDecoration(
border: Border.all(color: ColorPalette.white),
borderRadius: BorderRadius.all(
Radius.circular(5.0)
),
),
width: width*0.7,
child: TextDefault(
text: date,
color: Colors.black,
fontSize: 16,
),
),
),
date == 'Data de Nascimento'&& mandatory?ErrorDefault():Container(),
@@ -1804,6 +1806,15 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
mandatory: false,
onChanged: (v)=>setState((){}),
),
Container(
width: width*0.7,
child: TextDefault(
textAlign: TextAlign.start,
text: 'RG - Data de Emissão',
color: ColorPalette.black54,
fontSize: 12,
),
),
GestureDetector(
onTap:edit?null: ()=>escolherprazoInicio(context,'rg'),
child: Container(
@@ -1905,6 +1916,15 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
enabled: !edit,
onChanged: (v)=>setState((){}),
),
Container(
width: width*0.7,
child: TextDefault(
textAlign: TextAlign.start,
text: 'Data de Emissão da Certidão',
color: ColorPalette.black54,
fontSize: 12,
),
),
GestureDetector(
onTap:edit?null: ()=>escolherprazoInicio(context,'cert'),
child: Container(
@@ -2076,6 +2096,15 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
enabled: !edit,
onChanged: (v)=>setState((){}),
),
Container(
width: width*0.7,
child: TextDefault(
textAlign: TextAlign.start,
text: 'Data Óbito',
color: ColorPalette.black54,
fontSize: 12,
),
),
GestureDetector(
onTap:edit?null: ()=>escolherprazoInicio(context,'death'),
child: Container(

View File

@@ -5,9 +5,12 @@ import 'package:rkm/config/const_variable.dart';
import 'package:rkm/service/db/db_querys.dart';
import 'package:rkm/widgets/button_default.dart';
import 'package:rkm/widgets/title_containers.dart';
import '../../service/db/db_sqlite_sync.dart';
import '../../service/shared_preferences/shared_preferences_service.dart';
import '../../widgets/alert_dialog_default.dart';
import '../../widgets/appbar_default.dart';
import '../../widgets/dropdown_with_subtitle.dart';
import '../../widgets/error_default.dart';
import '../../widgets/input_with_subtitle.dart';
import '../../widgets/onbackbutton.dart';
import '../../widgets/subtitle_appbar_citizen.dart';
@@ -26,7 +29,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
var QTDE_ANIMAIS = TextEditingController();
var NUM_COMODOS = TextEditingController();
var NUM_MORADORES = TextEditingController();
var ID_RESP_CADASTRO = TextEditingController();
var NOME_RESP_CADASTRO = TextEditingController();
var CNES_RESP_CADASTRO = TextEditingController();
var DT_CADASTRO = TextEditingController();
@@ -41,6 +44,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
bool editing = false;
bool mandatory = false;
bool CNS_VALIDO = false;
bool showCheckError = false;
List<String> listTypeHome = [];
List<String> listINE = [];
@@ -75,8 +79,17 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
String? ESCOAMENTO;
String? CBO_RESP_CADASTRO;
String? INE_RESP_CADASTRO;
String? NOME_INSTITUICAO_PERMANENCIA;
String? PROFISSIONAIS_VINCULADOS_INST;
String? RESPONSAVEL_TECNICO_INST;
String? CARGO_RESP_TECNICO_INST;
String? TEL_RESP_TECNICO_INST;
int ID_CIDADAO=0;
String date_cad = '';
String TIPO_SALVAR = 'new';
int ID_RESP_CADASTRO=0;
int ID_DOMICILIO=0;
int ID_AREA_DOMICILIO=0;
int ID_MICROAREA_DOMICILIO=0;
int TIPO_IMOVEL_COD = 0;
@@ -90,6 +103,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
int TRATAMENTO_AGUA_COD = 0;
int DESTINO_LIXO_COD = 0;
int ESCOAMENTO_COD = 0;
int ID_EQUIPE = 0;
escolherprazoInicio(BuildContext context) async {
var pickDate = await showDatePicker(
@@ -165,9 +179,13 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
}
loadRegisterHome()async{
int ID_DOMICILIO = widget.listData[0]['ID_DOMICILIO'];
ID_DOMICILIO = widget.listData[0]['ID_DOMICILIO'];
ID_CIDADAO = widget.listData[0]['ID_CIDADAO'];
DBQuerys().buscaCadDomiciliar(ID_DOMICILIO).then((dataHome)async{
TIPO_IMOVEL_COD = dataHome[0]['TIPO_IMOVEL']??0;
if(dataHome.length!=0){
TIPO_SALVAR = 'update';
}
for (int i = 0; ConstVariable().listTypeHome.length > i; i++) {
if (ConstVariable().listTypeHome[i].cod == TIPO_IMOVEL_COD) {
TIPO_IMOVEL = ConstVariable().listTypeHome[i].title;
@@ -251,6 +269,13 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
date_cad = dataHome[0]['DT_CADASTRO']??'';
List splitted = date_cad.toString().split('-');
DT_CADASTRO.text = splitted.length<2?'':'${splitted[2]}/${splitted[1]}/${splitted[0]}';
print(DT_CADASTRO.text);
ID_EQUIPE = dataHome[0]['ID_EQUIPE']??0;
NOME_INSTITUICAO_PERMANENCIA = dataHome[0]['NOME_INSTITUICAO_PERMANENCIA'];
PROFISSIONAIS_VINCULADOS_INST = dataHome[0]['PROFISSIONAIS_VINCULADOS_INST'];
RESPONSAVEL_TECNICO_INST = dataHome[0]['RESPONSAVEL_TECNICO_INST'];
CARGO_RESP_TECNICO_INST = dataHome[0]['CARGO_RESP_TECNICO_INST'];
TEL_RESP_TECNICO_INST = dataHome[0]['TEL_RESP_TECNICO_INST'];
await DBQuerys().buscaCBOProfissional(idUsuario).then((list){
if(list.length!=0){
for(int i = 0; list.length>i;i++){
@@ -261,17 +286,14 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
setState(() {});
});
});
await DBQuerys().buscaProfissionalCadInd(idUsuario).then((list)async{
ID_RESP_CADASTRO.text = list['NOME_PROFISSIONAL'];
CNES_RESP_CADASTRO.text = await DBQuerys().buscaNomeUnidade(idUnidade);
});
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.text = list['NOME_PROFISSIONAL'];
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;
@@ -280,6 +302,77 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
setState(() {});
}
checkSave()async{
// adicionar depois e usar um usuário real
// CBO_RESP_CADASTRO
//ok
if(TIPO_IMOVEL==null || DT_CADASTRO.text.isEmpty ){
print('erro');
setState(() {
showCheckError = true;
mandatory = true;
});
}else{
print('passou');
mandatory = false;
showCheckError = false;
setState(() {});
saveCitizenHome();
}
}
saveCitizenHome()async{
Map<String, dynamic> row = {
'TIPO_IMOVEL' : TIPO_IMOVEL_COD,
'ID_AREA_DOMICILIO' : ID_AREA_DOMICILIO,
'ID_MICROAREA_DOMICILIO' : ID_MICROAREA_DOMICILIO,
'FORA_AREA' : FORA_AREA?1:2,
'SITUACAO_MORADIA' : SITUACAO_MORADIA_COD,
'TIPO_LOCALIDADE' : TIPO_LOCALIDADE_COD,
'TIPO_DOMICILIO' : TIPO_DOMICILIO_COD,
'NUM_MORADORES' : int.parse(NUM_MORADORES.text),
'NUM_COMODOS' : int.parse(NUM_COMODOS.text),
'SITUACAO_RURAL' : SITUACAO_RURAL_COD,
'TIPO_ACESSO' : TIPO_ACESSO_COD,
'MAT_PREDOMINANTE' : MAT_PREDOMINANTE_COD,
'DISPONIBILIDADE_ENERGIA' : DISPONIBILIDADE_ENERGIA?1:2,
'TIPO_ABASTECIMENTO' : TIPO_ABASTECIMENTO_COD,
'TRATAMENTO_AGUA' : TRATAMENTO_AGUA_COD,
'DESTINO_LIXO' : DESTINO_LIXO_COD,
'ESCOAMENTO' : ESCOAMENTO_COD,
'FL_ANIMAIS' : FL_ANIMAIS?1:2,
'ANIMAIS_GATO' : ANIMAIS_GATO?1:2,
'ANIMAIS_CACHORRO' : ANIMAIS_CACHORRO?1:2,
'ANIMAIS_PASSARO' : ANIMAIS_PASSARO?1:2,
'ANIMAIS_OUTROS' : ANIMAIS_OUTROS?1:2,
'QTDE_ANIMAIS' : QTDE_ANIMAIS.text.isEmpty?0:int.parse(QTDE_ANIMAIS.text),
'CBO_RESP_CADASTRO' : CBO_RESP_CADASTRO,
'ID_RESP_CADASTRO' : ID_RESP_CADASTRO,
'CNES_RESP_CADASTRO' : CNES_RESP_CADASTRO.text,
'INE_RESP_CADASTRO' : INE,
'DT_CADASTRO' : date_cad,
'ID_EQUIPE' : ID_EQUIPE,
'ORIGEM' : 'A',
'SINCRONIZADO' : 'N',
'NOME_INSTITUICAO_PERMANENCIA': NOME_INSTITUICAO_PERMANENCIA,
'PROFISSIONAIS_VINCULADOS_INST': PROFISSIONAIS_VINCULADOS_INST,
'RESPONSAVEL_TECNICO_INST' : RESPONSAVEL_TECNICO_INST,
'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).then((value){
AlertDialogDefault().alert(
context,
'Aviso',
TIPO_SALVAR!='new'?
'Cadastro Domiciliar alterado com sucesso!':
'Cadastro Domiciliar realizado com sucesso!',
'OK'
);
// print(value);
});
}
@override
void initState() {
super.initState();
@@ -303,6 +396,19 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
child: ListView(
children: [
SubtitleAppbarCitizen(title: 3,edit: true,listData: widget.listData),
showCheckError?Card(
margin: EdgeInsets.all(10),
child: Container(
padding: EdgeInsets.all(10),
child: Row(
children: [
Icon(Icons.warning,color: Colors.red,),
TextDefault(text: 'Existem campos obrigatórios não preenchidos.',color: ColorPalette.red,fontSize: 15,)
],
),
),
color: ColorPalette.white,
):Container(),
Card(
margin: EdgeInsets.all(10),
child: Padding(
@@ -314,7 +420,6 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
setState(() {
edit = true;
editing = true;
mandatory = true;
});
},
title: 'Alterar',
@@ -323,10 +428,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
textColor: ColorPalette.white,
width: double.infinity,
):ButtonDefault(
onPressed: ()=>setState((){
edit=false;
editing = false;
}),
onPressed: ()=>checkSave(),
title: 'Salvar',
borderColor: ColorPalette.appBar,
background: ColorPalette.appBar,
@@ -378,6 +480,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
}
},
),
TIPO_IMOVEL==null&& mandatory?ErrorDefault():Container(),
DropdownWithSubtitle(
list:listINE,
widthSubtitle: width*0.7,
@@ -392,7 +495,12 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
width: width*0.7,
title: 'Fora de área',
value: FORA_AREA,
onChanged: !editing?null: (value)=>setState(()=>FORA_AREA=value),
onChanged: !editing?null: (value){
if(value){
INE = null;
}
setState(()=>FORA_AREA=value);
},
),
DropdownWithSubtitle(
list:listSituationHome,
@@ -662,7 +770,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
mainAxisSize: MainAxisSize.min,
children: [
InputWithSubtitle(
controller: ID_RESP_CADASTRO,
controller: NOME_RESP_CADASTRO,
subtitle: 'Usuário responsável Pelo Cadastro',
errorInput: 'Campo Obrigatório',
labelInput: 'Usuário responsável Pelo Cadastro',
@@ -707,17 +815,22 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
},
list: listINEPROF
),
InputWithSubtitle(
controller: DT_CADASTRO,
subtitle: 'Data do Cadastro',
errorInput: 'Campo Obrigatório',
labelInput: 'Data do Cadastro',
widthInput: width*0.7,
widthSubtitle: width*0.7,
hintInput: 'Escreva aqui',
enabled: false,
onChanged: (v)=>setState((){}),
GestureDetector(
onTap:!edit?null: ()=>escolherprazoInicio(context),
child: InputWithSubtitle(
controller: DT_CADASTRO,
subtitle: 'Data do Cadastro',
errorInput: 'Campo Obrigatório!',
labelInput: 'Data do Cadastro',
widthInput: width*0.7,
widthSubtitle: width*0.7,
hintInput: 'Escreva aqui',
enabled: false,
mandatory: mandatory,
onChanged: (v)=>setState((){}),
),
),
DT_CADASTRO.text.isEmpty&& mandatory?ErrorDefault():Container(),
],
),
),

View File

@@ -115,7 +115,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
int ALIMENTACAO_DIARIA_COD = 0;
int IDENTIDADE_GENERO_COD = 0;
int ID_EQUIPE = 0;
String CD_USUARIO_SUS = '';
int ID_CIDADAO = 0;
String? INE;
String? INE_DB;
String? ESCOLARIDADE;
@@ -216,9 +216,9 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
}
loadCadIndividual()async{
CD_USUARIO_SUS = widget.listData[0]['CD_USUARIO_SUS'];
ID_CIDADAO = widget.listData[0]['ID_CIDADAO'];
await DBQuerys().buscaCadInvidual(CD_USUARIO_SUS).then((dataCitizen)async{
await DBQuerys().buscaCadInvidual(ID_CIDADAO).then((dataCitizen)async{
// print(CD_USUARIO_SUS);
if(dataCitizen.length != 0) {
TIPO_SALVAR = 'update';
@@ -545,7 +545,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
'CRIANCAS_OUTRO' : CRIANCAS_OUTRO?1:2,
'IDENTIDADE_GENERO' : IDENTIDADE_GENERO_COD,
};
await DbSqliteSync().insertCadastrosIndividuais(row,TIPO_SALVAR,CD_USUARIO_SUS).then((value){
await DbSqliteSync().insertCadastrosIndividuais(row,TIPO_SALVAR,ID_CIDADAO).then((value){
AlertDialogDefault().alert(
context,
'Aviso',
@@ -1003,6 +1003,15 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
onTapDelete: ()=>setState(()=>SAIDA_CADASTRO=null),
showDelete: true,
),
Container(
width: width*0.7,
child: TextDefault(
textAlign: TextAlign.start,
text: 'Data',
color: ColorPalette.black54,
fontSize: 12,
),
),
GestureDetector(
onTap:!edit?null: ()=>escolherprazoInicio(context,'data_saida'),
child: InputWithSubtitle(
@@ -1508,6 +1517,15 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
onChanged: !editing?null: (value)=>setState(()=>INE_RESP_CADASTRO = value),
list: listINEPROF
),
Container(
width: width*0.7,
child: TextDefault(
textAlign: TextAlign.start,
text: 'Data do Cadastro',
color: ColorPalette.black54,
fontSize: 12,
),
),
GestureDetector(
onTap:!edit?null: ()=>escolherprazoInicio(context,'cadastro'),
child: InputWithSubtitle(

View File

@@ -134,14 +134,14 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
}else{
setState(()=> messageSteps = "Etapa 9 de 10 - Gravando os Cadastros Domiciliares no Aplicativo");
}
await DbSqliteSync().insertCadastrosDomiciliares(value).then((value)async{
await DbSqliteSync().insertCadastrosDomiciliares(value,'sync',0,0).then((value)async{
await ApiDataSync().syncCadastrosIndividuais(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,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','').then((value)async{
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{
Navigator.pushNamed(context, '/home');
});