ciada a tela sync_init_screen.dart com a api_data_sync.dart, shared_preferences_service.dart e db_sqlite_sync.dart

This commit is contained in:
Reginaldo
2023-04-05 23:11:19 -03:00
parent 17f0fa7bcb
commit 8487b3dbba
16 changed files with 1139 additions and 205 deletions

View File

@@ -1,12 +1,13 @@
import 'package:flutter/material.dart';
import 'package:rkm/screens/sync_unit_screen.dart';
import 'package:rkm/screens/login/sync_login_screen.dart';
import 'package:rkm/utils/color_palette.dart';
import 'package:rkm/widgets/alert_dialog_default.dart';
import 'package:rkm/widgets/button_default.dart';
import 'package:rkm/widgets/text_default.dart';
import '../models/args_load_init_model.dart';
import '../service/api/api_data.dart';
import '../service/db/db_sqlite.dart';
import '../service/api/api_data_load.dart';
import '../service/db/db_sqlite_load.dart';
import '../service/shared_preferences/shared_preferences_service.dart';
class LoadInitScreen extends StatefulWidget {
ArgsLoadInitModel args;
@@ -21,8 +22,10 @@ class LoadInitScreen extends StatefulWidget {
class _LoadInitScreenState extends State<LoadInitScreen> {
final PrefService _prefService = PrefService();
String messageSteps = 'Aguarde ...';
bool finish = false;
String idUsuario = '';
@override
void initState() {
@@ -31,77 +34,81 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
}
initLoading()async{
await DbSqlite().deleteDB().then((_)async{
await ApiData().loadPerm(widget.args).then((response)async{
await DbSqliteLoad().deleteLoad().then((_)async{
await ApiDataLoad().loadPerm(widget.args).then((response)async{
if(response['status'] == 0){
AlertDialogDefault().alert(context, 'Error', 'Permissão negada', 'Voltar');
AlertDialogDefault().alert(context, 'Erro', 'Permissão negada', 'Voltar');
} else if(response['status'] == 1 && response['load_perm'] == "S") {
await ApiData().loadUnidades(widget.args).then((value)async{
if(value.length !=0){
setState(() {
messageSteps = "Etapa 1 de 7 - Gravando as Unidades no Aplicativo";
});
await DbSqlite().saveUnidadesDB(value).then((value)async{
await ApiData().loadProcedimentos(widget.args).then((value)async{
setState(() {
messageSteps = "Etapa 2 de 7 - Gravando os Procedimentos no Aplicativo";
});
await DbSqlite().saveProceduresDB(value).then((value)async{
print('finalizou save Procedures');
await ApiData().loadProcedimentosRegistros(widget.args).then((value)async{
await DbSqlite().saveProceduresRegisterDB(value).then((value)async{
print('finalizou saveProceduresRegisterDB');
await ApiData().loadCID(widget.args).then((value)async{
print('loadCID');
setState(() {
messageSteps = "Etapa 3 de 7 - Gravando os CIDs no Aplicativo";
});
await DbSqlite().saveCID(value).then((value)async{
print('finalizou saveCID');
await ApiData().loadProcedimentosCID(widget.args).then((value)async{
print('loadProcedimentosCID');
await DbSqlite().saveProceduresCID(value).then((value)async{
print('finalizou saveProceduresCID');
await ApiData().loadCBO(widget.args).then((value)async{
print('loadCBO');
setState(() {
messageSteps = "Etapa 4 de 7 - Gravando os CBOs no Aplicativo";
});
await DbSqlite().saveCBO(value).then((value)async{
print('finalizou saveCBO');
await ApiData().loadProcedimentosCBO(widget.args).then((value)async{
print('loadProcedimentosCBO');
await DbSqlite().saveProceduresCBO(value).then((value)async{
print('finalizou saveProceduresCBO');
await ApiData().loadCIAP(widget.args).then((value)async{
print('loadCIAP');
setState(() {
messageSteps = "Etapa 5 de 7 - Gravando os CIAPs no Aplicativo";
});
await DbSqlite().saveCIAP(value).then((value)async{
print('finalizou saveCIAP');
await ApiData().loadMunicipios(widget.args).then((value)async{
print('loadMunicipios');
setState(() {
messageSteps = "Etapa 6 de 7 - Gravando os Municípios no Aplicativo";
});
await DbSqlite().saveCity(value).then((value)async{
print('finalizou saveCity');
await ApiData().loadEquipes(widget.args).then((value)async{
print('loadEquipes');
setState(() {
messageSteps = "Etapa 7 de 7 - Gravando as Equipes no Aplicativo";
});
await DbSqlite().saveTeam(value).then((value)async{
print('finalizou saveTeam');
await ApiData().loadEquipeComponentes(widget.args).then((value)async{
print('loadEquipeComponentes');
await DbSqlite().saveTeamComponents(value).then((value)async{
print('finalizou saveTeamComponents');
setState(() {
finish = true;
idUsuario = response['idUsuario'].toString();
print('idUsuario $idUsuario');
_prefService.createCacheidUsuario(idUsuario).then((value)async{
await ApiDataLoad().loadUnidades(widget.args).then((value)async{
if(value.length !=0){
setState(() {
messageSteps = "Etapa 1 de 7 - Gravando as Unidades no Aplicativo";
});
await DbSqliteLoad().saveUnidadesDB(value).then((value)async{
await ApiDataLoad().loadProcedimentos(widget.args).then((value)async{
setState(() {
messageSteps = "Etapa 2 de 7 - Gravando os Procedimentos no Aplicativo";
});
await DbSqliteLoad().saveProceduresDB(value).then((value)async{
print('finalizou save Procedures');
await ApiDataLoad().loadProcedimentosRegistros(widget.args).then((value)async{
await DbSqliteLoad().saveProceduresRegisterDB(value).then((value)async{
print('finalizou saveProceduresRegisterDB');
await ApiDataLoad().loadCID(widget.args).then((value)async{
print('loadCID');
setState(() {
messageSteps = "Etapa 3 de 7 - Gravando os CIDs no Aplicativo";
});
await DbSqliteLoad().saveCID(value).then((value)async{
print('finalizou saveCID');
await ApiDataLoad().loadProcedimentosCID(widget.args).then((value)async{
print('loadProcedimentosCID');
await DbSqliteLoad().saveProceduresCID(value).then((value)async{
print('finalizou saveProceduresCID');
await ApiDataLoad().loadCBO(widget.args).then((value)async{
print('loadCBO');
setState(() {
messageSteps = "Etapa 4 de 7 - Gravando os CBOs no Aplicativo";
});
await DbSqliteLoad().saveCBO(value).then((value)async{
print('finalizou saveCBO');
await ApiDataLoad().loadProcedimentosCBO(widget.args).then((value)async{
print('loadProcedimentosCBO');
await DbSqliteLoad().saveProceduresCBO(value).then((value)async{
print('finalizou saveProceduresCBO');
await ApiDataLoad().loadCIAP(widget.args).then((value)async{
print('loadCIAP');
setState(() {
messageSteps = "Etapa 5 de 7 - Gravando os CIAPs no Aplicativo";
});
await DbSqliteLoad().saveCIAP(value).then((value)async{
print('finalizou saveCIAP');
await ApiDataLoad().loadMunicipios(widget.args).then((value)async{
print('loadMunicipios');
setState(() {
messageSteps = "Etapa 6 de 7 - Gravando os Municípios no Aplicativo";
});
await DbSqliteLoad().saveCity(value).then((value)async{
print('finalizou saveCity');
await ApiDataLoad().loadEquipes(widget.args).then((value)async{
print('loadEquipes');
setState(() {
messageSteps = "Etapa 7 de 7 - Gravando as Equipes no Aplicativo";
});
await DbSqliteLoad().saveTeam(value).then((value)async{
print('finalizou saveTeam');
await ApiDataLoad().loadEquipeComponentes(widget.args).then((value)async{
print('loadEquipeComponentes');
await DbSqliteLoad().saveTeamComponents(value).then((value)async{
print('finalizou saveTeamComponents');
setState(() {
finish = true;
});
// Navigator.pushReplacementNamed(context, '/home');
});
// Navigator.pushReplacementNamed(context, '/home');
});
});
});
@@ -122,10 +129,10 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
});
});
});
});
}else{
AlertDialogDefault().alert(context, 'Error', 'Unidades não carregada, tente novamente!', 'Voltar');
}
}else{
AlertDialogDefault().alert(context, 'Error', 'Unidades não carregada, tente novamente!', 'Voltar');
}
});
});
}
});
@@ -151,7 +158,7 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
onPressed: (){
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => SyncUnitScreen(args: widget.args)),
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: widget.args)),
);
},
title: 'Continuar',

View File

@@ -7,10 +7,11 @@ 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/text_default.dart';
import '../models/city_load_model.dart';
import '../service/api/api_data.dart';
import '../service/api/encrypt_password.dart';
import 'load_init_screen.dart';
import '../../models/city_load_model.dart';
import '../../service/api/api_data_load.dart';
import '../../service/api/encrypt_password.dart';
import '../../service/shared_preferences/shared_preferences_service.dart';
import '../load_init_screen.dart';
class LoginLoadScreen extends StatefulWidget {
const LoginLoadScreen({Key? key}) : super(key: key);
@@ -30,12 +31,13 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
String mode = 'desenvolvimento';
String urlAPI = UrlApiConst.ApiUrlDesenvolvimento;
bool loading = false;
final PrefService _prefService = PrefService();
checkLogin()async{
CityLoadModel? model;
ArgsLoadInitModel? args;
if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){
if(selectCity!=null){
_prefService.createCacheModel(inputUser.text,inputPassword.text,selectCity!,mode);
setState(() {
error = '';
loading = true;
@@ -55,7 +57,7 @@ class _LoginLoadScreenState extends State<LoginLoadScreen> {
);
}
if(args!=null){
await ApiData().apiConect(args!).then((response) async {
await ApiDataLoad().apiConect(args!).then((response) async {
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
setState(() {
error = 'Usuário bloqueado/senha incorreta';

View File

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:rkm/models/args_load_init_model.dart';
import 'package:rkm/service/api/url_api_const.dart';
import 'package:rkm/service/db/db_sqlite.dart';
import 'package:rkm/service/db/db_sqlite_load.dart';
import 'package:rkm/utils/color_palette.dart';
import 'package:rkm/utils/const_variable.dart';
import 'package:rkm/widgets/button_default.dart';
@@ -11,10 +11,10 @@ import 'package:rkm/widgets/dropdown_button_city.dart';
import 'package:rkm/widgets/input_text.dart';
import 'package:rkm/widgets/text_default.dart';
import 'package:sqflite/sqflite.dart';
import '../models/city_load_model.dart';
import '../service/api/api_data.dart';
import '../service/api/encrypt_password.dart';
import 'load_init_screen.dart';
import '../../models/city_load_model.dart';
import '../../service/api/api_data_load.dart';
import '../../service/api/encrypt_password.dart';
import '../load_init_screen.dart';
class LoginSavedScreen extends StatefulWidget {
List listControl;
@@ -63,7 +63,7 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
);
}
if(args!=null){
await ApiData().apiConect(args!).then((response) async {
await ApiDataLoad().apiConect(args!).then((response) async {
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
setState(() {
error = 'Usuário bloqueado/senha incorreta';

View File

@@ -1,6 +1,7 @@
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/service/api/url_api_const.dart';
import 'package:rkm/utils/color_palette.dart';
import 'package:rkm/utils/const_variable.dart';
@@ -10,23 +11,24 @@ import 'package:rkm/widgets/dropdown_button_default.dart';
import 'package:rkm/widgets/input_text.dart';
import 'package:rkm/widgets/text_default.dart';
import 'package:sqflite/sqflite.dart';
import '../models/city_load_model.dart';
import '../service/api/api_data.dart';
import '../service/api/encrypt_password.dart';
import '../service/db/db_sqlite.dart';
import 'load_init_screen.dart';
class SyncUnitScreen extends StatefulWidget {
import '../../models/city_load_model.dart';
import '../../service/api/api_data_load.dart';
import '../../service/api/encrypt_password.dart';
import '../../service/db/db_sqlite_load.dart';
import '../../service/shared_preferences/shared_preferences_service.dart';
import '../load_init_screen.dart';
class SyncLoginScreen extends StatefulWidget {
ArgsLoadInitModel args;
SyncUnitScreen({
SyncLoginScreen({
required this.args
});
@override
State<SyncUnitScreen> createState() => _SyncUnitScreenState();
State<SyncLoginScreen> createState() => _SyncLoginScreenState();
}
class _SyncUnitScreenState extends State<SyncUnitScreen> {
class _SyncLoginScreenState extends State<SyncLoginScreen> {
var inputUser = TextEditingController();
var inputPassword = TextEditingController();
@@ -35,63 +37,60 @@ class _SyncUnitScreenState extends State<SyncUnitScreen> {
String? selectUnit;
String? selectTeam;
bool validatorDropDown= false;
bool citizenOutArea = false;
int contLogo = 0;
String mode = 'desenvolvimento';
String urlAPI = UrlApiConst.ApiUrlDesenvolvimento;
bool loading = false;
List<String> listUnit=[];
List searchUnitCodList=[];
List listTeam = [];
List<String> listTeam = [];
String idUnidade ='';
String idUsuario ='';
final PrefService _prefService = PrefService();
checkLogin()async{
CityLoadModel? model;
ArgsLoadInitModel? args;
if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){
if(selectUnit!=null){
setState(() {
error = '';
loading = true;
});
await DbSqlite().saveCityInit(widget.args).then((value)async{
});
if(model!=null){
args = ArgsLoadInitModel(
mode: mode,
model:model!,
user: inputUser.text,
password: inputPassword.text,
urlAPI: urlAPI
);
}
if(args!=null){
await ApiData().apiConect(args!).then((response) async {
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
await ApiDataLoad().apiConect(widget.args!).then((response) async {
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
setState(() {
error = 'Usuário bloqueado/senha incorreta';
});
}else if(response['status']==0) {
setState(() {
error = 'Usuário não encontrado';
});
}else if(response['status']==1) {
setState((){
error = '';
});
if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){
setState(() {
error = 'Usuário bloqueado/senha incorreta';
loading = false;
});
}else if(response['status']==0) {
setState(() {
error = 'Usuário não encontrado';
});
}else if(response['status']==1) {
setState((){
error = '';
});
//verificar se a criptografia identificou se a senha está correta
if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){
// print(EncryptPassword().encrypt(inputPassword.text,response['userPass']));
setState(() {
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){
Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoadInitScreen(args: args!)),
MaterialPageRoute(builder: (context) => SyncInitScreen(args: args)),
);
}
});
}
});
}
}
});
}else{
setState(() {
error = 'Selecione sua cidade';
@@ -113,10 +112,18 @@ class _SyncUnitScreenState extends State<SyncUnitScreen> {
inputPassword.text = widget.args.password;
});
getUnit();
getUser();
}
getUser(){
_prefService.readCacheIdUsuario('idUsuario').then((value){
if(value != null){
idUsuario = value;
}
});
}
getUnit()async{
Database db = await DbSqlite().intialDB();
Database db = await DbSqliteLoad().intialDB();
var query = "SELECT * FROM UNIDADES";
List list = await db.rawQuery(query);
// print("SELECT * FROM UNIDADES");
@@ -125,8 +132,6 @@ class _SyncUnitScreenState extends State<SyncUnitScreen> {
listUnit.add(list[i]['NOME_UNIDADE']);
searchUnitCodList.add(list[i]['ID_UNIDADE']);
}
print('searchListUnit');
print(searchUnitCodList);
setState(() {});
}
@@ -134,15 +139,19 @@ class _SyncUnitScreenState extends State<SyncUnitScreen> {
for(int i=0; listUnit.length > i;i++){
if(listUnit[i] == selectUnit){
idUnidade = searchUnitCodList[i].toString();
print(searchUnitCodList[i]);
_prefService.createCacheidUnidade(idUnidade);
}
}
if(idUnidade!=''){
Database db = await DbSqlite().intialDB();
var query = "SELECT * FROM EQUIPES WHERE ID_UNIDADE = $idUnidade";
List list = await db!.rawQuery(query);
print('getEquipes');
print(list);
Database db = await DbSqliteLoad().intialDB();
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);
listTeam.clear();
for(int i=0; list.length > i;i++){
listTeam.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} - Microárea : ${list[i]['MICROAREA']}');
}
// print('getEquipes');
// print(listTeam);
setState(() {});
}
}
@@ -168,25 +177,7 @@ class _SyncUnitScreenState extends State<SyncUnitScreen> {
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
children: [
GestureDetector(
onTap: loading?null:()=>setState((){
contLogo++;
if(contLogo>=5 && contLogo<=10){
mode = UrlApiConst.ModeHomologacao;
urlAPI = UrlApiConst.ApiUrlHomologacao;
}
if(contLogo>10){
mode = UrlApiConst.ModeDesenvolvimento;
urlAPI = UrlApiConst.ApiUrlDesenvolvimento;
if(contLogo==15){
contLogo=0;
mode = UrlApiConst.ModeOnline;
urlAPI = UrlApiConst.ApiUrlOnline;
}
}
}),
child: Image.asset('assets/images/logo.PNG',width: width*0.4)
),
Image.asset('assets/images/logo.PNG',width: width*0.4),
mode == 'homologacao'?Image.asset('assets/images/homologacao.png',width: width*0.4):Container(),
mode == 'desenvolvimento'?Image.asset('assets/images/desenvolvimento.png',width: width*0.4):Container(),
SizedBox(height: 10),
@@ -203,7 +194,7 @@ class _SyncUnitScreenState extends State<SyncUnitScreen> {
autovalidateMode: AutovalidateMode.onUserInteraction,
child: Container(
width: width*0.6,
height: height*0.3,
height: height*0.35,
child: ListView(
children: [
InputText(
@@ -231,18 +222,36 @@ class _SyncUnitScreenState extends State<SyncUnitScreen> {
list: listUnit,
select: selectUnit,
onChanged: (value){
// for(int i=0;listUnit.length > i;i++){
// if(listUnit[i] == selectUnit){
//
// }
// }
setState(() {
selectUnit = value!;
validatorDropDown = true;
selectTeam = null;
});
getTeam();
},
),
DropDownButtonDefault(
width: width*0.6,
title: 'Equipe',
list: listTeam,
select: selectTeam,
onChanged: (value){
setState(() {
selectTeam = value!;
});
},
),
Container(
margin: EdgeInsets.symmetric(vertical: 5),
color: ColorPalette.white,
width: width*0.6,
height: height*0.05,
child: SwitchListTile(
title: TextDefault(text: 'Sincronizar Cidadãos Fora de Área',fontSize: 15,color: Colors.black,),
onChanged:(v)=>setState(()=>citizenOutArea=v),
value: citizenOutArea,
),
),
],
),
),
@@ -253,6 +262,18 @@ class _SyncUnitScreenState extends State<SyncUnitScreen> {
width: width*0.6,
),
SizedBox(height: 10),
loading?Container():Container(
padding: EdgeInsets.symmetric(vertical: 5),
width: width*0.6,
child: TextDefault(
text: 'Cidade Sincronizada: ${widget.args.model.nameCityFront!=''?widget.args.model.nameCityFront:''}',
fontWeigth: FontWeight.bold,
fontSize: 18,
color: Colors.black,
textAlign: TextAlign.center,
maxLines: 2,
),
),
TextDefault(text: error,color: ColorPalette.red),
],
),

View File

@@ -2,10 +2,12 @@ import 'package:flutter/foundation.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/sync_unit_screen.dart';
import 'package:rkm/screens/login/sync_login_screen.dart';
import 'package:rkm/service/api/url_api_const.dart';
import 'package:rkm/utils/const_variable.dart';
import '../service/db/db_sqlite.dart';
import 'login_saved_screen.dart';
import '../service/db/db_sqlite_load.dart';
import '../service/shared_preferences/shared_preferences_service.dart';
import 'login/login_saved_screen.dart';
class SplashScreen extends StatefulWidget {
const SplashScreen({Key? key}) : super(key: key);
@@ -19,28 +21,49 @@ class _SplashScreenState extends State<SplashScreen> {
@override
void initState() {
super.initState();
DbSqlite().intialDB();
DbSqliteLoad().intialDB();
timer();
}
timer()async{
await DbSqlite().intialDB().then((db)async{
List data = await db.query('MUNICIPIOS');
if(data.length != 0){
await DbSqliteLoad().intialDB().then((db)async{
List dataControl = await db.query('MUNICIPIOS');
List dataCitizen = await db.query('CIDADAOS');
if(dataControl.length != 0){
var query = "SELECT * FROM CONTROLE_INTERNO";
data = await db.rawQuery(query);
if(data.length != 0){
dataControl = await db.rawQuery(query);
print(dataCitizen);
if(dataCitizen.length != 0){
Navigator.push(
context,
MaterialPageRoute(builder: (context) => LoginSavedScreen(listControl: data)),
MaterialPageRoute(builder: (context) => LoginSavedScreen(listControl: dataControl)),
);
}else{
CityLoadModel model = CityLoadModel(codCity: 0, nameCityApi: '', nameCityFront: '', codState: '', codCityIbge: 0);
ArgsLoadInitModel args = ArgsLoadInitModel(mode: '', model: model, user: '', password: '', urlAPI: '');
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SyncUnitScreen(args: args)),
);
CityLoadModel? model;
String? url;
final PrefService _prefService = PrefService();
_prefService.readCacheModel('user', 'password', 'city', 'mode').then((list){
print('list $list');
for(int i=0;ConstVariable().itensCity.length > i;i++){
if(ConstVariable().itensCity[i].nameCityFront == list[2]!){
model = ConstVariable().itensCity[i];
}
}
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(
context,
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: args)),
);
}
});
}
}else{
Navigator.pushReplacementNamed(context, '/login_load');

View File

@@ -0,0 +1,231 @@
import 'package:flutter/material.dart';
import 'package:rkm/screens/login/sync_login_screen.dart';
import 'package:rkm/service/api/api_data_sync.dart';
import 'package:rkm/service/db/db_sqlite_sync.dart';
import 'package:rkm/utils/color_palette.dart';
import 'package:rkm/widgets/alert_dialog_default.dart';
import 'package:rkm/widgets/button_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/shared_preferences/shared_preferences_service.dart';
class SyncInitScreen extends StatefulWidget {
ArgsLoadInitModel args;
SyncInitScreen({
required this.args,
});
@override
State<SyncInitScreen> createState() => _SyncInitScreenState();
}
class _SyncInitScreenState extends State<SyncInitScreen> {
final PrefService _prefService = PrefService();
String messageSteps = 'Aguarde ...';
bool finish = false;
String idUsuario = '';
String idUnidade = '';
String area = '';
String microarea = '';
bool foraArea = false;
@override
void initState() {
super.initState();
dataUser();
}
dataUser()async{
_prefService.readCacheIdUnidade('idUnidade').then((id)async{
_prefService.readCacheSync('area', false).then((list){
foraArea = list[1];
List splited = list[0].split(': ');
area = splited[2].toString().substring(0,1);
microarea = splited[3];
idUnidade = id;
initSync();
});
});
}
initSync()async{
await DbSqliteSync().deleteSync().then((_)async{
await ApiDataSync().syncPerm(widget.args).then((response)async{
if(response['status'] == 0 || response['sync_perm'] != "S"){
AlertDialogDefault().alert(context, 'Erro', 'Usuário sem permissão para Sincronização de Unidade!', 'Voltar');
}else{
setState(()=> messageSteps = "Etapa 1 de 10 - Importando informações do CONECTASUS");
await ApiDataSync().syncBairros(widget.args).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Bairros - Por favor, tente novamente!");
}else{
setState(()=> messageSteps = "Etapa 2 de 10 - Gravando os Bairros no Aplicativo");
}
await DbSqliteSync().insertBairros(value).then((value)async{
await ApiDataSync().syncTiposLogradouros(widget.args).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Tipos de Logradouros - Por favor, tente novamente!");
}else{
setState(()=> messageSteps = "Etapa 3 de 10 - Gravando os Tipos de Logradouros no Aplicativo");
}
await DbSqliteSync().insertTiposLogradouros(value).then((value)async{
await ApiDataSync().syncLogradouros(widget.args).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Logradouros - Por favor, tente novamente!");
}else{
setState(()=> messageSteps = "Etapa 4 de 10 - Gravando os Logradouros no Aplicativo");
}
await DbSqliteSync().insertLogradouros(value).then((value)async{
await ApiDataSync().syncLoteamentos(widget.args).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Loteamentos - Por favor, tente novamente!");
}else{
setState(()=> messageSteps = "Etapa 5 de 10 - Gravando os Loteamentos no Aplicativo");
}
await DbSqliteSync().insertLoteamentos(value).then((value)async{
await ApiDataSync().syncProfissionais(widget.args,idUnidade).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Profissionais - Por favor, tente novamente!");
}else{
setState(()=> messageSteps = "Etapa 6 de 10 - Gravando os Profissionais no Aplicativo");
}
await DbSqliteSync().insertProfissionais(value).then((value)async{
await ApiDataSync().syncProfissionaisCBOs(widget.args,idUnidade).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os CBOs dos Profissionais - Por favor, tente novamente!");
}else{
setState(()=> messageSteps = "Etapa 7 de 10 - Gravando os CBO´s dos Profissionais no Aplicativo");
}
await DbSqliteSync().insertProfissionaisCBOs(value).then((value)async{
await ApiDataSync().syncCidadaos(widget.args,idUnidade,area,microarea,foraArea).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros dos Cidadãos - Por favor, tente novamente!");
}else{
setState(()=> messageSteps = "Etapa 8 de 10 - Gravando os Cidadãos no Aplicativo");
}
await DbSqliteSync().insertCidadaos(value).then((value)async{
await ApiDataSync().syncCadastrosDomiciliares(widget.args,idUnidade,area,microarea,foraArea).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros Domiciliares - Por favor, tente novamente!");
}else{
setState(()=> messageSteps = "Etapa 9 de 10 - Gravando os Cadastros Domiciliares no Aplicativo");
}
await DbSqliteSync().insertCadastrosDomiciliares(value).then((value)async{
await ApiDataSync().syncCadastrosIndividuais(widget.args,idUnidade,area,microarea,foraArea).then((value)async{
if(value.length == 0){
setState(()=> messageSteps = "ERRO: Erro para carregar os Cadastros Individuais - Por favor, tente novamente!");
}else{
setState(()=> messageSteps = "Etapa 10 de 10 - Gravando os Cadastros Individuais no Aplicativo");
}
await DbSqliteSync().insertCadastrosIndividuais(value).then((value)async{
//agora salvar controle interno
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
});
}
});
});
}
@override
Widget build(BuildContext context) {
double width = MediaQuery.of(context).size.width;
double height = MediaQuery.of(context).size.height;
return Scaffold(
bottomSheet: Container(
width: width,
height: height*0.05,
color: ColorPalette.appBar,
child: finish
?Row(
children: [
Spacer(),
ButtonDefault(
onPressed: (){
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: widget.args)),
);
},
title: 'Continuar',
width: width*0.3,
height: height*0.1,
textColor: ColorPalette.white,
background: ColorPalette.appBar,
borderColor: ColorPalette.appBar,
),
],
)
:Padding(
padding: const EdgeInsets.all(10.0),
child: TextDefault(
text: messageSteps,
color: ColorPalette.white,
maxLines: 2,
),
),
),
body: Container(
padding: EdgeInsets.all(50),
width: width,
height: height,
decoration: BoxDecoration(
color: ColorPalette.grayBackground,
image: DecorationImage(
fit: BoxFit.fitHeight,
image: AssetImage('assets/images/load_image.png'
),
)
),
child: finish?ListView(
children: [
Image.asset('assets/images/logo.PNG',width: width*0.3,height: height*0.2,),
Image.asset('assets/images/load-done.png',width: width*0.9,height: height*0.2,),
],
):ListView(
children: [
Image.asset('assets/images/logo.PNG',width: width*0.2,height: height*0.1,),
SizedBox(height: height*0.1),
Image.asset('assets/images/loading.gif',width: width*0.2,height: height*0.1,),
SizedBox(height: height*0.1),
TextDefault(
text: 'Aguarde enquanto a Sincronização da Unidade é realizada.\n',
textAlign: TextAlign.center,
maxLines: 2,
color: Colors.black,
fontWeigth: FontWeight.bold,
),
TextDefault(
text: 'Esse processo pode levar vários minutos dependendo da sua conexão!',
color: Colors.black,
fontWeigth: FontWeight.bold,
textAlign: TextAlign.center,
maxLines: 3,
)
],
),
),
);
}
}