feito o cadastro do cidadão

This commit is contained in:
Reginaldo
2023-04-13 22:54:17 -03:00
parent cdee8fcc44
commit 632cdbfeef
34 changed files with 2076 additions and 1108 deletions

View File

@@ -1,6 +1,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ab.rkm.rkm"> package="com.ab.rkm.rkm">
<uses-permission android:name="android.permission.INTERNET" />
<application <application
android:usesCleartextTraffic="true"
android:label="RKMAB" android:label="RKMAB"
android:name="${applicationName}" android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"> android:icon="@mipmap/ic_launcher">

View File

@@ -0,0 +1,9 @@
import 'package:flutter/services.dart';
class FormatText extends TextInputFormatter{
@override
TextEditingValue formatEditUpdate(
TextEditingValue txtOdl,TextEditingValue txtNew){
return txtNew.copyWith(text: txtNew.text.toUpperCase());
}
}

View File

@@ -0,0 +1,144 @@
import 'package:get/get.dart';
import 'package:rkm/service/db/db_querys.dart';
class MainControllers{
validaCNS(String cns)async{
//valido provisório 783107557570002
//cns valido def 187455333020009
String response = 'CNS inválido';
String type = cns.substring(0,1);
if(type == '7'|| type =='8' || type == '9'){
response = await validaCNSProv(cns);
}else{
response = validaCNSDef(cns);
}
return response;
}
validaCNSProv(String vlrCNS)async{
int resto;
int soma;
if(vlrCNS.length == 15){
// print('pis');
// print(vlrCNS);
soma = ((int.parse(vlrCNS.substring( 0, 1))) * 15)
+ ((int.parse(vlrCNS.substring( 1, 2))) * 14)
+ ((int.parse(vlrCNS.substring( 2, 3))) * 13)
+ ((int.parse(vlrCNS.substring( 3, 4))) * 12)
+ ((int.parse(vlrCNS.substring( 4, 5))) * 11)
+ ((int.parse(vlrCNS.substring( 5, 6))) * 10)
+ ((int.parse(vlrCNS.substring( 6, 7))) * 9)
+ ((int.parse(vlrCNS.substring( 7, 8))) * 8)
+ ((int.parse(vlrCNS.substring( 8, 9))) * 7)
+ ((int.parse(vlrCNS.substring( 9,10))) * 6)
+ ((int.parse(vlrCNS.substring(10,11))) * 5)
+ ((int.parse(vlrCNS.substring(11,12))) * 4)
+ ((int.parse(vlrCNS.substring(12,13))) * 3)
+ ((int.parse(vlrCNS.substring(13,14))) * 2)
+ ((int.parse(vlrCNS.substring(14,15))) * 1);
resto = soma % 11;
// print('soma');
// print(soma);
// print('resto');
// print(resto);
if (resto == 0)
{
// CNS provisório válido
List result = await DBQuerys().duplicidadeCNS(vlrCNS);
if(result.length==0){
return 'ok';
}else{
return 'CNS duplicado';
}
}
else
{
// CNS provisório inválido
return 'CNS provisório inválido';
}
}else{
if(vlrCNS.length< 15){
return 'CNS inválido! Faltando números';
}else{
return 'CNS inválido! Sobrando números';
}
}
}
validaCNSDef(String vlrCNS){
int soma = 0;
int resto = 0;
int dv = 0;
String pis = '';
String resultado = '';
if(vlrCNS.length == 15){
pis = vlrCNS.substring(0,11);
soma = (int.parse(pis.substring(0,1)) * 15) +
((int.parse(pis.substring(1,2))) * 14) +
((int.parse(pis.substring(2,3))) * 13) +
((int.parse(pis.substring(3,4))) * 12) +
((int.parse(pis.substring(4,5))) * 11) +
((int.parse(pis.substring(5,6))) * 10) +
((int.parse(pis.substring(6,7))) * 9) +
((int.parse(pis.substring(7,8))) * 8) +
((int.parse(pis.substring(8,9))) * 7) +
((int.parse(pis.substring(9,10))) * 6) +
((int.parse(pis.substring(10,11))) * 5);
resto = soma % 11;
dv = 11 - resto;
if (dv == 11) {
dv = 0;
}
if (dv == 10) {
soma = (((int.parse(pis.substring(0,1))) * 15) +
((int.parse(pis.substring(1,2))) * 14) +
((int.parse(pis.substring(2,3))) * 13) +
((int.parse(pis.substring(3,4))) * 12) +
((int.parse(pis.substring(4,5))) * 11) +
((int.parse(pis.substring(5,6))) * 10) +
((int.parse(pis.substring(6,7))) * 9) +
((int.parse(pis.substring(7,8))) * 8) +
((int.parse(pis.substring(8,9))) * 7) +
((int.parse(pis.substring(9,10))) * 6) +
((int.parse(pis.substring(10,11))) * 5) + 2);
resto = soma % 11;
dv = 11 - resto;
resultado = pis + "001" + dv.toString();
} else {
resultado = pis + "000" + dv.toString();
}
if (vlrCNS != resultado) {
// CNS inválido
return 'CNS definitivo inválido';
} else {
// CNS válido
String result = DBQuerys().duplicidadeCNS(vlrCNS);
if(result==''){
return 'ok';
}else{
return 'CNS duplicado"';
}
}
}else{
if(vlrCNS.length< 15){
return 'CNS inválido! Faltando números';
}else{
return 'CNS inválido! Sobrando números';
}
}
}
validaCPF(String cpf)async{
// 60352523620 CPF VÁLIDO
if(GetUtils.isCpf(cpf)){
List result = await DBQuerys().duplicidadeCPF(cpf);
print(cpf);
if(result.length==0){
return 'ok';
}else{
return 'CPF duplicado';
}
}else{
return 'CPF inválido';
}
}
}

View File

@@ -1,17 +0,0 @@
import 'city_load_model.dart';
class ArgsLoadInitModel{
String mode;
CityLoadModel model;
String user;
String password;
String urlAPI;
ArgsLoadInitModel({
required this.mode,
required this.model,
required this.user,
required this.password,
required this.urlAPI,
});
}

View File

@@ -1,12 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:line_icons/line_icons.dart'; import 'package:line_icons/line_icons.dart';
import 'package:rkm/screens/registers_citizen/register_citizen_screen.dart';
import 'package:rkm/utils/const_variable.dart'; import 'package:rkm/utils/const_variable.dart';
import 'package:rkm/widgets/icon_button_default.dart'; import 'package:rkm/widgets/icon_button_default.dart';
import 'package:rkm/widgets/input_search_text.dart'; import 'package:rkm/widgets/input_search_text.dart';
import '../service/db/db_sqlite_load.dart'; import '../service/db/db_sqlite_load.dart';
import '../widgets/appbar_default.dart'; import '../widgets/appbar_default.dart';
import '../widgets/item_citizen.dart'; import '../widgets/item_citizen.dart';
import 'registers_citizen/main_register_citizen_screen.dart';
class HomeScreen extends StatefulWidget { class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key); const HomeScreen({Key? key}) : super(key: key);
@@ -24,6 +24,7 @@ class _HomeScreenState extends State<HomeScreen> {
loadCitizen()async{ loadCitizen()async{
await DbSqliteLoad().intialDB().then((db)async { await DbSqliteLoad().intialDB().then((db)async {
dataCitizen = await db.query('CIDADAOS ORDER BY NOME_CIDADAO'); dataCitizen = await db.query('CIDADAOS ORDER BY NOME_CIDADAO');
// print(await db.rawQuery("SELECT * FROM CIDADAOS WHERE NOME_PAI='REGINALDO OLIVEIRA'"));
}); });
searchCitizen(); searchCitizen();
return 'complete'; return 'complete';
@@ -34,24 +35,25 @@ class _HomeScreenState extends State<HomeScreen> {
showResults =[]; showResults =[];
for (int i =0;dataCitizen.length>i;i++) { for (int i =0;dataCitizen.length>i;i++) {
String NOME_CIDADAO = '${dataCitizen[i]['NOME_CIDADAO']}'; String NOME_CIDADAO = '${dataCitizen[i]['NOME_CIDADAO']}';
String CNS = '${dataCitizen[i]['CNS']}'; String CNS = '${dataCitizen[i]['CNS']}'==''?'999999':'${dataCitizen[i]['CNS']}';
String NUM_PRONTUARIO = '${dataCitizen[i]['NUM_PRONTUARIO']}'; String NUM_PRONTUARIO = '${dataCitizen[i]['NUM_PRONTUARIO']}'==''?'null':'${dataCitizen[i]['NUM_PRONTUARIO']}';
List splitted = '${dataCitizen[i]['DT_NASCIMENTO']}'.split('-'); List splitted = '${dataCitizen[i]['DT_NASCIMENTO']}'.split('-');
String DT_NASCIMENTO = '${splitted[2]}/${splitted[1]}/${splitted[0]}'; String DT_NASCIMENTO = '00/00/0000';
if( splitted.length==3){
DT_NASCIMENTO = '${splitted[2]}/${splitted[1]}/${splitted[0]}';
}
if( if(
NOME_CIDADAO.contains(inputSearch.text.toUpperCase()) || NOME_CIDADAO.contains(inputSearch.text.toUpperCase()) ||
NUM_PRONTUARIO.contains(inputSearch.text.toUpperCase()) || NUM_PRONTUARIO.contains(inputSearch.text.toUpperCase()) ||
DT_NASCIMENTO.contains(inputSearch.text.toUpperCase()) || DT_NASCIMENTO.contains(inputSearch.text.toUpperCase()) ||
CNS.contains(inputSearch.text.toUpperCase()) CNS.contains(inputSearch.text.toUpperCase())
){ ){
print('ok $i');
if(showResults.length<10){ if(showResults.length<10){
showResults.add(dataCitizen[i]); showResults.add(dataCitizen[i]);
} }
} }
} }
setState(() { setState(() {
print(showResults);
}); });
}else{ }else{
setState(() { setState(() {
@@ -71,6 +73,7 @@ class _HomeScreenState extends State<HomeScreen> {
super.initState(); super.initState();
loadCitizen(); loadCitizen();
inputSearch.addListener(_searchInit); inputSearch.addListener(_searchInit);
} }
@override @override
void dispose() { void dispose() {
@@ -103,7 +106,7 @@ class _HomeScreenState extends State<HomeScreen> {
icon: Icons.person_add, icon: Icons.person_add,
onPressed: ()=> Navigator.push( onPressed: ()=> Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => MainRegisterCitizenScreen(screens: 1,)), MaterialPageRoute(builder: (context) => RegisterCitizenScreen(select: '')),
) )
), ),
IconButtonDefault( IconButtonDefault(
@@ -124,16 +127,20 @@ class _HomeScreenState extends State<HomeScreen> {
itemBuilder: (context,index){ itemBuilder: (context,index){
List splitted = '${showResults[index]['DT_NASCIMENTO']}'.split('-'); List splitted = '${showResults[index]['DT_NASCIMENTO']}'.split('-');
String date='00/00/0000';
if(splitted.length==3){
date = '${splitted[2]}/${splitted[1]}/${splitted[0]}';
}
return ItemCitizen( return ItemCitizen(
date: '${splitted[2]}/${splitted[1]}/${splitted[0]}', date: date,
name: '${showResults[index]['NOME_CIDADAO']}', name: '${showResults[index]['NOME_CIDADAO']}',
mother:'${showResults[index]['NOME_MAE']}', mother:'${showResults[index]['NOME_MAE']}',
numberCNS: '${showResults[index]['CNS']}'=='null'?'999999999999999':'${showResults[index]['CNS']}', numberCNS: '${showResults[index]['CNS']}'=='null'||'${showResults[index]['CNS']}'==''?'999999999999999':'${showResults[index]['CNS']}',
numberMedicalRecord: '${showResults[index]['NUM_PRONTUARIO']}', numberMedicalRecord: '${showResults[index]['NUM_PRONTUARIO']}',
onTap: ()=> Navigator.push( onTap: ()=> Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => MainRegisterCitizenScreen(screens: 3,)), MaterialPageRoute(builder: (context) => RegisterCitizenScreen(select: '')),
), ),
); );
} }

View File

@@ -4,17 +4,11 @@ import 'package:rkm/utils/color_palette.dart';
import 'package:rkm/widgets/alert_dialog_default.dart'; import 'package:rkm/widgets/alert_dialog_default.dart';
import 'package:rkm/widgets/button_default.dart'; import 'package:rkm/widgets/button_default.dart';
import 'package:rkm/widgets/text_default.dart'; import 'package:rkm/widgets/text_default.dart';
import '../models/args_load_init_model.dart';
import '../service/api/api_data_load.dart'; import '../service/api/api_data_load.dart';
import '../service/db/db_sqlite_load.dart'; import '../service/db/db_sqlite_load.dart';
import '../service/shared_preferences/shared_preferences_service.dart'; import '../service/shared_preferences/shared_preferences_service.dart';
class LoadInitScreen extends StatefulWidget { class LoadInitScreen extends StatefulWidget {
ArgsLoadInitModel args;
LoadInitScreen({
required this.args,
});
@override @override
State<LoadInitScreen> createState() => _LoadInitScreenState(); State<LoadInitScreen> createState() => _LoadInitScreenState();
@@ -26,81 +20,97 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
String messageSteps = 'Aguarde ...'; String messageSteps = 'Aguarde ...';
bool finish = false; bool finish = false;
String idUsuario = ''; String idUsuario = '';
String mode = '';
String urlAPI = '';
bool loading = false;
String nameCityApi = '';
String user = '';
@override @override
void initState() { void initState() {
super.initState(); super.initState();
recupDB();
}
recupDB()async{
await DbSqliteLoad().intialDB().then((db)async{
List list = await db.query('ARGS');
urlAPI = list[0]['URLAPI'];
mode = list[0]['MODE'];
nameCityApi = list[0]['NAME_CITY_API'];
user = list[0]['USER'];
if(urlAPI!=''){
initLoading(); initLoading();
} }
});
}
initLoading()async{ initLoading()async{
await DbSqliteLoad().deleteLoad().then((_)async{ await ApiDataLoad().loadPerm(urlAPI,mode,nameCityApi,user).then((response)async{
await ApiDataLoad().loadPerm(widget.args).then((response)async{
if(response['status'] == 0){ if(response['status'] == 0){
AlertDialogDefault().alert(context, 'Erro', 'Permissão negada', 'Voltar'); AlertDialogDefault().alert(context, 'Erro', 'Permissão negada', 'Voltar');
} else if(response['status'] == 1 && response['load_perm'] == "S") { } else if(response['status'] == 1 && response['load_perm'] == "S") {
idUsuario = response['idUsuario'].toString(); idUsuario = response['idUsuario'].toString();
print('idUsuario $idUsuario'); print('idUsuario $idUsuario');
_prefService.createCacheidUsuario(idUsuario).then((value)async{ _prefService.createCacheidUsuario(idUsuario).then((value)async{
await ApiDataLoad().loadUnidades(widget.args).then((value)async{ await ApiDataLoad().loadUnidades(urlAPI,mode,nameCityApi,user).then((value)async{
if(value.length !=0){ if(value.length !=0){
setState(() { setState(() {
messageSteps = "Etapa 1 de 7 - Gravando as Unidades no Aplicativo"; messageSteps = "Etapa 1 de 7 - Gravando as Unidades no Aplicativo";
}); });
await DbSqliteLoad().saveUnidadesDB(value).then((value)async{ await DbSqliteLoad().saveUnidadesDB(value).then((value)async{
await ApiDataLoad().loadProcedimentos(widget.args).then((value)async{ await ApiDataLoad().loadProcedimentos(urlAPI,mode,nameCityApi,user).then((value)async{
setState(() { setState(() {
messageSteps = "Etapa 2 de 7 - Gravando os Procedimentos no Aplicativo"; messageSteps = "Etapa 2 de 7 - Gravando os Procedimentos no Aplicativo";
}); });
await DbSqliteLoad().saveProceduresDB(value).then((value)async{ await DbSqliteLoad().saveProceduresDB(value).then((value)async{
print('finalizou save Procedures'); print('finalizou save Procedures');
await ApiDataLoad().loadProcedimentosRegistros(widget.args).then((value)async{ await ApiDataLoad().loadProcedimentosRegistros(urlAPI,mode,nameCityApi,user).then((value)async{
await DbSqliteLoad().saveProceduresRegisterDB(value).then((value)async{ await DbSqliteLoad().saveProceduresRegisterDB(value).then((value)async{
print('finalizou saveProceduresRegisterDB'); print('finalizou saveProceduresRegisterDB');
await ApiDataLoad().loadCID(widget.args).then((value)async{ await ApiDataLoad().loadCID(urlAPI,mode,nameCityApi,user).then((value)async{
print('loadCID'); print('loadCID');
setState(() { setState(() {
messageSteps = "Etapa 3 de 7 - Gravando os CIDs no Aplicativo"; messageSteps = "Etapa 3 de 7 - Gravando os CIDs no Aplicativo";
}); });
await DbSqliteLoad().saveCID(value).then((value)async{ await DbSqliteLoad().saveCID(value).then((value)async{
print('finalizou saveCID'); print('finalizou saveCID');
await ApiDataLoad().loadProcedimentosCID(widget.args).then((value)async{ await ApiDataLoad().loadProcedimentosCID(urlAPI,mode,nameCityApi,user).then((value)async{
print('loadProcedimentosCID'); print('loadProcedimentosCID');
await DbSqliteLoad().saveProceduresCID(value).then((value)async{ await DbSqliteLoad().saveProceduresCID(value).then((value)async{
print('finalizou saveProceduresCID'); print('finalizou saveProceduresCID');
await ApiDataLoad().loadCBO(widget.args).then((value)async{ await ApiDataLoad().loadCBO(urlAPI,mode,nameCityApi,user).then((value)async{
print('loadCBO'); print('loadCBO');
setState(() { setState(() {
messageSteps = "Etapa 4 de 7 - Gravando os CBOs no Aplicativo"; messageSteps = "Etapa 4 de 7 - Gravando os CBOs no Aplicativo";
}); });
await DbSqliteLoad().saveCBO(value).then((value)async{ await DbSqliteLoad().saveCBO(value).then((value)async{
print('finalizou saveCBO'); print('finalizou saveCBO');
await ApiDataLoad().loadProcedimentosCBO(widget.args).then((value)async{ await ApiDataLoad().loadProcedimentosCBO(urlAPI,mode,nameCityApi,user).then((value)async{
print('loadProcedimentosCBO'); print('loadProcedimentosCBO');
await DbSqliteLoad().saveProceduresCBO(value).then((value)async{ await DbSqliteLoad().saveProceduresCBO(value).then((value)async{
print('finalizou saveProceduresCBO'); print('finalizou saveProceduresCBO');
await ApiDataLoad().loadCIAP(widget.args).then((value)async{ await ApiDataLoad().loadCIAP(urlAPI,mode,nameCityApi,user).then((value)async{
print('loadCIAP'); print('loadCIAP');
setState(() { setState(() {
messageSteps = "Etapa 5 de 7 - Gravando os CIAPs no Aplicativo"; messageSteps = "Etapa 5 de 7 - Gravando os CIAPs no Aplicativo";
}); });
await DbSqliteLoad().saveCIAP(value).then((value)async{ await DbSqliteLoad().saveCIAP(value).then((value)async{
print('finalizou saveCIAP'); print('finalizou saveCIAP');
await ApiDataLoad().loadMunicipios(widget.args).then((value)async{ await ApiDataLoad().loadMunicipios(urlAPI,mode,nameCityApi,user).then((value)async{
print('loadMunicipios'); print('loadMunicipios');
setState(() { setState(() {
messageSteps = "Etapa 6 de 7 - Gravando os Municípios no Aplicativo"; messageSteps = "Etapa 6 de 7 - Gravando os Municípios no Aplicativo";
}); });
await DbSqliteLoad().saveCity(value).then((value)async{ await DbSqliteLoad().saveCity(value).then((value)async{
print('finalizou saveCity'); print('finalizou saveCity');
await ApiDataLoad().loadEquipes(widget.args).then((value)async{ await ApiDataLoad().loadEquipes(urlAPI,mode,nameCityApi,user).then((value)async{
print('loadEquipes'); print('loadEquipes');
setState(() { setState(() {
messageSteps = "Etapa 7 de 7 - Gravando as Equipes no Aplicativo"; messageSteps = "Etapa 7 de 7 - Gravando as Equipes no Aplicativo";
}); });
await DbSqliteLoad().saveTeam(value).then((value)async{ await DbSqliteLoad().saveTeam(value).then((value)async{
print('finalizou saveTeam'); print('finalizou saveTeam');
await ApiDataLoad().loadEquipeComponentes(widget.args).then((value)async{ await ApiDataLoad().loadEquipeComponentes(urlAPI,mode,nameCityApi,user).then((value)async{
print('loadEquipeComponentes'); print('loadEquipeComponentes');
await DbSqliteLoad().saveTeamComponents(value).then((value)async{ await DbSqliteLoad().saveTeamComponents(value).then((value)async{
print('finalizou saveTeamComponents'); print('finalizou saveTeamComponents');
@@ -135,7 +145,6 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
}); });
} }
}); });
});
} }
@override @override
@@ -157,7 +166,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
onPressed: (){ onPressed: (){
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: widget.args)), MaterialPageRoute(builder: (context) => SyncLoginScreen()),
); );
}, },
title: 'Continuar', title: 'Continuar',

View File

@@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rkm/models/args_load_init_model.dart';
import 'package:rkm/service/api/url_api_const.dart'; import 'package:rkm/service/api/url_api_const.dart';
import 'package:rkm/utils/color_palette.dart'; import 'package:rkm/utils/color_palette.dart';
import 'package:rkm/utils/const_variable.dart'; import 'package:rkm/utils/const_variable.dart';
@@ -7,9 +6,9 @@ import 'package:rkm/widgets/button_default.dart';
import 'package:rkm/widgets/dropdown_button_city.dart'; import 'package:rkm/widgets/dropdown_button_city.dart';
import 'package:rkm/widgets/input_text.dart'; import 'package:rkm/widgets/input_text.dart';
import 'package:rkm/widgets/text_default.dart'; import 'package:rkm/widgets/text_default.dart';
import '../../models/city_load_model.dart';
import '../../service/api/api_data_load.dart'; import '../../service/api/api_data_load.dart';
import '../../service/api/encrypt_password.dart'; import '../../service/api/encrypt_password.dart';
import '../../service/db/db_sqlite_load.dart';
import '../../service/shared_preferences/shared_preferences_service.dart'; import '../../service/shared_preferences/shared_preferences_service.dart';
import '../load_init_screen.dart'; import '../load_init_screen.dart';
class LoginLoadScreen extends StatefulWidget { class LoginLoadScreen extends StatefulWidget {
@@ -28,13 +27,17 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
String? selectCity; String? selectCity;
bool validatorDropDown= false; bool validatorDropDown= false;
int contLogo = 0; int contLogo = 0;
String mode = 'desenvolvimento'; String mode = 'homologacao';
String urlAPI = UrlApiConst.ApiUrlDesenvolvimento; String urlAPI = UrlApiConst.ApiUrlHomologacao;
bool loading = false; bool loading = false;
String nameCityApi = '';
String nameCityFront = '';
String codState = '';
int codCity = 0;
int codCityIbge = 0;
final PrefService _prefService = PrefService(); final PrefService _prefService = PrefService();
checkLogin()async{ checkLogin()async{
CityLoadModel? model;
ArgsLoadInitModel? args;
if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){ if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){
if(selectCity!=null){ if(selectCity!=null){
_prefService.createCacheModel(inputUser.text,inputPassword.text,selectCity!,mode); _prefService.createCacheModel(inputUser.text,inputPassword.text,selectCity!,mode);
@@ -43,30 +46,34 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
loading = true; loading = true;
for(int i=0;ConstVariable().itensCity.length > i;i++){ for(int i=0;ConstVariable().itensCity.length > i;i++){
if(ConstVariable().itensCity[i].nameCityFront == selectCity!){ if(ConstVariable().itensCity[i].nameCityFront == selectCity!){
model = ConstVariable().itensCity[i]; nameCityApi = ConstVariable().itensCity[i].nameCityApi;
nameCityFront = ConstVariable().itensCity[i].nameCityFront;
codCityIbge = ConstVariable().itensCity[i].codCityIbge;
codCity = ConstVariable().itensCity[i].codCity;
codState = ConstVariable().itensCity[i].codState;
} }
} }
}); });
if(model!=null){ await ApiDataLoad().apiConect(urlAPI,mode,nameCityApi,inputUser.text).then((response) async {
args = ArgsLoadInitModel( print("erre : "+response.toString());
mode: mode, if(response == 'Erro' || response.toString() == 'Error: -902 - I/O error during "open" operation for file "/bases/conectasus/extrema/SISTEMA.FDB" Error while trying to open file No such file or directory'){
model:model!,
user: inputUser.text,
password: inputPassword.text,
urlAPI: urlAPI
);
}
if(args!=null){
await ApiDataLoad().apiConect(args!).then((response) async {
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
setState(() { setState(() {
error = 'Usuário bloqueado/senha incorreta'; loading = false;
error = 'Erro na conexão!Verifique sua internet\n ou a cidade que está selecionada!';
});
}else if(inputUser.text == inputPassword.text || response['bloqueio']==1){
setState(() {
loading = false;
error = 'Usuário bloqueado/usuário e/ou senha incorreta';
}); });
}else if(response['status']==0) { }else if(response['status']==0) {
setState(() { setState(() {
loading = false;
error = 'Usuário não encontrado'; error = 'Usuário não encontrado';
}); });
}else if(response['status']==1) { }else if(response['status']==1) {
print('aqui 1');
print(response);
setState((){ setState((){
error = ''; error = '';
}); });
@@ -76,14 +83,37 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
setState(() { setState(() {
loading = false; loading = false;
}); });
await DbSqliteLoad().deleteLoad().then((_)async {
DbSqliteLoad().saveArgs(
mode,
inputUser.text,
inputPassword.text,
urlAPI,
codCity,
nameCityApi,
nameCityFront,
codState,
codCityIbge).then((value) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => LoadInitScreen(args: args!)), MaterialPageRoute(
builder: (context) => LoadInitScreen()),
); );
} });
} });
}else{
setState(() {
loading = false;
error = 'Usuário bloqueado/senha incorreta';
}); });
} }
}else{
setState(() {
loading = false;
error = 'Falha de conexão com API';
});
}
});
}else{ }else{
setState(() { setState(() {
error = 'Selecione sua cidade'; error = 'Selecione sua cidade';
@@ -158,7 +188,6 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
InputText( InputText(
hint: 'Usuário', hint: 'Usuário',
label: inputUser.text.isNotEmpty?'':'Usuário', label: inputUser.text.isNotEmpty?'':'Usuário',
error: 'Campo obrigatório',
controller: inputUser, controller: inputUser,
width: width*0.6, width: width*0.6,
colorBorder: Colors.white, colorBorder: Colors.white,
@@ -167,7 +196,6 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
InputText( InputText(
hint: 'Senha', hint: 'Senha',
label: inputPassword.text.isNotEmpty?'':'Senha', label: inputPassword.text.isNotEmpty?'':'Senha',
error: 'Campo obrigatório',
obscure: true, obscure: true,
controller: inputPassword, controller: inputPassword,
width: width*0.6, width: width*0.6,
@@ -195,7 +223,10 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
width: width*0.6, width: width*0.6,
), ),
SizedBox(height: 10), SizedBox(height: 10),
TextDefault(text: error,color: ColorPalette.red), Padding(
padding: const EdgeInsets.symmetric(horizontal: 20.0),
child: TextDefault(text: error,color: ColorPalette.red,maxLines: 3),
),
], ],
), ),
), ),

View File

@@ -1,29 +1,20 @@
import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:rkm/models/args_load_init_model.dart';
import 'package:rkm/screens/home_screen.dart'; import 'package:rkm/screens/home_screen.dart';
import 'package:rkm/screens/login/sync_login_screen.dart'; import 'package:rkm/screens/login/sync_login_screen.dart';
import 'package:rkm/service/api/url_api_const.dart';
import 'package:rkm/service/db/db_sqlite_load.dart';
import 'package:rkm/utils/color_palette.dart'; import 'package:rkm/utils/color_palette.dart';
import 'package:rkm/utils/const_variable.dart'; import 'package:rkm/utils/const_variable.dart';
import 'package:rkm/widgets/button_default.dart'; import 'package:rkm/widgets/button_default.dart';
import 'package:rkm/widgets/dropdown_button_city.dart';
import 'package:rkm/widgets/input_text.dart'; import 'package:rkm/widgets/input_text.dart';
import 'package:rkm/widgets/text_default.dart'; import 'package:rkm/widgets/text_default.dart';
import 'package:sqflite/sqflite.dart';
import '../../models/city_load_model.dart';
import '../../service/api/api_data_load.dart'; import '../../service/api/api_data_load.dart';
import '../../service/api/encrypt_password.dart'; import '../../service/api/encrypt_password.dart';
import '../load_init_screen.dart'; import '../../service/db/db_sqlite_load.dart';
class LoginSavedScreen extends StatefulWidget { class LoginSavedScreen extends StatefulWidget {
List listControl; List listControl;
ArgsLoadInitModel args;
LoginSavedScreen({ LoginSavedScreen({
required this.listControl, required this.listControl,
required this.args
}); });
@override @override
@@ -39,23 +30,37 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
bool validatorDropDown= false; bool validatorDropDown= false;
int contLogo = 0; int contLogo = 0;
bool loading = false; bool loading = false;
String urlAPI='';
String mode = '';
String nameCityApi = '';
String nameCityFront = '';
int codCity = 0;
int codCityIbge = 0;
String codState = '';
recupDB()async{
await DbSqliteLoad().intialDB().then((db)async{
List list = await db.query('ARGS');
urlAPI = list[0]['URLAPI'];
mode = list[0]['MODE'];
nameCityApi = list[0]['NAME_CITY_API'];
nameCityFront = list[0]['NAME_CITY_FRONT'];
inputUser.text = list[0]['USER'];
inputPassword.text = list[0]['PASSWORD'];
codCity = list[0]['COD_CITY'];
codState = list[0]['COD_STATE'];
codCityIbge = list[0]['COD_IBGE'];
});
setState(() {});
}
checkLogin()async{ checkLogin()async{
ArgsLoadInitModel? args;
if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){ if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){
setState(() { setState(() {
error = ''; error = '';
loading = true; loading = true;
}); });
args = ArgsLoadInitModel( await ApiDataLoad().apiConect(urlAPI,mode,nameCityApi,inputUser.text).then((response) async {
mode: widget.args.mode,
model:widget.args.model,
user: inputUser.text,
password: inputPassword.text,
urlAPI: widget.args.urlAPI
);
if(args!=null){
await ApiDataLoad().apiConect(args!).then((response) async {
if(inputUser.text == inputPassword.text || response['bloqueio']==1){ if(inputUser.text == inputPassword.text || response['bloqueio']==1){
setState(() { setState(() {
error = 'Usuário bloqueado/senha incorreta'; error = 'Usuário bloqueado/senha incorreta';
@@ -71,6 +76,7 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
//verificar se a criptografia identificou se a senha está correta //verificar se a criptografia identificou se a senha está correta
if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){ if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){
// print(EncryptPassword().encrypt(inputPassword.text,response['userPass'])); // print(EncryptPassword().encrypt(inputPassword.text,response['userPass']));
DbSqliteLoad().updateArgs(mode, inputUser.text, inputPassword.text).then((value){
setState(() { setState(() {
loading = false; loading = false;
}); });
@@ -78,10 +84,10 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
context, context,
MaterialPageRoute(builder: (context) => HomeScreen()), MaterialPageRoute(builder: (context) => HomeScreen()),
); );
});
} }
} }
}); });
}
}else{ }else{
setState(() { setState(() {
error = 'Usuário/senha inválido(s)'; error = 'Usuário/senha inválido(s)';
@@ -89,6 +95,12 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
} }
} }
@override
void initState() {
super.initState();
recupDB();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -108,7 +120,7 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
onPressed: (){ onPressed: (){
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: widget.args)), MaterialPageRoute(builder: (context) => SyncLoginScreen()),
); );
} }
) )
@@ -125,8 +137,8 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Image.asset('assets/images/logo.PNG',width: width*0.4), Image.asset('assets/images/logo.PNG',width: width*0.4),
widget.args.mode == 'homologacao'?Image.asset('assets/images/homologacao.png',width: width*0.4):Container(), mode == 'homologacao'?Image.asset('assets/images/homologacao.png',width: width*0.4):Container(),
widget.args.mode == 'desenvolvimento'?Image.asset('assets/images/desenvolvimento.png',width: width*0.4):Container(), mode == 'desenvolvimento'?Image.asset('assets/images/desenvolvimento.png',width: width*0.4):Container(),
SizedBox(height: 10), SizedBox(height: 10),
loading?Center( loading?Center(
child: Column( child: Column(
@@ -147,7 +159,6 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
InputText( InputText(
hint: 'Usuário', hint: 'Usuário',
label: inputUser.text.isNotEmpty?'':'Usuário', label: inputUser.text.isNotEmpty?'':'Usuário',
error: 'Campo obrigatório',
controller: inputUser, controller: inputUser,
width: width*0.6, width: width*0.6,
colorBorder: Colors.white, colorBorder: Colors.white,
@@ -156,7 +167,6 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
InputText( InputText(
hint: 'Senha', hint: 'Senha',
label: inputPassword.text.isNotEmpty?'':'Senha', label: inputPassword.text.isNotEmpty?'':'Senha',
error: 'Campo obrigatório',
obscure: true, obscure: true,
controller: inputPassword, controller: inputPassword,
width: width*0.6, width: width*0.6,
@@ -210,7 +220,7 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
padding: EdgeInsets.symmetric(vertical: 5), padding: EdgeInsets.symmetric(vertical: 5),
width: width*0.6, width: width*0.6,
child: TextDefault( child: TextDefault(
text: 'Área: '+widget.listControl[0]['AREA'].toString(), text: 'Área: '+widget.listControl[0]['AREA'].toString()+' - Microárea: '+widget.listControl[0]['MICROAREA'].toString(),
fontWeigth: FontWeight.bold, fontWeigth: FontWeight.bold,
color: Colors.black, color: Colors.black,
textAlign: TextAlign.center, textAlign: TextAlign.center,

View File

@@ -1,28 +1,17 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:rkm/models/args_load_init_model.dart';
import 'package:rkm/screens/sync_init_screen.dart'; import 'package:rkm/screens/sync_init_screen.dart';
import 'package:rkm/service/api/url_api_const.dart';
import 'package:rkm/utils/color_palette.dart'; import 'package:rkm/utils/color_palette.dart';
import 'package:rkm/utils/const_variable.dart'; import 'package:rkm/utils/const_variable.dart';
import 'package:rkm/widgets/button_default.dart'; import 'package:rkm/widgets/button_default.dart';
import 'package:rkm/widgets/dropdown_button_city.dart';
import 'package:rkm/widgets/dropdown_button_default.dart'; import 'package:rkm/widgets/dropdown_button_default.dart';
import 'package:rkm/widgets/input_text.dart'; import 'package:rkm/widgets/input_text.dart';
import 'package:rkm/widgets/text_default.dart'; import 'package:rkm/widgets/text_default.dart';
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import '../../models/city_load_model.dart';
import '../../service/api/api_data_load.dart'; import '../../service/api/api_data_load.dart';
import '../../service/api/encrypt_password.dart'; import '../../service/api/encrypt_password.dart';
import '../../service/db/db_sqlite_load.dart'; import '../../service/db/db_sqlite_load.dart';
import '../../service/shared_preferences/shared_preferences_service.dart'; import '../../service/shared_preferences/shared_preferences_service.dart';
import '../load_init_screen.dart';
class SyncLoginScreen extends StatefulWidget { class SyncLoginScreen extends StatefulWidget {
ArgsLoadInitModel args;
SyncLoginScreen({
required this.args
});
@override @override
State<SyncLoginScreen> createState() => _SyncLoginScreenState(); State<SyncLoginScreen> createState() => _SyncLoginScreenState();
@@ -39,17 +28,30 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
bool validatorDropDown= false; bool validatorDropDown= false;
bool citizenOutArea = false; bool citizenOutArea = false;
int contLogo = 0; int contLogo = 0;
String mode = 'desenvolvimento'; String mode = '';
String urlAPI = UrlApiConst.ApiUrlDesenvolvimento; String urlAPI = '';
String nameCityApi = '';
bool loading = false; bool loading = false;
List<String> listUnit=[]; List<String> listUnit=[];
List searchUnitCodList=[]; List searchUnitCodList=[];
List<String> listTeam = []; List<String> listTeam = [];
String idUnidade =''; String idUnidade ='';
String idUsuario =''; String idUsuario ='1';
final PrefService _prefService = PrefService(); final PrefService _prefService = PrefService();
recupDB()async{
await DbSqliteLoad().intialDB().then((db)async{
List list = await db.query('ARGS');
urlAPI = list[0]['URLAPI'];
mode = list[0]['MODE'];
nameCityApi = list[0]['NAME_CITY_API'];
inputUser.text = list[0]['USER'];
inputPassword.text = list[0]['PASSWORD'];
});
setState(() {});
}
checkLogin()async{ checkLogin()async{
if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){ if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){
if(selectUnit!=null){ if(selectUnit!=null){
@@ -58,7 +60,7 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
loading = true; loading = true;
}); });
await ApiDataLoad().apiConect(widget.args!).then((response) async { await ApiDataLoad().apiConect(urlAPI,mode,nameCityApi,inputUser.text).then((response) async {
if(inputUser.text == inputPassword.text || response['bloqueio']==1){ if(inputUser.text == inputPassword.text || response['bloqueio']==1){
setState(() { setState(() {
error = 'Usuário bloqueado/senha incorreta'; error = 'Usuário bloqueado/senha incorreta';
@@ -75,19 +77,14 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
setState(() { setState(() {
loading = false; loading = false;
}); });
ArgsLoadInitModel?args = ArgsLoadInitModel(
mode: mode,
model:widget.args.model,
user: inputUser.text,
password: inputPassword.text,
urlAPI: urlAPI
);
_prefService.createCacheSync(selectTeam!, citizenOutArea).then((value){ _prefService.createCacheSync(selectTeam!, citizenOutArea).then((value){
DbSqliteLoad().updateArgs(mode, inputUser.text, inputPassword.text).then((value) {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => SyncInitScreen(args: args)), MaterialPageRoute(builder: (context) => SyncInitScreen()),
); );
}); });
});
} }
} }
}); });
@@ -106,13 +103,9 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
setState(() { recupDB();
mode = widget.args.mode;
inputUser.text = widget.args.user;
inputPassword.text = widget.args.password;
});
getUnit(); getUnit();
getUser(); // getUser();
} }
getUser(){ getUser(){
_prefService.readCacheIdUsuario('idUsuario').then((value){ _prefService.readCacheIdUsuario('idUsuario').then((value){
@@ -136,24 +129,28 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
} }
getTeam()async{ getTeam()async{
Database db = await DbSqliteLoad().intialDB();
for(int i=0; listUnit.length > i;i++){ for(int i=0; listUnit.length > i;i++){
if(listUnit[i] == selectUnit){ if(listUnit[i] == selectUnit){
idUnidade = searchUnitCodList[i].toString(); idUnidade = searchUnitCodList[i].toString();
_prefService.createCacheidUnidade(idUnidade); _prefService.createCacheUnidade(idUnidade,selectUnit!);
} }
} }
if(idUnidade!=''){ if(idUnidade!=''){
Database db = await DbSqliteLoad().intialDB(); print('idUnidade');
print(idUnidade);
print('idUsuario');
print(idUsuario);
var query = "SELECT * FROM EQUIPES JOIN PROFISSIONAIS_EQUIPE ON PROFISSIONAIS_EQUIPE.ID_EQUIPE = EQUIPES.ID_EQUIPE WHERE ID_UNIDADE = $idUnidade AND ID_PROFISSIONAL = $idUsuario"; var query = "SELECT * FROM EQUIPES JOIN PROFISSIONAIS_EQUIPE ON PROFISSIONAIS_EQUIPE.ID_EQUIPE = EQUIPES.ID_EQUIPE WHERE ID_UNIDADE = $idUnidade AND ID_PROFISSIONAL = $idUsuario";
List list = await db.rawQuery(query); List list = await db.rawQuery(query);
listTeam.clear(); listTeam.clear();
for(int i=0; list.length > i;i++){ for(int i=0; list.length > i;i++){
listTeam.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}'); listTeam.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}');
} }
// print('getEquipes');
// print(listTeam);
setState(() {}); setState(() {});
} }
print('listTeam');
print(listTeam);
} }
@override @override
@@ -200,7 +197,6 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
InputText( InputText(
hint: 'Usuário', hint: 'Usuário',
label: inputUser.text.isNotEmpty?'':'Usuário', label: inputUser.text.isNotEmpty?'':'Usuário',
error: 'Campo obrigatório',
controller: inputUser, controller: inputUser,
width: width*0.6, width: width*0.6,
colorBorder: Colors.white, colorBorder: Colors.white,
@@ -209,7 +205,6 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
InputText( InputText(
hint: 'Senha', hint: 'Senha',
label: inputPassword.text.isNotEmpty?'':'Senha', label: inputPassword.text.isNotEmpty?'':'Senha',
error: 'Campo obrigatório',
obscure: true, obscure: true,
controller: inputPassword, controller: inputPassword,
width: width*0.6, width: width*0.6,
@@ -266,7 +261,8 @@ class _SyncLoginScreenState extends State<SyncLoginScreen> {
padding: EdgeInsets.symmetric(vertical: 5), padding: EdgeInsets.symmetric(vertical: 5),
width: width*0.6, width: width*0.6,
child: TextDefault( child: TextDefault(
text: 'Cidade Sincronizada: ${widget.args.model.nameCityFront!=''?widget.args.model.nameCityFront:''}', text: '',
// text: 'Cidade Sincronizada: ${widget.args!.model.nameCityFront!=''?widget.args!.model.nameCityFront:''}',
fontWeigth: FontWeight.bold, fontWeigth: FontWeight.bold,
fontSize: 18, fontSize: 18,
color: Colors.black, color: Colors.black,

View File

@@ -1,87 +0,0 @@
import 'package:flutter/material.dart';
import 'package:rkm/screens/registers_citizen/register_citizen_screen.dart';
import 'package:rkm/screens/register_home_screen.dart';
import 'package:rkm/screens/registers_citizen/register_individual_screen.dart';
import 'package:rkm/utils/color_palette.dart';
import 'package:rkm/widgets/text_default.dart';
import '../../widgets/alert_dialog_settings.dart';
import '../../widgets/icon_button_default.dart';
class MainRegisterCitizenScreen extends StatefulWidget {
int screens;
MainRegisterCitizenScreen({
required this.screens
});
@override
State<MainRegisterCitizenScreen> createState() => _MainRegisterCitizenScreenState();
}
class _MainRegisterCitizenScreenState extends State<MainRegisterCitizenScreen> {
int index = 1;
TabBar get _tabBar => TabBar(
labelColor: index==1?ColorPalette.gray:ColorPalette.blackButton,
unselectedLabelColor: ColorPalette.gray,
indicatorColor: ColorPalette.white,
tabs: [
Tab(text: 'Cadastro Cidadão',icon: Icon(Icons.person),iconMargin: EdgeInsets.zero,height: 50,),
Tab(text: 'Cadastro Individual',icon: Icon(Icons.article),iconMargin: EdgeInsets.zero,height: 40,),
Tab(text: 'Cadastro Domiciliar',icon: Icon(Icons.home),iconMargin: EdgeInsets.zero,height: 40,)
],
);
updateIndex(){
setState(() {
index = widget.screens;
});
}
@override
void initState() {
super.initState();
updateIndex();
}
@override
Widget build(BuildContext context) =>DefaultTabController(
length: index,
child: Scaffold(
appBar: AppBar(
title: TextDefault(text: 'RKM AB - Cadastro Cidadão',color: ColorPalette.white,),
centerTitle: true,
actions: [
IconButtonDefault(
icon: Icons.settings,
color: ColorPalette.white,
onPressed: ()=>AlertDialogSettings().alert(context)
),
IconButtonDefault(
icon: Icons.logout,
color: ColorPalette.white,
onPressed: ()=>Navigator.pushNamedAndRemoveUntil(context, '/login',(Route<dynamic> route) => false)),
],
bottom: PreferredSize(
preferredSize: _tabBar.preferredSize,
child: Material(
color: ColorPalette.white, //<-- SEE HERE
child: _tabBar,
),
),
),
body:index==1 ?
TabBarView(
children: [
RegisterCitizenScreen(),
],
):TabBarView(
children: [
RegisterCitizenScreen(),
RegisterIndividualScreen(),
RegisterHomeScreen(),
],
),
)
);
}

File diff suppressed because it is too large Load Diff

View File

@@ -5,11 +5,13 @@ import 'package:rkm/utils/const_variable.dart';
import 'package:rkm/widgets/alert_dialog_default.dart'; import 'package:rkm/widgets/alert_dialog_default.dart';
import 'package:rkm/widgets/button_default.dart'; import 'package:rkm/widgets/button_default.dart';
import 'package:rkm/widgets/title_containers.dart'; import 'package:rkm/widgets/title_containers.dart';
import '../widgets/dropdown_with_subtitle.dart'; import '../../widgets/appbar_default.dart';
import '../widgets/input_with_subtitle.dart'; import '../../widgets/dropdown_with_subtitle.dart';
import '../widgets/onbackbutton.dart'; import '../../widgets/input_with_subtitle.dart';
import '../widgets/switch_with_subtitle.dart'; import '../../widgets/onbackbutton.dart';
import '../widgets/text_default.dart'; import '../../widgets/subtitle_appbar_citizen.dart';
import '../../widgets/switch_with_subtitle.dart';
import '../../widgets/text_default.dart';
class RegisterHomeScreen extends StatefulWidget { class RegisterHomeScreen extends StatefulWidget {
const RegisterHomeScreen({Key? key}) : super(key: key); const RegisterHomeScreen({Key? key}) : super(key: key);
@@ -162,12 +164,14 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
return WillPopScope( return WillPopScope(
onWillPop: ()=> OnBackButton().onBackButton(context), onWillPop: ()=> OnBackButton().onBackButton(context),
child: Scaffold( child: Scaffold(
appBar: AppBarDefault().appbar(context, 'RKM AB - Cadastro Domiciliar'),
body: Container( body: Container(
height: double.infinity, height: double.infinity,
width: double.infinity, width: double.infinity,
decoration: ConstVariable().backgroundGradient, decoration: ConstVariable().backgroundGradient,
child: ListView( child: ListView(
children: [ children: [
SubtitleAppbarCitizen(title: 3,edit: true),
Card( Card(
margin: EdgeInsets.all(10), margin: EdgeInsets.all(10),
child: Padding( child: Padding(
@@ -295,7 +299,8 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
labelInput: 'Moradores', labelInput: 'Moradores',
widthSubtitle: width*0.4, widthSubtitle: width*0.4,
widthInput: width*0.7, widthInput: width*0.7,
controller: controllerResidents controller: controllerResidents,
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
subtitle: 'Cômodos', subtitle: 'Cômodos',
@@ -304,7 +309,8 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
labelInput: 'Cômodos', labelInput: 'Cômodos',
widthSubtitle: width*0.4, widthSubtitle: width*0.4,
widthInput: width*0.7, widthInput: width*0.7,
controller: controllerComfortable controller: controllerComfortable,
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
list:[], list:[],
@@ -419,7 +425,8 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
labelInput: 'Quantidade', labelInput: 'Quantidade',
widthSubtitle: width*0.4, widthSubtitle: width*0.4,
widthInput: width*0.7, widthInput: width*0.7,
controller: controllerAmount controller: controllerAmount,
onChanged: (v)=>setState((){}),
), ),
], ],
) )
@@ -454,6 +461,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
widthInput: width*0.7, widthInput: width*0.7,
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
controller: unitProfessionalController, controller: unitProfessionalController,
@@ -463,6 +471,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
widthInput: width*0.7, widthInput: width*0.7,
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
subtitle: 'CBO', subtitle: 'CBO',
@@ -501,6 +510,7 @@ class _RegisterHomeScreenState extends State<RegisterHomeScreen> {
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
], ],
), ),

View File

@@ -6,10 +6,12 @@ import 'package:rkm/utils/const_variable.dart';
import 'package:rkm/widgets/alert_dialog_default.dart'; import 'package:rkm/widgets/alert_dialog_default.dart';
import 'package:rkm/widgets/button_default.dart'; import 'package:rkm/widgets/button_default.dart';
import 'package:rkm/widgets/title_containers.dart'; import 'package:rkm/widgets/title_containers.dart';
import '../../widgets/appbar_default.dart';
import '../../widgets/check_box_two_subtitle.dart'; import '../../widgets/check_box_two_subtitle.dart';
import '../../widgets/dropdown_with_subtitle.dart'; import '../../widgets/dropdown_with_subtitle.dart';
import '../../widgets/input_with_subtitle.dart'; import '../../widgets/input_with_subtitle.dart';
import '../../widgets/onbackbutton.dart'; import '../../widgets/onbackbutton.dart';
import '../../widgets/subtitle_appbar_citizen.dart';
import '../../widgets/switch_with_subtitle.dart'; import '../../widgets/switch_with_subtitle.dart';
import '../../widgets/text_default.dart'; import '../../widgets/text_default.dart';
class RegisterIndividualScreen extends StatefulWidget { class RegisterIndividualScreen extends StatefulWidget {
@@ -145,12 +147,14 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
return WillPopScope( return WillPopScope(
onWillPop: ()=> OnBackButton().onBackButton(context), onWillPop: ()=> OnBackButton().onBackButton(context),
child: Scaffold( child: Scaffold(
appBar: AppBarDefault().appbar(context, 'RKM AB - Cadastro Individual'),
body: Container( body: Container(
height: double.infinity, height: double.infinity,
width: double.infinity, width: double.infinity,
decoration: ConstVariable().backgroundGradient, decoration: ConstVariable().backgroundGradient,
child: ListView( child: ListView(
children: [ children: [
SubtitleAppbarCitizen(title: 2,edit: true),
Card( Card(
margin: EdgeInsets.all(10), margin: EdgeInsets.all(10),
child: Padding( child: Padding(
@@ -255,6 +259,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.2, widthSubtitle: width*0.2,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: enableSpouse, enable: enableSpouse,
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
list: [], list: [],
@@ -279,6 +284,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.2, widthSubtitle: width*0.2,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: enableSpouse, enable: enableSpouse,
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
controller: enterBrazilController, controller: enterBrazilController,
@@ -289,6 +295,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.2, widthSubtitle: width*0.2,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: enableSpouse, enable: enableSpouse,
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
controller: dateNaturalnessController, controller: dateNaturalnessController,
@@ -299,6 +306,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.2, widthSubtitle: width*0.2,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: enableSpouse, enable: enableSpouse,
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
controller: porterNaturalnessController, controller: porterNaturalnessController,
@@ -309,6 +317,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.2, widthSubtitle: width*0.2,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: enableSpouse, enable: enableSpouse,
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
list:['SUPERIOR, APERFEIÇAOMENTO,ESPECIAL'], list:['SUPERIOR, APERFEIÇAOMENTO,ESPECIAL'],
@@ -440,6 +449,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.2, widthSubtitle: width*0.2,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: enableSpouse, enable: enableSpouse,
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
list: ['NÃO DESEJA INFORMAR'], list: ['NÃO DESEJA INFORMAR'],
@@ -560,6 +570,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.2, widthSubtitle: width*0.2,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: enableSpouse, enable: enableSpouse,
onChanged: (v)=>setState((){}),
), ),
SwitchWithSubtitle( SwitchWithSubtitle(
width: width*0.7, width: width*0.7,
@@ -621,6 +632,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
list: [], list: [],
@@ -789,6 +801,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
subtitle: 'Doença Cardíaca', subtitle: 'Doença Cardíaca',
@@ -899,6 +912,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
controller: otherCondicionsController, controller: otherCondicionsController,
@@ -909,6 +923,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
], ],
), ),
@@ -974,6 +989,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
SwitchWithSubtitle( SwitchWithSubtitle(
width: width*0.7, width: width*0.7,
@@ -1023,6 +1039,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
subtitle: 'Alimentação Diária', subtitle: 'Alimentação Diária',
@@ -1132,6 +1149,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthInput: width*0.7, widthInput: width*0.7,
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
controller: unitProfessionalController, controller: unitProfessionalController,
@@ -1141,6 +1159,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthInput: width*0.7, widthInput: width*0.7,
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
subtitle: 'CBO', subtitle: 'CBO',
@@ -1179,6 +1198,7 @@ class _RegisterIndividualScreenState extends State<RegisterIndividualScreen> {
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
], ],
), ),

View File

@@ -101,6 +101,7 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
controller: unitController, controller: unitController,
@@ -111,6 +112,7 @@ class _ServiceHomeScreenState extends State<ServiceHomeScreen> {
widthSubtitle: width*0.7, widthSubtitle: width*0.7,
hintInput: 'Escreva aqui', hintInput: 'Escreva aqui',
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
list: [], list: [],

View File

@@ -214,6 +214,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
widthInput: width*0.7, widthInput: width*0.7,
controller: weigthController, controller: weigthController,
colorBorder: ColorPalette.white, colorBorder: ColorPalette.white,
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
subtitle: 'Altura (em metros - 0,00)', subtitle: 'Altura (em metros - 0,00)',
@@ -224,6 +225,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
widthInput: width*0.7, widthInput: width*0.7,
controller: heightController, controller: heightController,
colorBorder: ColorPalette.white, colorBorder: ColorPalette.white,
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
subtitle: 'Perímetro cefálico (em centímetros - 000,00)', subtitle: 'Perímetro cefálico (em centímetros - 000,00)',
@@ -234,6 +236,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
widthInput: width*0.7, widthInput: width*0.7,
controller: cephalicPerimeterController, controller: cephalicPerimeterController,
colorBorder: ColorPalette.white, colorBorder: ColorPalette.white,
onChanged: (v)=>setState((){}),
), ),
SwitchWithSubtitle( SwitchWithSubtitle(
width: width*0.7, width: width*0.7,
@@ -285,6 +288,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
controller: userResponsibleRegisterController, controller: userResponsibleRegisterController,
colorBorder: ColorPalette.white, colorBorder: ColorPalette.white,
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
subtitle: 'Unidade do Profissional', subtitle: 'Unidade do Profissional',
@@ -296,6 +300,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
controller: userUnitController, controller: userUnitController,
colorBorder: ColorPalette.white, colorBorder: ColorPalette.white,
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
DropdownWithSubtitle( DropdownWithSubtitle(
list: [], list: [],
@@ -356,6 +361,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
controller: dumController, controller: dumController,
colorBorder: ColorPalette.white, colorBorder: ColorPalette.white,
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
SwitchWithSubtitle( SwitchWithSubtitle(
onChanged: (value){}, onChanged: (value){},
@@ -373,6 +379,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
controller: oldPregnancyController, controller: oldPregnancyController,
colorBorder: ColorPalette.white, colorBorder: ColorPalette.white,
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
InputWithSubtitle( InputWithSubtitle(
subtitle: 'Partos', subtitle: 'Partos',
@@ -384,6 +391,7 @@ class _ServiceIndividualScreenState extends State<ServiceIndividualScreen> {
controller: childBirthsController, controller: childBirthsController,
colorBorder: ColorPalette.white, colorBorder: ColorPalette.white,
enable: false, enable: false,
onChanged: (v)=>setState((){}),
), ),
], ],
) )

View File

@@ -1,7 +1,5 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rkm/models/args_load_init_model.dart';
import 'package:rkm/models/city_load_model.dart';
import 'package:rkm/screens/login/sync_login_screen.dart'; import 'package:rkm/screens/login/sync_login_screen.dart';
import 'package:rkm/service/api/url_api_const.dart'; import 'package:rkm/service/api/url_api_const.dart';
import 'package:rkm/utils/const_variable.dart'; import 'package:rkm/utils/const_variable.dart';
@@ -18,20 +16,19 @@ class SplashScreen extends StatefulWidget {
class _SplashScreenState extends State<SplashScreen> { class _SplashScreenState extends State<SplashScreen> {
CityLoadModel? model;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
DbSqliteLoad().intialDB(); DbSqliteLoad().intialDB().then((value){
final PrefService _prefService = PrefService(); final PrefService _prefService = PrefService();
_prefService.readCacheModel('user', 'password', 'city', 'mode').then((list){ _prefService.readCacheModel('user', 'password', 'city', 'mode').then((list){
for(int i=0;ConstVariable().itensCity.length > i;i++){ if(list[0] == null){
if(ConstVariable().itensCity[i].nameCityFront == list[2]!){ Navigator.pushReplacementNamed(context, '/login_load');
model = ConstVariable().itensCity[i]; }else{
}
}
timer(list); timer(list);
}
});
}); });
} }
@@ -42,39 +39,25 @@ class _SplashScreenState extends State<SplashScreen> {
if(dataControl.length != 0){ if(dataControl.length != 0){
var query = "SELECT * FROM CONTROLE_INTERNO"; var query = "SELECT * FROM CONTROLE_INTERNO";
dataControl = await db.rawQuery(query); dataControl = await db.rawQuery(query);
// print(dataCitizen);
if(dataCitizen.length != 0){
String? url; String? url;
if(list[3]=='desenvolvimento'){ if(list[3]=='desenvolvimento'){
url = UrlApiConst.ApiUrlDesenvolvimento; url = UrlApiConst.ApiUrlDesenvolvimento;
}else if(list[3]=='online'){
url = UrlApiConst.ApiUrlOnline;
}else if(list[3]=='homologacao'){ }else if(list[3]=='homologacao'){
url = UrlApiConst.ApiUrlHomologacao; url = UrlApiConst.ApiUrlHomologacao;
}else{
url = UrlApiConst.ApiUrlOnline;
} }
ArgsLoadInitModel args = ArgsLoadInitModel(mode: list[3], model: model!, user: list[0], password: list[1], urlAPI: url!); if(dataCitizen.length != 0){
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => LoginSavedScreen(listControl: dataControl,args: args,)), MaterialPageRoute(builder: (context) => LoginSavedScreen(listControl: dataControl,)),
); );
}else{ }else{
String? url;
if(list[3]=='desenvolvimento'){
url = UrlApiConst.ApiUrlDesenvolvimento;
}else if(list[3]=='online'){
url = UrlApiConst.ApiUrlOnline;
}else if(list[3]=='homologacao'){
url = UrlApiConst.ApiUrlHomologacao;
}
if(url!=null && model!=null){
ArgsLoadInitModel args = ArgsLoadInitModel(mode: list[3], model: model!, user: list[0], password: list[1], urlAPI: url!);
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: args)), MaterialPageRoute(builder: (context) => SyncLoginScreen()),
); );
} }
}
}else{ }else{
Navigator.pushReplacementNamed(context, '/login_load'); Navigator.pushReplacementNamed(context, '/login_load');
} }

View File

@@ -6,17 +6,10 @@ import 'package:rkm/utils/color_palette.dart';
import 'package:rkm/widgets/alert_dialog_default.dart'; import 'package:rkm/widgets/alert_dialog_default.dart';
import 'package:rkm/widgets/button_default.dart'; import 'package:rkm/widgets/button_default.dart';
import 'package:rkm/widgets/text_default.dart'; import 'package:rkm/widgets/text_default.dart';
import '../models/args_load_init_model.dart';
import '../service/api/api_data_load.dart';
import '../service/db/db_sqlite_load.dart'; import '../service/db/db_sqlite_load.dart';
import '../service/shared_preferences/shared_preferences_service.dart'; import '../service/shared_preferences/shared_preferences_service.dart';
class SyncInitScreen extends StatefulWidget { class SyncInitScreen extends StatefulWidget {
ArgsLoadInitModel args;
SyncInitScreen({
required this.args,
});
@override @override
State<SyncInitScreen> createState() => _SyncInitScreenState(); State<SyncInitScreen> createState() => _SyncInitScreenState();
@@ -29,24 +22,51 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
bool finish = false; bool finish = false;
String idUsuario = ''; String idUsuario = '';
String idUnidade = ''; String idUnidade = '';
String nomeUnidade = '';
String area = ''; String area = '';
String microarea = ''; String microarea = '';
bool foraArea = false; bool foraArea = false;
String urlAPI='';
String mode = '';
String nameCityApi = '';
String nameCityFront = '';
String user = '';
int codCity = 0;
int codCityIbge = 0;
String codState = '';
@override @override
void initState() { void initState() {
super.initState(); super.initState();
recupDB();
}
recupDB()async{
await DbSqliteLoad().intialDB().then((db)async{
List list = await db.query('ARGS');
urlAPI = list[0]['URLAPI'];
mode = list[0]['MODE'];
nameCityApi = list[0]['NAME_CITY_API'];
nameCityFront = list[0]['NAME_CITY_FRONT'];
user = list[0]['USER'];
codCity = list[0]['COD_CITY'];
codState = list[0]['COD_STATE'];
codCityIbge = list[0]['COD_IBGE'];
if(urlAPI!=''){
dataUser(); dataUser();
} }
});
}
dataUser()async{ dataUser()async{
_prefService.readCacheIdUnidade('idUnidade').then((id)async{ _prefService.readCacheUnidade('idUnidade').then((listUnidade)async{
_prefService.readCacheSync('area', false).then((list){ _prefService.readCacheSync('area', false).then((list){
foraArea = list[1]; foraArea = list[1];
List splited = list[0].split(': '); List splited = list[0].split(': ');
area = splited[2].toString().substring(0,1); area = splited[2].toString().substring(0,1);
microarea = splited[3]; microarea = splited[3];
idUnidade = id; idUnidade = listUnidade[0];
nomeUnidade = listUnidade[1];
initSync(); initSync();
}); });
}); });
@@ -54,75 +74,75 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
initSync()async{ initSync()async{
await DbSqliteSync().deleteSync().then((_)async{ await DbSqliteSync().deleteSync().then((_)async{
await ApiDataSync().syncPerm(widget.args).then((response)async{ await ApiDataSync().syncPerm(urlAPI,mode,nameCityApi,user).then((response)async{
if(response['status'] == 0 || response['sync_perm'] != "S"){ if(response['status'] == 0 || response['sync_perm'] != "S"){
AlertDialogDefault().alert(context, 'Erro', 'Usuário sem permissão para Sincronização de Unidade!', 'Voltar'); AlertDialogDefault().alert(context, 'Erro', 'Usuário sem permissão para Sincronização de Unidade!', 'Voltar');
}else{ }else{
setState(()=> messageSteps = "Etapa 1 de 10 - Importando informações do CONECTASUS"); setState(()=> messageSteps = "Etapa 1 de 10 - Importando informações do CONECTASUS");
await ApiDataSync().syncBairros(widget.args).then((value)async{ await ApiDataSync().syncBairros(urlAPI,mode,nameCityApi,user).then((value)async{
if(value.length == 0){ if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Bairros - Por favor, tente novamente!"); setState(()=> messageSteps = "ERRO: Erro para carregar os Bairros - Por favor, tente novamente!");
}else{ }else{
setState(()=> messageSteps = "Etapa 2 de 10 - Gravando os Bairros no Aplicativo"); setState(()=> messageSteps = "Etapa 2 de 10 - Gravando os Bairros no Aplicativo");
} }
await DbSqliteSync().insertBairros(value).then((value)async{ await DbSqliteSync().insertBairros(value).then((value)async{
await ApiDataSync().syncTiposLogradouros(widget.args).then((value)async{ await ApiDataSync().syncTiposLogradouros(urlAPI,mode,nameCityApi,user).then((value)async{
if(value.length == 0){ if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Tipos de Logradouros - Por favor, tente novamente!"); setState(()=> messageSteps = "ERRO: Erro para carregar os Tipos de Logradouros - Por favor, tente novamente!");
}else{ }else{
setState(()=> messageSteps = "Etapa 3 de 10 - Gravando os Tipos de Logradouros no Aplicativo"); setState(()=> messageSteps = "Etapa 3 de 10 - Gravando os Tipos de Logradouros no Aplicativo");
} }
await DbSqliteSync().insertTiposLogradouros(value).then((value)async{ await DbSqliteSync().insertTiposLogradouros(value).then((value)async{
await ApiDataSync().syncLogradouros(widget.args).then((value)async{ await ApiDataSync().syncLogradouros(urlAPI,mode,nameCityApi,user).then((value)async{
if(value.length == 0){ if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Logradouros - Por favor, tente novamente!"); setState(()=> messageSteps = "ERRO: Erro para carregar os Logradouros - Por favor, tente novamente!");
}else{ }else{
setState(()=> messageSteps = "Etapa 4 de 10 - Gravando os Logradouros no Aplicativo"); setState(()=> messageSteps = "Etapa 4 de 10 - Gravando os Logradouros no Aplicativo");
} }
await DbSqliteSync().insertLogradouros(value).then((value)async{ await DbSqliteSync().insertLogradouros(value).then((value)async{
await ApiDataSync().syncLoteamentos(widget.args).then((value)async{ await ApiDataSync().syncLoteamentos(urlAPI,mode,nameCityApi,user).then((value)async{
if(value.length == 0){ if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Loteamentos - Por favor, tente novamente!"); setState(()=> messageSteps = "ERRO: Erro para carregar os Loteamentos - Por favor, tente novamente!");
}else{ }else{
setState(()=> messageSteps = "Etapa 5 de 10 - Gravando os Loteamentos no Aplicativo"); setState(()=> messageSteps = "Etapa 5 de 10 - Gravando os Loteamentos no Aplicativo");
} }
await DbSqliteSync().insertLoteamentos(value).then((value)async{ await DbSqliteSync().insertLoteamentos(value).then((value)async{
await ApiDataSync().syncProfissionais(widget.args,idUnidade).then((value)async{ await ApiDataSync().syncProfissionais(urlAPI,mode,nameCityApi,user,idUnidade).then((value)async{
if(value.length == 0){ if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Profissionais - Por favor, tente novamente!"); setState(()=> messageSteps = "ERRO: Erro para carregar os Profissionais - Por favor, tente novamente!");
}else{ }else{
setState(()=> messageSteps = "Etapa 6 de 10 - Gravando os Profissionais no Aplicativo"); setState(()=> messageSteps = "Etapa 6 de 10 - Gravando os Profissionais no Aplicativo");
} }
await DbSqliteSync().insertProfissionais(value).then((value)async{ await DbSqliteSync().insertProfissionais(value).then((value)async{
await ApiDataSync().syncProfissionaisCBOs(widget.args,idUnidade).then((value)async{ await ApiDataSync().syncProfissionaisCBOs(urlAPI,mode,nameCityApi,user,idUnidade).then((value)async{
if(value.length == 0){ if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os CBOs dos Profissionais - Por favor, tente novamente!"); setState(()=> messageSteps = "ERRO: Erro para carregar os CBOs dos Profissionais - Por favor, tente novamente!");
}else{ }else{
setState(()=> messageSteps = "Etapa 7 de 10 - Gravando os CBO´s dos Profissionais no Aplicativo"); setState(()=> messageSteps = "Etapa 7 de 10 - Gravando os CBO´s dos Profissionais no Aplicativo");
} }
await DbSqliteSync().insertProfissionaisCBOs(value).then((value)async{ await DbSqliteSync().insertProfissionaisCBOs(value).then((value)async{
await ApiDataSync().syncCidadaos(widget.args,idUnidade,area,microarea,foraArea).then((value)async{ await ApiDataSync().syncCidadaos(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea).then((value)async{
if(value.length == 0){ if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros dos Cidadãos - Por favor, tente novamente!"); setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros dos Cidadãos - Por favor, tente novamente!");
}else{ }else{
setState(()=> messageSteps = "Etapa 8 de 10 - Gravando os Cidadãos no Aplicativo"); setState(()=> messageSteps = "Etapa 8 de 10 - Gravando os Cidadãos no Aplicativo");
} }
await DbSqliteSync().insertCidadaos(value).then((value)async{ await DbSqliteSync().insertCidadaos(value,'sync').then((value)async{
await ApiDataSync().syncCadastrosDomiciliares(widget.args,idUnidade,area,microarea,foraArea).then((value)async{ await ApiDataSync().syncCadastrosDomiciliares(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea).then((value)async{
if(value.length == 0){ if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros Domiciliares - Por favor, tente novamente!"); setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros Domiciliares - Por favor, tente novamente!");
}else{ }else{
setState(()=> messageSteps = "Etapa 9 de 10 - Gravando os Cadastros Domiciliares no Aplicativo"); setState(()=> messageSteps = "Etapa 9 de 10 - Gravando os Cadastros Domiciliares no Aplicativo");
} }
await DbSqliteSync().insertCadastrosDomiciliares(value).then((value)async{ await DbSqliteSync().insertCadastrosDomiciliares(value).then((value)async{
await ApiDataSync().syncCadastrosIndividuais(widget.args,idUnidade,area,microarea,foraArea).then((value)async{ await ApiDataSync().syncCadastrosIndividuais(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea).then((value)async{
if(value.length == 0){ if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros Individuais - Por favor, tente novamente!"); setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros Individuais - Por favor, tente novamente!");
}else{ }else{
setState(()=> messageSteps = "Etapa 10 de 10 - Gravando os Cadastros Individuais no Aplicativo"); setState(()=> messageSteps = "Etapa 10 de 10 - Gravando os Cadastros Individuais no Aplicativo");
} }
await DbSqliteSync().insertCadastrosIndividuais(value).then((value)async{ await DbSqliteSync().insertCadastrosIndividuais(value).then((value)async{
await DbSqliteSync().saveSync(widget.args,idUnidade,area,microarea).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'); Navigator.pushNamed(context, '/home');
}); });
}); });
@@ -167,7 +187,7 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
onPressed: (){ onPressed: (){
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: widget.args)), MaterialPageRoute(builder: (context) => SyncLoginScreen()),
); );
}, },
title: 'Continuar', title: 'Continuar',

View File

@@ -1,106 +1,114 @@
import 'dart:convert'; import 'dart:convert';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import '../../models/args_load_init_model.dart';
class ApiDataLoad{ class ApiDataLoad{
Future apiConect(ArgsLoadInitModel args)async{ Future apiConect(urlAPI,mode,nameCityApi,user)async{
//http://192.168.0.42:8010/api/atb/desenvolvimento/cabreuva/load/pass/admin //http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/pass/admin
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/pass/${args.user}'; //https://app0.rkmsistemas.com.br/api/atb/homologacao/cabreuva/pass/admin
final url = '${urlAPI}${mode}/${nameCityApi}/pass/${user}';
print(url);
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); var map;
return map; print(response.statusCode);
if(response.statusCode == 200){
return map = json.decode(response.body);
}else{
return map = 'Erro';
} }
Future loadPerm(ArgsLoadInitModel args)async{ }
Future loadPerm(urlAPI,mode,nameCityApi,user)async{
//https://app0.rkmsistemas.com.br/api/atb/homologacao/cabreuva/load/perm/admin
//http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin //http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/load/perm/${args.user}'; final url = '${urlAPI}${mode}/${nameCityApi}/load/perm/${user}';
// final url = 'http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin'; // final url = 'http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadUnidades(ArgsLoadInitModel args)async{ Future loadUnidades(urlAPI,mode,nameCityApi,user)async{
//https://app0.rkmsistemas.com.br/api/atb/homologacao/cabreuva/admin/load/unidades
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/unidades // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/unidades
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/unidades'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/unidades';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadProcedimentos(ArgsLoadInitModel args)async{ Future loadProcedimentos(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentos // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentos
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentos'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/procedimentos';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadProcedimentosRegistros(ArgsLoadInitModel args)async{ Future loadProcedimentosRegistros(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosRegistros // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosRegistros
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentosRegistros'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/procedimentosRegistros';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadCID(ArgsLoadInitModel args)async{ Future loadCID(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/cid // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/cid
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/cid'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/cid';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadProcedimentosCID(ArgsLoadInitModel args)async{ Future loadProcedimentosCID(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosCID // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosCID
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentosCID'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/procedimentosCID';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadCBO(ArgsLoadInitModel args)async{ Future loadCBO(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/cbo // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/cbo
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/cbo'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/cbo';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadProcedimentosCBO(ArgsLoadInitModel args)async{ Future loadProcedimentosCBO(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosCBO // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosCBO
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentosCBO'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/procedimentosCBO';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadCIAP(ArgsLoadInitModel args)async{ Future loadCIAP(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/ciap // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/ciap
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/ciap'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/ciap';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadMunicipios(ArgsLoadInitModel args)async{ Future loadMunicipios(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/municipios // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/municipios
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/municipios'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/municipios';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadEquipes(ArgsLoadInitModel args)async{ Future loadEquipes(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/equipes // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/equipes
// https://app0.rkmsistemas.com.br/api/atb/homologacao/cabreuva/admin/load/equipes // https://app0.rkmsistemas.com.br/api/atb/homologacao/cabreuva/admin/load/equipes
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/equipes'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/equipes';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadEquipeComponentes(ArgsLoadInitModel args)async{ Future loadEquipeComponentes(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/equipeComponentes // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/equipeComponentes
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/equipeComponentes'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/equipeComponentes';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future loadCompetencia(ArgsLoadInitModel args)async{ Future loadCompetencia(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/competencia // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/competencia
'criar uma lista dentro do DB não usar essa api para competencia'; 'criar uma lista dentro do DB não usar essa api para competencia';
'competencia sera dinamica com 4 meses para tras exemplo 042023/032023/022023/01/2023'; 'competencia sera dinamica com 4 meses para tras exemplo 042023/032023/022023/01/2023';
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/competencia'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/load/competencia';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;

View File

@@ -1,77 +1,75 @@
import 'dart:convert'; import 'dart:convert';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import '../../models/args_load_init_model.dart';
import '../shared_preferences/shared_preferences_service.dart';
class ApiDataSync{ class ApiDataSync{
Future syncPerm(ArgsLoadInitModel args)async{ Future syncPerm(urlAPI,mode,nameCityApi,user)async{
//http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/sync/perm/admin //http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/sync/perm/admin
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/sync/perm/${args.user}'; final url = '${urlAPI}${mode}/${nameCityApi}/sync/perm/${user}';
// final url = 'http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin'; // final url = 'http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
// print(map); // print(map);
return map; return map;
} }
Future syncBairros(ArgsLoadInitModel args)async{ Future syncBairros(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/bairros // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/bairros
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/sync/bairros'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/bairros';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future syncTiposLogradouros(ArgsLoadInitModel args)async{ Future syncTiposLogradouros(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/tiposLogradouros // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/tiposLogradouros
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/sync/tiposLogradouros'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/tiposLogradouros';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future syncLogradouros(ArgsLoadInitModel args)async{ Future syncLogradouros(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/logradouros // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/logradouros
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/sync/logradouros'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/logradouros';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future syncLoteamentos(ArgsLoadInitModel args)async{ Future syncLoteamentos(urlAPI,mode,nameCityApi,user)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/loteamentos // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/loteamentos
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/sync/loteamentos'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/loteamentos';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future syncProfissionais(ArgsLoadInitModel args,String idUnidade)async{ Future syncProfissionais(urlAPI,mode,nameCityApi,user,idUnidade)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/profissionais // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/profissionais
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/sync/${idUnidade}/profissionais'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/profissionais';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future syncProfissionaisCBOs(ArgsLoadInitModel args,String idUnidade)async{ Future syncProfissionaisCBOs(urlAPI,mode,nameCityApi,user,idUnidade)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/profissionaisCBOs // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/profissionaisCBOs
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/sync/${idUnidade}/profissionaisCBOs'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/profissionaisCBOs';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future syncCidadaos(ArgsLoadInitModel args,String idUnidade,String area, String microarea, bool foraArea)async{ 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 // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/cidadaos/1/1/true
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/sync/${idUnidade}/cidadaos/$area/$microarea/$foraArea'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/cidadaos/$area/$microarea/$foraArea';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future syncCadastrosDomiciliares(ArgsLoadInitModel args,String idUnidade,String area, String microarea, bool foraArea)async{ Future syncCadastrosDomiciliares(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/cadastrosDomiciliares/1/1/true // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/cadastrosDomiciliares/1/1/true
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/sync/${idUnidade}/cadastrosDomiciliares/$area/$microarea/$foraArea'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/cadastrosDomiciliares/$area/$microarea/$foraArea';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;
} }
Future syncCadastrosIndividuais(ArgsLoadInitModel args,String idUnidade,String area, String microarea, bool foraArea)async{ Future syncCadastrosIndividuais(urlAPI,mode,nameCityApi,user,idUnidade,area,microarea,foraArea)async{
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/cadastrosIndividuais/1/1/true // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/sync/3/cadastrosIndividuais/1/1/true
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/sync/${idUnidade}/cadastrosIndividuais/$area/$microarea/$foraArea'; final url = '${urlAPI}${mode}/${nameCityApi}/${user}/sync/${idUnidade}/cadastrosIndividuais/$area/$microarea/$foraArea';
final response = await http.get(Uri.parse(url)); final response = await http.get(Uri.parse(url));
final map = json.decode(response.body); final map = json.decode(response.body);
return map; return map;

View File

@@ -0,0 +1,36 @@
import 'package:rkm/service/db/db_sqlite_load.dart';
import 'package:sqflite/sqflite.dart';
class DBQuerys{
duplicidadeCNS(String CNS)async{
// 707806656421614 JÁ EXISTE
// String teste = '707806656421614';
Database db = await DbSqliteLoad().intialDB();
// print(await db.rawQuery('SELECT * FROM CIDADAOS WHERE CNS=$teste'));
List list = await db.rawQuery('SELECT * FROM CIDADAOS WHERE CNS = $CNS');
return list;
}
duplicidadeCPF(numCPF)async{
// 11992420475 já existe
String teste = '11992420475';
Database db = await DbSqliteLoad().intialDB();
// print(await db.rawQuery('SELECT CPF FROM CIDADAOS'));
List list = await db.rawQuery("SELECT * FROM CIDADAOS WHERE CPF = $numCPF");
// List list = await db.rawQuery("SELECT * FROM CIDADAOS WHERE CPF = $teste");
return list;
}
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();
}
buscaTipoLogradouro(tipo)async{
Database db = await DbSqliteLoad().intialDB();
List list = await db.rawQuery("SELECT * FROM LOGRADOUROS_TIPOS WHERE NO_LOGR_TIPO = '$tipo'");
// print(await db.rawQuery('SELECT NO_BAIRRO FROM BAIRROS'));
print(list[0]['ID_LOGR_TIPO']);
return list[0]['ID_LOGR_TIPO'].toString();
}
}

View File

@@ -1,4 +1,3 @@
import 'package:rkm/models/args_load_init_model.dart';
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart'; import 'package:path/path.dart';
@@ -61,6 +60,7 @@ class DbSqliteLoad{
db.execute('CREATE TABLE IF NOT EXISTS VISITAS_DOMICILIARES (ID_VISITA_DOMICILIAR INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, DT_ATENDIMENTO TEXT, TURNO INTEGER, TIPO_IMOVEL INTEGER, VISITA_ACOMPANHADA INTEGER, DESFECHO INTEGER, PESO TEXT, ALTURA TEXT, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, COMPLEMENTO TEXT, SINCRONIZADO TEXT);'); db.execute('CREATE TABLE IF NOT EXISTS VISITAS_DOMICILIARES (ID_VISITA_DOMICILIAR INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, DT_ATENDIMENTO TEXT, TURNO INTEGER, TIPO_IMOVEL INTEGER, VISITA_ACOMPANHADA INTEGER, DESFECHO INTEGER, PESO TEXT, ALTURA TEXT, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, COMPLEMENTO TEXT, SINCRONIZADO TEXT);');
db.execute('CREATE TABLE IF NOT EXISTS VISITAS_DOMICILIARES_COMPL (ID_VISITA_DOMICILIAR INTEGER, ID_VISITA_DOM_TIPO INTEGER, ID_VISITA_COMPLEMENTO INTEGER);'); db.execute('CREATE TABLE IF NOT EXISTS VISITAS_DOMICILIARES_COMPL (ID_VISITA_DOMICILIAR INTEGER, ID_VISITA_DOM_TIPO INTEGER, ID_VISITA_COMPLEMENTO INTEGER);');
db.execute('CREATE TABLE IF NOT EXISTS VISITAS_DOMICILIARES_PROC (ID_VISITA_DOMICILIAR INTEGER, COD_PROC_SIGTAP TEXT);'); db.execute('CREATE TABLE IF NOT EXISTS VISITAS_DOMICILIARES_PROC (ID_VISITA_DOMICILIAR INTEGER, COD_PROC_SIGTAP TEXT);');
db.execute('CREATE TABLE IF NOT EXISTS ARGS (ID_USER INTEGER, MODE TEXT, USER TEXT, PASSWORD TEXT, URLAPI TEXT, COD_CITY INTEGER, NAME_CITY_API TEXT, NAME_CITY_FRONT TEXT, COD_STATE TEXT, COD_IBGE INTEGER);');
} }
); );
return db; return db;
@@ -105,12 +105,42 @@ class DbSqliteLoad{
'DELETE FROM VISITAS_DOMICILIARES;', 'DELETE FROM VISITAS_DOMICILIARES;',
'DELETE FROM VISITAS_DOMICILIARES_COMPL;', 'DELETE FROM VISITAS_DOMICILIARES_COMPL;',
'DELETE FROM VISITAS_DOMICILIARES_PROC;', 'DELETE FROM VISITAS_DOMICILIARES_PROC;',
'DELETE FROM ARGS;',
]; ];
Database db = await intialDB(); Database db = await intialDB();
for(int i=0;querys.length>i;i++){ for(int i=0;querys.length>i;i++){
db.execute(querys[i]); db.execute(querys[i]);
} }
} }
Future saveArgs(mode,user,password,urlAPI,codCity,nameCityApi,nameCityFront,codState,codCityIbge)async{
Database db = await intialDB();
Map<String, dynamic> row = {
'ID_USER' : 1,
'MODE' : mode,
'USER' : user,
'PASSWORD' : password,
'URLAPI' : urlAPI,
'COD_CITY' : codCity,
'NAME_CITY_API' : nameCityApi,
'NAME_CITY_FRONT': nameCityFront,
'COD_STATE' : codState,
'COD_IBGE' : codCityIbge,
};
int id = await db.insert('ARGS', row);
return db;
}
Future updateArgs(mode,user,password)async{
Database db = await intialDB();
var query = "UPDATE ARGS SET USER = '$user' WHERE ID_USER = 1;";
var query1 = "UPDATE ARGS SET PASSWORD = '$password' WHERE ID_USER = 1;";
await db.execute(query);
await db.execute(query1);
// print(await db.query('ARGS'));
return db;
}
Future saveUnidadesDB(var value)async{ Future saveUnidadesDB(var value)async{
Database db = await intialDB(); Database db = await intialDB();
for(int i=0;value.length > i;i++){ for(int i=0;value.length > i;i++){
@@ -289,7 +319,7 @@ class DbSqliteLoad{
int id = await db.insert('PROFISSIONAIS_EQUIPE', row); int id = await db.insert('PROFISSIONAIS_EQUIPE', row);
// print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO'); // print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO');
} }
print(await db.query('PROFISSIONAIS_EQUIPE')); // print(await db.query('PROFISSIONAIS_EQUIPE'));
return db; return db;
} }
} }

View File

@@ -1,13 +1,11 @@
import 'package:rkm/service/db/db_sqlite_load.dart'; import 'package:rkm/service/db/db_sqlite_load.dart';
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
import '../../models/args_load_init_model.dart';
class DbSqliteSync{ class DbSqliteSync{
Future deleteSync()async{ Future deleteSync()async{
var querys = [ var querys = [
"UPDATE CONTROLE_INTERNO SET SYNC_UNIDADE = NULL, UNIDADE_SYNC = NULL, NOME_UNIDADE = NULL WHERE rowid = 1;", "DELETE FROM CONTROLE_INTERNO",
"DELETE FROM BAIRROS;", "DELETE FROM BAIRROS;",
"DELETE FROM LOGRADOUROS_TIPOS;", "DELETE FROM LOGRADOUROS_TIPOS;",
"DELETE FROM LOGRADOUROS_ENDERECOS;", "DELETE FROM LOGRADOUROS_ENDERECOS;",
@@ -62,13 +60,13 @@ class DbSqliteSync{
for(int i=0;value.length > i;i++){ for(int i=0;value.length > i;i++){
Map<String, dynamic> row = { Map<String, dynamic> row = {
'ID_LOGR_ENDERECO' : value[i]['idLogradouro'], 'ID_LOGR_ENDERECO' : value[i]['idLogradouro'],
'ID_LOGR_TIPO' : value[i]['descLogradouro'], 'ID_LOGR_TIPO' : value[i]['idTipoLogradouro'],
'DESC_LOGR_ENDERECO' : value[i]['idTipoLogradouro'], 'DESC_LOGR_ENDERECO' : value[i]['descLogradouro'],
'ID_BAIRRO' : value[i]['idBairro'], 'ID_BAIRRO' : value[i]['idBairro'],
}; };
int id = await db.insert('LOGRADOUROS_ENDERECOS', row); int id = await db.insert('LOGRADOUROS_ENDERECOS', row);
// print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO'); // print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO');
// print(await db.query('LOGRADOUROS_ENDERECOS')); print(await db.query('LOGRADOUROS_ENDERECOS'));
} }
return db; return db;
} }
@@ -121,7 +119,7 @@ class DbSqliteSync{
} }
return db; return db;
} }
Future insertCidadaos(var value)async{ Future insertCidadaos(var value,String type)async{
Database db = await DbSqliteLoad().intialDB(); Database db = await DbSqliteLoad().intialDB();
// CIDADAOS (ID_CIDADAO,CD_USUARIO_SUS,NOME_CIDADAO,NOME_SOCIAL,SEXO,DT_NASCIMENTO,ID_ESTADO_CIVIL,NOME_CONJUGE,NACIONALIDADE,ID_MUNICIPIO_NASC,NO_MUNICIPIO_NASC,ESTADO_UF_NASC // CIDADAOS (ID_CIDADAO,CD_USUARIO_SUS,NOME_CIDADAO,NOME_SOCIAL,SEXO,DT_NASCIMENTO,ID_ESTADO_CIVIL,NOME_CONJUGE,NACIONALIDADE,ID_MUNICIPIO_NASC,NO_MUNICIPIO_NASC,ESTADO_UF_NASC
// ID_ETNIA,ID_ESCOLARIDADE,ID_DEFICIENCIA,NOME_MAE,DESCONHECE_MAE,NOME_PAI,DESCONHECE_PAI,ID_UNIDADE,NUM_PRONTUARIO,NUM_PRONTUARIO_PROV,CLASSIFICACAO,CLASSIFICACAO_SUB, // ID_ETNIA,ID_ESCOLARIDADE,ID_DEFICIENCIA,NOME_MAE,DESCONHECE_MAE,NOME_PAI,DESCONHECE_PAI,ID_UNIDADE,NUM_PRONTUARIO,NUM_PRONTUARIO_PROV,CLASSIFICACAO,CLASSIFICACAO_SUB,
@@ -141,6 +139,8 @@ class DbSqliteSync{
'"nrLivroCertidao":null,"nrFolhaCertidao":null,"noTermoCertidao":"","dtEmissaoCertidao":null,"nrCtps":null,"nrSerieCtps":null,"cdSiglaUfCtps":"--","nrPispasep":"",' '"nrLivroCertidao":null,"nrFolhaCertidao":null,"noTermoCertidao":"","dtEmissaoCertidao":null,"nrCtps":null,"nrSerieCtps":null,"cdSiglaUfCtps":"--","nrPispasep":"",'
'"cartaoMunicipalRetirado":"N","nrNis":"","rendaMensal":null,"profissao":"","dtObito":null,"bloqueio":"0","origem":"S","cdDomicilio":1838,"atendimentos":0,' '"cartaoMunicipalRetirado":"N","nrNis":"","rendaMensal":null,"profissao":"","dtObito":null,"bloqueio":"0","origem":"S","cdDomicilio":1838,"atendimentos":0,'
'"idUsuarioCadastro":null'; '"idUsuarioCadastro":null';
if(type=='sync'){
for(int i=0;value.length > i;i++){ for(int i=0;value.length > i;i++){
Map<String, dynamic> row = { Map<String, dynamic> row = {
'ID_CIDADAO' : value[i]['idCidadao'], 'ID_CIDADAO' : value[i]['idCidadao'],
@@ -163,7 +163,6 @@ class DbSqliteSync{
'DESCONHECE_MAE' : value[i]['desconheceMae'], 'DESCONHECE_MAE' : value[i]['desconheceMae'],
'NOME_PAI' : value[i]['noPai'], 'NOME_PAI' : value[i]['noPai'],
'DESCONHECE_PAI' : value[i]['desconhecePai'], 'DESCONHECE_PAI' : value[i]['desconhecePai'],
'DESCONHECE_PAI' : value[i]['desconhecePai'],
'ID_UNIDADE' : value[i]['nrUnidade'], 'ID_UNIDADE' : value[i]['nrUnidade'],
'NUM_PRONTUARIO' : value[i]['nrProntuario'], 'NUM_PRONTUARIO' : value[i]['nrProntuario'],
'NUM_PRONTUARIO_PROV' : value[i]['nrProntuarioProvisorio'], 'NUM_PRONTUARIO_PROV' : value[i]['nrProntuarioProvisorio'],
@@ -228,6 +227,10 @@ class DbSqliteSync{
// print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO'); // print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO');
// print(await db.query('CIDADAOS')); // print(await db.query('CIDADAOS'));
} }
}else{
int id = await db.insert('CIDADAOS', value);
print('novo id $id');
}
return db; return db;
} }
Future insertCadastrosDomiciliares(var value)async{ Future insertCadastrosDomiciliares(var value)async{
@@ -414,7 +417,7 @@ class DbSqliteSync{
} }
return db; return db;
} }
Future saveSync(ArgsLoadInitModel args,idUnidade,area,microarea)async{ Future saveSync(codCity,codState,urlAPI,mode,nameCityApi,nameCityFront,codCityIbge,user,idUnidade,nomeUnidade,area,microarea)async{
Database db = await DbSqliteLoad().intialDB(); Database db = await DbSqliteLoad().intialDB();
//refatorar cidade_load e nome_cidade //refatorar cidade_load e nome_cidade
'parameters = [{"carga_inicial": 1, "cidade_load": cidade, "nome_cidade": vm.nomeCidade[cidade], "cidade_id": cidadeID, "estado": estado, "ibge": ibge, "ambiente": ambiente, "competencia": competencia.replace(/\D/g, '')}]'; 'parameters = [{"carga_inicial": 1, "cidade_load": cidade, "nome_cidade": vm.nomeCidade[cidade], "cidade_id": cidadeID, "estado": estado, "ibge": ibge, "ambiente": ambiente, "competencia": competencia.replace(/\D/g, '')}]';
@@ -422,21 +425,20 @@ class DbSqliteSync{
Map<String, dynamic> row = { Map<String, dynamic> row = {
'CARGA_INICIAL' : 1, 'CARGA_INICIAL' : 1,
'CIDADE_LOAD' : args.model.nameCityApi, 'CIDADE_LOAD' : nameCityApi,
'NOME_CIDADE' : args.model.nameCityFront, 'NOME_CIDADE' : nameCityFront,
'ID_MUNICIPIO' : args.model.codCity, 'ID_MUNICIPIO' : codCity,
'UF_ESTADO' : args.model.codState, 'UF_ESTADO' : codState,
'CODIGO_IBGE' : args.model.codCityIbge, 'CODIGO_IBGE' : codCityIbge,
'AMBIENTE' : args.mode, 'AMBIENTE' : mode,
'SYNC_UNIDADE' : idUnidade, 'SYNC_UNIDADE' : idUnidade,
'NOME_UNIDADE' : args.model.nameCityFront, 'NOME_UNIDADE' : nomeUnidade,
'AREA' : area, 'AREA' : area,
'MICROAREA' : microarea, 'MICROAREA' : microarea,
'ULTIMA_SINCRONIZACAO' : DateTime.now().toString(), 'ULTIMA_SINCRONIZACAO' : DateTime.now().toString(),
'COMPETENCIA' : '${DateTime.now().year}${DateTime.now().month<10?'0':''}${DateTime.now().month-1}', 'COMPETENCIA' : '${DateTime.now().year}${DateTime.now().month<10?'0':''}${DateTime.now().month-1}',
}; };
int id = await db.insert('CONTROLE_INTERNO', row); int id = await db.insert('CONTROLE_INTERNO', row);
print(await db.query('CONTROLE_INTERNO'));
return db; return db;
} }
} }

View File

@@ -7,10 +7,11 @@ class PrefService{
SharedPreferences _preferences = await SharedPreferences.getInstance(); SharedPreferences _preferences = await SharedPreferences.getInstance();
_preferences.setString('idUsuario', idUsuario); _preferences.setString('idUsuario', idUsuario);
} }
Future createCacheidUnidade(String idUnidade)async{ Future createCacheUnidade(String idUnidade, String nomeUnidade)async{
SharedPreferences _preferences = await SharedPreferences.getInstance(); SharedPreferences _preferences = await SharedPreferences.getInstance();
_preferences.setString('idUnidade', idUnidade); _preferences.setString('idUnidade', idUnidade);
_preferences.setString('nomeUnidade', nomeUnidade);
} }
Future createCacheSync(String area,bool foraArea)async{ Future createCacheSync(String area,bool foraArea)async{
@@ -33,10 +34,15 @@ class PrefService{
var idUsuario = _preferences.getString('idUsuario'); var idUsuario = _preferences.getString('idUsuario');
return idUsuario; return idUsuario;
} }
Future readCacheIdUnidade(String idUnidade) async{ Future readCacheUnidade(String idUnidade) async{
SharedPreferences _preferences = await SharedPreferences.getInstance(); SharedPreferences _preferences = await SharedPreferences.getInstance();
var idUnidade = _preferences.getString('idUnidade'); var idUnidade = _preferences.getString('idUnidade');
return idUnidade; var nomeUnidade = _preferences.getString('nomeUnidade');
List list =[
idUnidade,
nomeUnidade,
];
return list;
} }
Future readCacheModel(String user,String password,String city,String mode) async{ Future readCacheModel(String user,String password,String city,String mode) async{
SharedPreferences _preferences = await SharedPreferences.getInstance(); SharedPreferences _preferences = await SharedPreferences.getInstance();

View File

@@ -8,6 +8,10 @@ class ConstVariable{
EdgeInsetsGeometry paddingWidth = EdgeInsets.symmetric(horizontal: 10); EdgeInsetsGeometry paddingWidth = EdgeInsets.symmetric(horizontal: 10);
double fontSizeInput = 15; double fontSizeInput = 15;
double fontSizeTitleAppBar = 20; double fontSizeTitleAppBar = 20;
List<String> RGUF = ['AC','AI','AL','AM','AN','AP','AS','BA','BY','CA','CB','CE','CH','CN','CO','DC','DF','ES','GD','GO','GU',
'HU','IL','LA','LE','LI','LO','LT','MA','MG','MO','MS','MT','NB','NE','NW','NT','NY','OH','OU','PA','PB',
'PE','PI','PO','PR','QH','RJ','RM','RN','RO','RR','RN','RO','RR','RS','SC','SE','SF','SJ','SP','TA','TO',
'VC','XX','ZU'];
List<String> itensProceduresStart = [ List<String> itensProceduresStart = [
'ATENDIMENTO INDIVIDUAL', 'ATENDIMENTO INDIVIDUAL',
'VISTA DOMICILIAR' 'VISTA DOMICILIAR'

View File

@@ -21,7 +21,7 @@ import '../screens/sinc_data_screen.dart';
var routes = { var routes = {
'/home': (context) => HomeScreen(), '/home': (context) => HomeScreen(),
'/login_load': (context) => LoginLoadScreen(), '/login_load': (context) => LoginLoadScreen(),
'/register_citizen': (context) => RegisterCitizenScreen(), '/register_citizen': (context) => RegisterCitizenScreen(select: '',),
'/attendance_list': (context) => AttendanceListScreen(), '/attendance_list': (context) => AttendanceListScreen(),
'/about': (context) => AboutScreen(), '/about': (context) => AboutScreen(),
'/main_procedures': (context) => MainProceduresScreen(), '/main_procedures': (context) => MainProceduresScreen(),

View File

@@ -0,0 +1,120 @@
import 'package:flutter/material.dart';
import 'package:rkm/widgets/text_default.dart';
import 'package:sqflite/sqflite.dart';
import '../screens/registers_citizen/register_citizen_screen.dart';
import '../service/db/db_sqlite_load.dart';
import '../utils/color_palette.dart';
import 'input_search_text.dart';
class AlertDialogSearchStateful extends StatefulWidget {
@override
State<AlertDialogSearchStateful> createState() => _AlertDialogSearchStatefulState();
}
class _AlertDialogSearchStatefulState extends State<AlertDialogSearchStateful> {
List cityDB = [];
List showResultSearchCity = [];
var controller = TextEditingController();
_searchCityBirth(){
searchCity();
}
getCity()async{
Database db = await DbSqliteLoad().intialDB();
var query = "SELECT * FROM MUNICIPIOS ORDER BY NO_MUNICIPIO";
List list = await db.rawQuery(query);
// print("SELECT * FROM UNIDADES");
// print(await db.rawQuery("SELECT * FROM UNIDADES"));
for(int i=0; list.length > i;i++){
cityDB.add('${list[i]['NO_MUNICIPIO']} - ${list[i]['UF_ESTADO']}');
}
searchCity();
return 'complete';
}
searchCity()async{
if(controller.text.isNotEmpty){
showResultSearchCity =[];
for (int i =0;cityDB.length>i;i++) {
String CIDADE = '${cityDB[i]}';
if(CIDADE.contains(controller.text.toUpperCase())){
if(showResultSearchCity.length<10){
showResultSearchCity.add(cityDB[i]);
}
}
}
setState(() {
print(showResultSearchCity);
});
}else{
setState(() {
for(int i = 0;i<10;i++){
showResultSearchCity.add(cityDB[i]);
}
});
}
}
@override
void initState() {
super.initState();
getCity();
controller.addListener(_searchCityBirth);
}
@override
Widget build(BuildContext context) {
double width = MediaQuery.of(context).size.width;
double height = MediaQuery.of(context).size.height;
return AlertDialog(
title: InputSearchText(
controller: controller,
width: width*0.3,
hint: 'Buscar...',
color: ColorPalette.titleContainer,
border: false,
),
content: Container(
padding: EdgeInsets.symmetric(vertical: 10),
width: width*0.8,
child: Container(
width: width*0.8,
height: height*0.8,
padding: EdgeInsets.symmetric(horizontal: 10),
child: ListView.separated(
separatorBuilder:(context,index)=> Divider(color: ColorPalette.black54,height: 5,),
itemCount: showResultSearchCity.length,
itemBuilder: (context,index){
return Container(
width: width*0.8,
color: ColorPalette.white,
child: ListTile(
onTap: (){
setState(() {
controller.text = showResultSearchCity[index];
Navigator.push(
context,
MaterialPageRoute(builder: (context) => RegisterCitizenScreen(select: controller.text,)),
);
});
},
title: TextDefault(
color: ColorPalette.black54,
text: showResultSearchCity[index],
fontSize: 16,
maxLines: 2,
),
),
);
}
),
),
),
);
}
}

View File

@@ -1,14 +1,13 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rkm/models/args_load_init_model.dart';
import 'package:rkm/widgets/alert_dialog_settings.dart'; import 'package:rkm/widgets/alert_dialog_settings.dart';
import '../screens/login/sync_login_screen.dart'; import '../screens/login/login_saved_screen.dart';
import '../utils/color_palette.dart'; import '../utils/color_palette.dart';
import 'icon_button_default.dart'; import 'icon_button_default.dart';
class AppBarDefault{ class AppBarDefault{
@override @override
PreferredSize appbar(BuildContext context,String title,{ArgsLoadInitModel? args}) { PreferredSize appbar(BuildContext context,String title) {
return PreferredSize( return PreferredSize(
preferredSize: Size.fromHeight(50), preferredSize: Size.fromHeight(50),
child: AppBar( child: AppBar(
@@ -26,7 +25,7 @@ class AppBarDefault{
onPressed: (){ onPressed: (){
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: args!)), MaterialPageRoute(builder: (context) => LoginSavedScreen(listControl: [])),
); );
}), }),
], ],

View File

@@ -0,0 +1,33 @@
import 'package:flutter/material.dart';
import 'package:rkm/widgets/text_default.dart';
class ErrorDefault extends StatelessWidget {
double widthDefault;
String error;
ErrorDefault({
this.widthDefault = 0.7,
this.error = 'Esse campo é obrigatório!'
});
@override
Widget build(BuildContext context) {
double height = MediaQuery.of(context).size.height;
double width = MediaQuery.of(context).size.width;
return Container(
height: 20,
width: width*widthDefault,
child: Column(
children: [
Divider(color: Colors.red,height: 2,thickness:2),
Container(
height: 15,
width: width*widthDefault,
child: TextDefault(text:error,color: Colors.red,fontSize: 12),
),
],
),
);
}
}

View File

@@ -9,6 +9,7 @@ class InputSearchText extends StatelessWidget {
double width; double width;
Color color; Color color;
bool border; bool border;
var onChanged;
InputSearchText({ InputSearchText({
required this.controller, required this.controller,
@@ -17,6 +18,7 @@ class InputSearchText extends StatelessWidget {
this.hint = '', this.hint = '',
this.color = ColorPalette.white, this.color = ColorPalette.white,
this.border = true, this.border = true,
this.onChanged = null
}); });
@override @override
@@ -26,9 +28,10 @@ class InputSearchText extends StatelessWidget {
margin: ConstVariable().marginHightInput, margin: ConstVariable().marginHightInput,
width: width, width: width,
child: TextFormField( child: TextFormField(
onChanged: onChanged,
controller: this.controller, controller: this.controller,
style: TextStyle( style: TextStyle(
color: ColorPalette.gray, color: Colors.black,
fontSize: this.fontSize, fontSize: this.fontSize,
), ),
decoration: InputDecoration( decoration: InputDecoration(
@@ -37,7 +40,7 @@ class InputSearchText extends StatelessWidget {
border: border?OutlineInputBorder():null, border: border?OutlineInputBorder():null,
hintText: this.hint, hintText: this.hint,
hintStyle: TextStyle( hintStyle: TextStyle(
color: ColorPalette.gray, color: Colors.black,
fontSize: this.fontSize, fontSize: this.fontSize,
) )
) )

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rkm/utils/color_palette.dart'; import 'package:rkm/utils/color_palette.dart';
import '../controllers/format_txt.dart';
import '../utils/const_variable.dart'; import '../utils/const_variable.dart';
class InputText extends StatelessWidget { class InputText extends StatelessWidget {
@@ -9,7 +10,6 @@ class InputText extends StatelessWidget {
String hint; String hint;
double width; double width;
String label; String label;
String error;
bool enable; bool enable;
TextInputType textInputType; TextInputType textInputType;
int maxLines; int maxLines;
@@ -23,7 +23,6 @@ class InputText extends StatelessWidget {
this.fontSize = 15.0, this.fontSize = 15.0,
this.hint = '', this.hint = '',
this.label = '', this.label = '',
this.error = '',
this.enable = true, this.enable = true,
this.textInputType = TextInputType.text, this.textInputType = TextInputType.text,
this.maxLines = 1, this.maxLines = 1,
@@ -35,18 +34,15 @@ class InputText extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
color: ColorPalette.white, color: ColorPalette.white,
margin: ConstVariable().marginHightInput, margin: EdgeInsets.only(top: 5),
width: width, width: width,
child: TextFormField( child: TextFormField(
keyboardType: textInputType, keyboardType: textInputType,
maxLines: maxLines, maxLines: maxLines,
onChanged: onChanged, onChanged: onChanged,
validator: (value) { inputFormatters: [
if (value!=null && value!.length==0) { FormatText()
return error; ],
}
return null;
},
obscureText: this.obscure, obscureText: this.obscure,
controller: this.controller, controller: this.controller,
style: TextStyle( style: TextStyle(

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:rkm/widgets/text_default.dart'; import 'package:rkm/widgets/text_default.dart';
import '../utils/color_palette.dart'; import '../utils/color_palette.dart';
import 'error_default.dart';
import 'input_text.dart'; import 'input_text.dart';
class InputWithSubtitle extends StatelessWidget { class InputWithSubtitle extends StatelessWidget {
@@ -10,8 +11,11 @@ class InputWithSubtitle extends StatelessWidget {
String labelInput; String labelInput;
double widthSubtitle; double widthSubtitle;
double widthInput; double widthInput;
double widthError;
var controller; var controller;
var onChanged;
bool enable; bool enable;
bool mandatory;
TextInputType textInputType; TextInputType textInputType;
int maxLines; int maxLines;
Color colorBorder; Color colorBorder;
@@ -25,9 +29,12 @@ class InputWithSubtitle extends StatelessWidget {
required this.widthInput, required this.widthInput,
required this.controller, required this.controller,
this.enable = true, this.enable = true,
this.mandatory = true,
this.textInputType = TextInputType.text, this.textInputType = TextInputType.text,
this.maxLines = 1, this.maxLines = 1,
this.colorBorder = ColorPalette.black54 this.colorBorder = ColorPalette.black54,
required this.onChanged,
this.widthError = 0.7
}); });
@override @override
@@ -49,13 +56,14 @@ class InputWithSubtitle extends StatelessWidget {
controller: controller, controller: controller,
width: widthInput, width: widthInput,
hint: hintInput, hint: hintInput,
error: errorInput,
label: labelInput, label: labelInput,
enable: enable, enable: enable,
textInputType: textInputType, textInputType: textInputType,
maxLines:maxLines, maxLines:maxLines,
colorBorder: colorBorder, colorBorder: colorBorder,
onChanged: onChanged,
), ),
controller.text=='' &&(enable&&mandatory)?ErrorDefault(widthDefault: widthError,):Container(),
Divider(color: ColorPalette.black54,height: 5,endIndent: 10,) Divider(color: ColorPalette.black54,height: 5,endIndent: 10,)
], ],
); );

View File

@@ -0,0 +1,57 @@
import 'package:flutter/material.dart';
import 'package:rkm/widgets/text_default.dart';
import '../screens/registers_citizen/register_citizen_screen.dart';
import '../screens/registers_citizen/register_home_screen.dart';
import '../screens/registers_citizen/register_individual_screen.dart';
import '../utils/color_palette.dart';
class SubtitleAppbarCitizen extends StatelessWidget {
int title;
bool edit;
SubtitleAppbarCitizen({
required this.title,
this.edit = false
});
@override
Widget build(BuildContext context) {
double heigth = MediaQuery.of(context).size.height;
double width = MediaQuery.of(context).size.width;
return Container(
color: ColorPalette.white,
width: width,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextButton.icon(
onPressed:edit? ()=> Navigator.push(
context,
MaterialPageRoute(builder: (context) => RegisterCitizenScreen(select: '',)),
):null,
icon: Icon(Icons.person,color: title==1?Colors.black:ColorPalette.gray,),
label: TextDefault(text: 'Cadastro Cidadão',fontSize: 14,color: title==1?Colors.black:ColorPalette.gray,)
),
TextButton.icon(
onPressed:edit? ()=> Navigator.push(
context,
MaterialPageRoute(builder: (context) => RegisterIndividualScreen()),
):null,
icon: Icon(Icons.assignment_outlined,color: title==2?Colors.black:ColorPalette.gray,),
label: TextDefault(text: 'Cadastro Individual',fontSize: 14,color: title==2?Colors.black:ColorPalette.gray,)
),
TextButton.icon(
onPressed:edit? ()=> Navigator.push(
context,
MaterialPageRoute(builder: (context) => RegisterHomeScreen()),
):null,
icon: Icon(Icons.home,color: title==3?Colors.black:ColorPalette.gray,),
label: TextDefault(text: 'Cadastro Domiciliar',fontSize: 14,color: title==3?Colors.black:ColorPalette.gray,)
),
],
),
);
}
}

View File

@@ -128,6 +128,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.0.6" version: "0.0.6"
get:
dependency: "direct main"
description:
name: get
url: "https://pub.dartlang.org"
source: hosted
version: "4.6.5"
http: http:
dependency: "direct main" dependency: "direct main"
description: description:

View File

@@ -19,6 +19,7 @@ dependencies:
gainer_crypto: ^0.0.6 gainer_crypto: ^0.0.6
sqflite: ^2.0.0+3 sqflite: ^2.0.0+3
shared_preferences: ^2.0.15 shared_preferences: ^2.0.15
get:
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: