diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 5c7b80e..5e1c587 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ { String messageSteps = 'Aguarde ...'; + bool finish = false; @override void initState() { super.initState(); - // initLoading(); - finishLoad(); - } - - finishLoad()async{ - await ApiData().loadCompetencia(widget.args).then((value)async{ - await DbSqlite().saveCompetence(value,widget.args).then((value)async{ - Navigator.pushReplacementNamed(context, '/home'); - }); - }); + initLoading(); } initLoading()async{ @@ -105,7 +98,10 @@ class _LoadInitScreenState extends State { print('loadEquipeComponentes'); await DbSqlite().saveTeamComponents(value).then((value)async{ print('finalizou saveTeamComponents'); - finishLoad(); + setState(() { + finish = true; + }); + // Navigator.pushReplacementNamed(context, '/home'); }); }); }); @@ -147,12 +143,34 @@ class _LoadInitScreenState extends State { width: width, height: height*0.05, color: ColorPalette.appBar, - padding: EdgeInsets.all(10), - child: TextDefault( - text: messageSteps, - color: ColorPalette.white, - maxLines: 2, - ), + child: finish + ?Row( + children: [ + Spacer(), + ButtonDefault( + onPressed: (){ + Navigator.pushReplacement( + context, + MaterialPageRoute(builder: (context) => SyncUnitScreen(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), @@ -166,7 +184,12 @@ class _LoadInitScreenState extends State { ), ) ), - child: ListView( + 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), diff --git a/lib/screens/login_screen.dart b/lib/screens/login_load_screen.dart similarity index 72% rename from lib/screens/login_screen.dart rename to lib/screens/login_load_screen.dart index 751f79e..0a7bf48 100644 --- a/lib/screens/login_screen.dart +++ b/lib/screens/login_load_screen.dart @@ -1,6 +1,4 @@ -import 'dart:convert'; 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/utils/color_palette.dart'; @@ -9,17 +7,18 @@ 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'; -class LoginScreen extends StatefulWidget { - const LoginScreen({Key? key}) : super(key: key); +class LoginLoadScreen extends StatefulWidget { + const LoginLoadScreen({Key? key}) : super(key: key); @override - State createState() => _LoginScreenState(); + State createState() => _LoginLoadScreenState(); } -class _LoginScreenState extends State { +class _LoginLoadScreenState extends State { var inputUser = TextEditingController(); var inputPassword = TextEditingController(); @@ -33,45 +32,56 @@ class _LoginScreenState extends State { bool loading = false; checkLogin()async{ + CityLoadModel? model; + ArgsLoadInitModel? args; if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){ if(selectCity!=null){ setState(() { error = ''; loading = true; - }); - ArgsLoadInitModel args = ArgsLoadInitModel( - mode: mode, - city: selectCity!, - user: inputUser.text, - password: inputPassword.text, - urlAPI: urlAPI - ); - await ApiData().apiConect(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 = ''; - }); - //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; - }); - Navigator.push( - context, - MaterialPageRoute(builder: (context) => LoadInitScreen(args: args)), - ); + for(int i=0;ConstVariable().itensCity.length > i;i++){ + if(ConstVariable().itensCity[i].nameCityFront == selectCity!){ + model = ConstVariable().itensCity[i]; } } + }); + 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){ + 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 = ''; + }); + //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; + }); + Navigator.push( + context, + MaterialPageRoute(builder: (context) => LoadInitScreen(args: args!)), + ); + } + } }); + } }else{ setState(() { error = 'Selecione sua cidade'; @@ -84,14 +94,6 @@ class _LoginScreenState extends State { } } - @override - void initState() { - super.initState(); - setState(() { - now = DateFormat('dd/MM/yyyy kk:mm:ss').format(DateTime.now()); - }); - } - @override Widget build(BuildContext context) { @@ -103,15 +105,6 @@ class _LoginScreenState extends State { centerTitle: true, title: TextDefault(text: 'RKM AB - Carga Inicial',fontSize: ConstVariable().fontSizeTitleAppBar,color: ColorPalette.white), ), - // bottomSheet: Container( - // color: ColorPalette.secundary, - // padding: EdgeInsets.all(8.0), - // child: TextDefault( - // text: 'Última sincronização $now', - // fontSize: 15, - // color: ColorPalette.gray, - // ), - // ), body: SingleChildScrollView( child: Container( padding: EdgeInsets.only(top: height*0.2), @@ -148,8 +141,9 @@ class _LoginScreenState extends State { child: Column( mainAxisSize: MainAxisSize.min, children: [ - CircularProgressIndicator(), - TextDefault(text: 'Carregando dados...',color: ColorPalette.black54,) + Image.asset('assets/images/loading.gif'), + SizedBox(height: 10), + TextDefault(text: 'Carregando dados...',color: ColorPalette.black54,fontSize: 20,fontWeigth: FontWeight.bold,) ], ), ):Form( diff --git a/lib/screens/login_saved_screen.dart b/lib/screens/login_saved_screen.dart new file mode 100644 index 0000000..a6b9d26 --- /dev/null +++ b/lib/screens/login_saved_screen.dart @@ -0,0 +1,235 @@ +import 'dart:convert'; +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/utils/color_palette.dart'; +import 'package:rkm/utils/const_variable.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/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'; +class LoginSavedScreen extends StatefulWidget { + List listControl; + + LoginSavedScreen({ + required this.listControl +}); + + @override + State createState() => _LoginSavedScreenState(); +} + +class _LoginSavedScreenState extends State { + + var inputUser = TextEditingController(); + var inputPassword = TextEditingController(); + String error = ''; + String? now; + String? selectCity; + bool validatorDropDown= false; + int contLogo = 0; + String mode = 'homologacao'; + String urlAPI = UrlApiConst.ModeHomologacao; + bool loading = false; + + checkLogin()async{ + CityLoadModel? model; + ArgsLoadInitModel? args; + if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){ + if(selectCity!=null){ + setState(() { + error = ''; + loading = true; + for(int i=0;ConstVariable().itensCity.length > i;i++){ + if(ConstVariable().itensCity[i].nameCityFront == selectCity!){ + model = ConstVariable().itensCity[i]; + } + } + }); + 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){ + 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 = ''; + }); + //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; + }); + Navigator.push( + context, + MaterialPageRoute(builder: (context) => LoadInitScreen(args: args!)), + ); + } + } + }); + } + }else{ + setState(() { + error = 'Selecione sua cidade'; + }); + } + }else{ + setState(() { + error = 'Usuário/senha inválido(s)'; + }); + } + } + + @override + void initState() { + super.initState(); + setState(() { + if(widget.listControl.length!=0){ + mode = widget.listControl[0]['AMBIENTE']; + } + }); + } + + @override + Widget build(BuildContext context) { + + double width = MediaQuery.of(context).size.width; + double height = MediaQuery.of(context).size.height; + + return Scaffold( + appBar: AppBar( + centerTitle: true, + title: TextDefault(text: 'RKM AB - Carga Inicial',fontSize: ConstVariable().fontSizeTitleAppBar,color: ColorPalette.white), + ), + body: SingleChildScrollView( + child: Container( + padding: EdgeInsets.only(top: height*0.1), + width: width, + height: height, + decoration: ConstVariable().backgroundGradient, + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + 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), + loading?Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Image.asset('assets/images/loading.gif'), + SizedBox(height: 10), + TextDefault(text: 'Carregando dados...',color: ColorPalette.black54,fontSize: 20,fontWeigth: FontWeight.bold,) + ], + ), + ):Form( + autovalidateMode: AutovalidateMode.onUserInteraction, + child: Container( + width: width*0.6, + height: height*0.2, + child: ListView( + children: [ + InputText( + hint: 'Usuário', + label: inputUser.text.isNotEmpty?'':'Usuário', + error: 'Campo obrigatório', + controller: inputUser, + width: width*0.6, + colorBorder: Colors.white, + onChanged: (v)=>setState((){}), + ), + InputText( + hint: 'Senha', + label: inputPassword.text.isNotEmpty?'':'Senha', + error: 'Campo obrigatório', + obscure: true, + controller: inputPassword, + width: width*0.6, + colorBorder: Colors.white, + onChanged: (v)=>setState((){}), + ), + ], + ), + ), + ), + loading?Container():ButtonDefault( + onPressed: ()=>checkLogin(), + title: 'Entrar', + width: width*0.6, + ), + SizedBox(height: 10), + TextDefault(text: error,color: ColorPalette.red), + widget.listControl.length==0?Container():Container( + width: width*0.6, + child: TextDefault( + text: 'Última sincronização: '+DateFormat('dd/MM/yyyy kk:mm:ss').format(DateTime.parse(widget.listControl[0]['ULTIMA_SINCRONIZACAO'])), + fontWeigth: FontWeight.bold, + color: Colors.black, + textAlign: TextAlign.center, + maxLines: 2, + ), + ), + widget.listControl.length==0?Container():Container( + padding: EdgeInsets.symmetric(vertical: 5), + width: width*0.6, + child: TextDefault( + text: 'Unidade: '+widget.listControl[0]['UNIDADE'].toString(), + fontWeigth: FontWeight.bold, + color: Colors.black, + textAlign: TextAlign.center, + maxLines: 2, + ), + ), + widget.listControl.length==0?Container():Container( + padding: EdgeInsets.symmetric(vertical: 5), + width: width*0.6, + child: TextDefault( + text: 'Competência: '+widget.listControl[0]['COMPETENCIA'].toString(), + fontWeigth: FontWeight.bold, + color: Colors.black, + textAlign: TextAlign.center, + maxLines: 2, + ), + ), + widget.listControl.length==0?Container():Container( + padding: EdgeInsets.symmetric(vertical: 5), + width: width*0.6, + child: TextDefault( + text: 'Área: '+widget.listControl[0]['AREA'].toString(), + fontWeigth: FontWeight.bold, + color: Colors.black, + textAlign: TextAlign.center, + maxLines: 2, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/screens/registers_citizen/register_citizen_screen.dart b/lib/screens/registers_citizen/register_citizen_screen.dart index ea30513..6900717 100644 --- a/lib/screens/registers_citizen/register_citizen_screen.dart +++ b/lib/screens/registers_citizen/register_citizen_screen.dart @@ -297,13 +297,13 @@ class _RegisterCitizenScreenState extends State { child: ListTile( onTap: (){ setState(() { - cityBirthController.text = ConstVariable().itensCity[index]; + cityBirthController.text = ConstVariable().itensCity[index].nameCityFront; Navigator.pop(context); }); }, title: TextDefault( color: ColorPalette.black54, - text: ConstVariable().itensCity[index], + text: ConstVariable().itensCity[index].nameCityFront, fontSize: 16, maxLines: 2, ), @@ -572,14 +572,14 @@ class _RegisterCitizenScreenState extends State { child: ListTile( onTap: (){ setState(() { - cityController.text = ConstVariable().itensCity[index]; - codIBGEController.text = '353870'; + cityController.text = ConstVariable().itensCity[index].nameCityFront; + codIBGEController.text = ConstVariable().itensCity[index].codCityIbge.toString(); Navigator.pop(context); }); }, title: TextDefault( color: ColorPalette.black54, - text: ConstVariable().itensCity[index], + text: ConstVariable().itensCity[index].nameCityFront, fontSize: 16, maxLines: 2, ), diff --git a/lib/screens/splash_screen.dart b/lib/screens/splash_screen.dart index 17881b7..ac615ac 100644 --- a/lib/screens/splash_screen.dart +++ b/lib/screens/splash_screen.dart @@ -1,8 +1,11 @@ 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/utils/const_variable.dart'; - import '../service/db/db_sqlite.dart'; +import 'login_saved_screen.dart'; class SplashScreen extends StatefulWidget { const SplashScreen({Key? key}) : super(key: key); @@ -16,16 +19,33 @@ class _SplashScreenState extends State { @override void initState() { super.initState(); - DbSqlite().intialDB().then((value){ - - }); + DbSqlite().intialDB(); timer(); } timer()async{ - Future.delayed(Duration(seconds: 3),(){ - Navigator.pushReplacementNamed(context, '/login'); - }); + await DbSqlite().intialDB().then((db)async{ + List data = await db.query('MUNICIPIOS'); + if(data.length != 0){ + var query = "SELECT * FROM CONTROLE_INTERNO"; + data = await db.rawQuery(query); + if(data.length != 0){ + Navigator.push( + context, + MaterialPageRoute(builder: (context) => LoginSavedScreen(listControl: data)), + ); + }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)), + ); + } + }else{ + Navigator.pushReplacementNamed(context, '/login_load'); + } + }); } @override diff --git a/lib/screens/sync_unit_screen.dart b/lib/screens/sync_unit_screen.dart new file mode 100644 index 0000000..c83a7e6 --- /dev/null +++ b/lib/screens/sync_unit_screen.dart @@ -0,0 +1,263 @@ +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/utils/color_palette.dart'; +import 'package:rkm/utils/const_variable.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/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 { + ArgsLoadInitModel args; + + SyncUnitScreen({ + required this.args +}); + + @override + State createState() => _SyncUnitScreenState(); +} + +class _SyncUnitScreenState extends State { + + var inputUser = TextEditingController(); + var inputPassword = TextEditingController(); + String error = ''; + String? now; + String? selectUnit; + String? selectTeam; + bool validatorDropDown= false; + int contLogo = 0; + String mode = 'desenvolvimento'; + String urlAPI = UrlApiConst.ApiUrlDesenvolvimento; + bool loading = false; + List listUnit=[]; + List searchUnitCodList=[]; + List listTeam = []; + String idUnidade =''; + 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){ + 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 = ''; + }); + //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; + }); + Navigator.push( + context, + MaterialPageRoute(builder: (context) => LoadInitScreen(args: args!)), + ); + } + } + }); + } + }else{ + setState(() { + error = 'Selecione sua cidade'; + }); + } + }else{ + setState(() { + error = 'Usuário/senha inválido(s)'; + }); + } + } + + @override + void initState() { + super.initState(); + setState(() { + mode = widget.args.mode; + inputUser.text = widget.args.user; + inputPassword.text = widget.args.password; + }); + getUnit(); + } + + getUnit()async{ + Database db = await DbSqlite().intialDB(); + var query = "SELECT * FROM UNIDADES"; + 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++){ + listUnit.add(list[i]['NOME_UNIDADE']); + searchUnitCodList.add(list[i]['ID_UNIDADE']); + } + print('searchListUnit'); + print(searchUnitCodList); + setState(() {}); + } + + getTeam()async{ + for(int i=0; listUnit.length > i;i++){ + if(listUnit[i] == selectUnit){ + idUnidade = searchUnitCodList[i].toString(); + print(searchUnitCodList[i]); + } + } + 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); + setState(() {}); + } + } + + @override + Widget build(BuildContext context) { + + double width = MediaQuery.of(context).size.width; + double height = MediaQuery.of(context).size.height; + + return Scaffold( + appBar: AppBar( + centerTitle: true, + title: TextDefault(text: 'RKM AB - Sincronização de Unidade',fontSize: ConstVariable().fontSizeTitleAppBar,color: ColorPalette.white), + ), + body: SingleChildScrollView( + child: Container( + padding: EdgeInsets.only(top: height*0.2), + width: width, + height: height, + decoration: ConstVariable().backgroundGradient, + child: Column( + 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) + ), + 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), + loading?Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Image.asset('assets/images/loading.gif'), + SizedBox(height: 10), + TextDefault(text: 'Carregando dados...',color: ColorPalette.black54,fontSize: 20,fontWeigth: FontWeight.bold,) + ], + ), + ):Form( + autovalidateMode: AutovalidateMode.onUserInteraction, + child: Container( + width: width*0.6, + height: height*0.3, + child: ListView( + children: [ + InputText( + hint: 'Usuário', + label: inputUser.text.isNotEmpty?'':'Usuário', + error: 'Campo obrigatório', + controller: inputUser, + width: width*0.6, + colorBorder: Colors.white, + onChanged: (v)=>setState((){}), + ), + InputText( + hint: 'Senha', + label: inputPassword.text.isNotEmpty?'':'Senha', + error: 'Campo obrigatório', + obscure: true, + controller: inputPassword, + width: width*0.6, + colorBorder: Colors.white, + onChanged: (v)=>setState((){}), + ), + DropDownButtonDefault( + width: width*0.6, + title: 'Unidade', + list: listUnit, + select: selectUnit, + onChanged: (value){ + // for(int i=0;listUnit.length > i;i++){ + // if(listUnit[i] == selectUnit){ + // + // } + // } + setState(() { + selectUnit = value!; + validatorDropDown = true; + }); + getTeam(); + }, + ), + ], + ), + ), + ), + loading?Container():ButtonDefault( + onPressed: ()=>checkLogin(), + title: 'Sincronizar', + width: width*0.6, + ), + SizedBox(height: 10), + TextDefault(text: error,color: ColorPalette.red), + ], + ), + ), + ), + ); + } +} diff --git a/lib/service/api/api_data.dart b/lib/service/api/api_data.dart index 28a479e..ca1703e 100644 --- a/lib/service/api/api_data.dart +++ b/lib/service/api/api_data.dart @@ -1,20 +1,18 @@ import 'dart:convert'; import 'package:http/http.dart' as http; -import 'package:rkm/utils/const_variable.dart'; import '../../models/args_load_init_model.dart'; class ApiData{ Future apiConect(ArgsLoadInitModel args)async{ - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/pass/${args.user}'; + //http://192.168.0.42:8010/api/atb/desenvolvimento/cabreuva/load/pass/admin + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/pass/${args.user}'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); return map; } Future loadPerm(ArgsLoadInitModel args)async{ //http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/load/perm/${args.user}'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/load/perm/${args.user}'; // final url = 'http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); @@ -22,9 +20,9 @@ class ApiData{ return map; } Future loadUnidades(ArgsLoadInitModel args)async{ + print('entrou aqui ${args.model.nameCityApi}'); // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/unidades - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/unidades'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/unidades'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); // print(map); @@ -32,8 +30,7 @@ class ApiData{ } Future loadProcedimentos(ArgsLoadInitModel args)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentos - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentos'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentos'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); // print(map); @@ -41,8 +38,7 @@ class ApiData{ } Future loadProcedimentosRegistros(ArgsLoadInitModel args)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosRegistros - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentosRegistros'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentosRegistros'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); // print(map); @@ -50,8 +46,7 @@ class ApiData{ } Future loadCID(ArgsLoadInitModel args)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/cid - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/cid'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/cid'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); // print(map); @@ -59,8 +54,7 @@ class ApiData{ } Future loadProcedimentosCID(ArgsLoadInitModel args)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosCID - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentosCID'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentosCID'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); // print(map); @@ -68,8 +62,7 @@ class ApiData{ } Future loadCBO(ArgsLoadInitModel args)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/cbo - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/cbo'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/cbo'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); // print(map); @@ -77,8 +70,7 @@ class ApiData{ } Future loadProcedimentosCBO(ArgsLoadInitModel args)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosCBO - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentosCBO'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentosCBO'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); // print(map); @@ -86,8 +78,7 @@ class ApiData{ } Future loadCIAP(ArgsLoadInitModel args)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/ciap - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/ciap'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/ciap'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); // print(map); @@ -95,8 +86,7 @@ class ApiData{ } Future loadMunicipios(ArgsLoadInitModel args)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/municipios - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/municipios'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/municipios'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); // print(map); @@ -104,8 +94,8 @@ class ApiData{ } Future loadEquipes(ArgsLoadInitModel args)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/equipes - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/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 response = await http.get(Uri.parse(url)); final map = json.decode(response.body); // print(map); @@ -113,8 +103,7 @@ class ApiData{ } Future loadEquipeComponentes(ArgsLoadInitModel args)async{ // http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/equipeComponentes - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/equipeComponentes'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/equipeComponentes'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); print(map); @@ -122,47 +111,12 @@ class ApiData{ } Future loadCompetencia(ArgsLoadInitModel args)async{ // 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'; 'competencia sera dinamica com 4 meses para tras exemplo 042023/032023/022023/01/2023'; - - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - // - String cityReplace = ConstVariable().replaceText(args.city); - final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/competencia'; + final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/competencia'; final response = await http.get(Uri.parse(url)); final map = json.decode(response.body); - print(map); + // print(map); return map; } } \ No newline at end of file diff --git a/lib/service/db/db_sqlite.dart b/lib/service/db/db_sqlite.dart index 2cffe60..c32274f 100644 --- a/lib/service/db/db_sqlite.dart +++ b/lib/service/db/db_sqlite.dart @@ -2,8 +2,6 @@ import 'package:rkm/models/args_load_init_model.dart'; import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; -import '../../utils/const_variable.dart'; - class DbSqlite{ Future intialDB()async{ @@ -38,7 +36,7 @@ class DbSqlite{ db.execute('CREATE TABLE IF NOT EXISTS CIDADAOS (ID_CIDADAO INTEGER PRIMARY KEY AUTOINCREMENT, CD_USUARIO_SUS TEXT, NOME_CIDADAO TEXT, NOME_SOCIAL TEXT, SEXO TEXT, DT_NASCIMENTO TEXT, ID_ESTADO_CIVIL INTEGER, NOME_CONJUGE TEXT, NACIONALIDADE INTEGER, ID_MUNICIPIO_NASC INTEGER, NO_MUNICIPIO_NASC TEXT, ESTADO_UF_NASC TEXT, ID_ETNIA INTEGER, ID_ESCOLARIDADE INTEGER, ID_DEFICIENCIA INTEGER, NOME_MAE TEXT, DESCONHECE_MAE INTEGER, NOME_PAI TEXT, DESCONHECE_PAI INTEGER, ID_UNIDADE INTEGER, NUM_PRONTUARIO TEXT, NUM_PRONTUARIO_PROV TEXT, CLASSIFICACAO INTEGER, CLASSIFICACAO_SUB INTEGER, NUM_FAMILIA INTEGER, ID_PAIS_RESID INTEGER, ID_MUNICIPIO_RESID INTEGER, NO_MUNICIPIO_RESID TEXT, ESTADO_UF_RESID TEXT, CODIGO_IBGE_RESID INTEGER, NO_BAIRRO_LOGR TEXT, ID_LOGR_TIPO INTEGER, NOME_LOGR TEXT, CEP_LOGR INTEGER, NUMERO_LOGR INTEGER, LOTEAMENTO_LOGR INTEGER, COMPL_LOGR TEXT, PONTO_REFERENCIA TEXT, ZONA_LOGR INTEGER, DDD_TELEFONE INTEGER, NUM_TELEFONE INTEGER, DDD_CELULAR INTEGER, NUM_CELULAR INTEGER, DDD_RECADO INTEGER, NUM_RECADO INTEGER, EMAIL TEXT, OBSERVACOES TEXT, CPF INTEGER, CNS TEXT, TITULO_ELEITOR INTEGER, RG_NUMERO INTEGER, RG_COMPLEMENTO TEXT, RG_UF TEXT, RG_ORGAO TEXT, RG_DATA_EMISSAO TEXT, TIPO_CERTIDAO INTEGER, NUM_CERTIDAO TEXT, CARTORIO_CERTIDAO TEXT, LIVRO_CERTIDAO TEXT, FOLHA_CERTIDAO TEXT, TERMO_CERTIDAO TEXT, DT_EMISSAO_CERTIDAO TEXT, NUM_CTPS TEXT, NUM_SERIE_CTPS TEXT, ESTADO_UF_CTPS TEXT, NUM_PIS_PASEP TEXT, FL_RETIROU_CARTAO INTEGER, NUM_NIS TEXT, NUM_PROT_CROSS TEXT, RENDA_MENSAL REAL, PROFISSAO TEXT, DT_OBITO TEXT, DECLARACAO_OBITO TEXT, BLOQUEIO INTEGER, ORIGEM INTEGER, DT_HORA_CADASTRO TEXT, ID_USUARIO_CADASTRO INTEGER, ID_DOMICILIO INTEGER, ATENDIMENTOS INTEGER, SINCRONIZADO TEXT);'); db.execute('CREATE TABLE IF NOT EXISTS CIDADAO_DOMICILIO (ID_DOMICILIO INTEGER PRIMARY KEY AUTOINCREMENT, TIPO_IMOVEL INTEGER, ID_AREA_DOMICILIO INTEGER, ID_MICROAREA_DOMICILIO INTEGER, FORA_AREA INTEGER, SITUACAO_MORADIA INTEGER, TIPO_LOCALIDADE INTEGER, TIPO_DOMICILIO INTEGER, NUM_MORADORES INTEGER, NUM_COMODOS INTEGER, SITUACAO_RURAL INTEGER, TIPO_ACESSO INTEGER, MAT_PREDOMINANTE INTEGER, DISPONIBILIDADE_ENERGIA INTEGER, TIPO_ABASTECIMENTO INTEGER, TRATAMENTO_AGUA INTEGER, DESTINO_LIXO INTEGER, ESCOAMENTO INTEGER, FL_ANIMAIS INTEGER, ANIMAIS_GATO INTEGER, ANIMAIS_CACHORRO INTEGER, ANIMAIS_PASSARO INTEGER, ANIMAIS_OUTROS INTEGER, QTDE_ANIMAIS INTEGER, CBO_RESP_CADASTRO TEXT, ID_RESP_CADASTRO INTEGER, CNES_RESP_CADASTRO TEXT, INE_RESP_CADASTRO TEXT, DT_CADASTRO TEXT, ID_EQUIPE INTEGER, ORIGEM TEXT, SINCRONIZADO TEXT, NOME_INSTITUICAO_PERMANENCIA TEXT, PROFISSIONAIS_VINCULADOS_INST INTEGER, RESPONSAVEL_TECNICO_INST TEXT, CNS_RESP_TECNICO_INST TEXT, CARGO_RESP_TECNICO_INST TEXT, TEL_RESP_TECNICO_INST TEXT);'); db.execute('CREATE TABLE IF NOT EXISTS CIDS (CODIGO_CID TEXT, DESCRICAO_CID TEXT, RESTRICAO_SEXO INTEGER);'); - db.execute('CREATE TABLE IF NOT EXISTS CONTROLE_INTERNO (CARGA_INICIAL INTEGER, SYNC_UNIDADE INTEGER, CIDADE_LOAD TEXT, NOME_CIDADE TEXT, ID_MUNICIPIO INTEGER, UF_ESTADO TEXT, UNIDADE_SYNC TEXT, CODIGO_IBGE INTEGER, NOME_UNIDADE TEXT, AMBIENTE TEXT, ULTIMA_SINCRONIZACAO TEXT, COMPETENCIA TEXT, ID_AREA INTEGER, AREA INTEGER, ID_MICROAREA INTEGER, MICROAREA INTEGER);'); + db.execute( 'CREATE TABLE IF NOT EXISTS CONTROLE_INTERNO (CARGA_INICIAL INTEGER, SYNC_UNIDADE INTEGER, CIDADE_LOAD TEXT, NOME_CIDADE TEXT, ID_MUNICIPIO INTEGER, UF_ESTADO TEXT, UNIDADE_SYNC TEXT, CODIGO_IBGE INTEGER, NOME_UNIDADE TEXT, AMBIENTE TEXT, ULTIMA_SINCRONIZACAO TEXT, COMPETENCIA TEXT, AREA INTEGER, MICROAREA INTEGER);'); db.execute('CREATE TABLE IF NOT EXISTS DOMICILIOS_CIDADAOS (ID_DOMICILIO INTEGER, CD_USUARIO_SUS TEXT);'); db.execute('CREATE TABLE IF NOT EXISTS EQUIPES (ID_EQUIPE INTEGER PRIMARY KEY AUTOINCREMENT, ID_UNIDADE INTEGER, INE TEXT, ID_ATB_AREA INTEGER, AREA INTEGER, ID_ATB_MICROAREA INTEGER, MICROAREA INTEGER);'); db.execute('CREATE TABLE IF NOT EXISTS FICHAS_COMPLEMENTARES (ID_FICHA_COMPLEMENTAR INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, DATA_ATENDIMENTO TEXT, TURNO INTEGER, DATA_OLHINHO TEXT, RESULTADO_OLHINHO INTEGER, DATA_FUNDO_OLHO TEXT, RESULTADO_FUNDO_OLHO INTEGER, DATA_ORELHINHA TEXT, RESULTADO_ORELHINHA INTEGER, DATA_TRANSFONTANELA TEXT, RESULTADO_TRANSFONTANELA INTEGER, DATA_TOMOGRAFIA TEXT, RESULTADO_TOMOGRAFIA INTEGER, DATA_RESSONANCIA TEXT, RESULTADO_RESSONANCIA INTEGER, SINCRONIZADO TEXT);'); @@ -69,46 +67,45 @@ class DbSqlite{ return db; } Future deleteDB()async{ - //testar com ; no final var querys = [ 'UPDATE CONTROLE_INTERNO SET SYNC_UNIDADE = NULL, UNIDADE_SYNC = NULL, NOME_UNIDADE = NULL WHERE rowid = 1;', - 'DELETE FROM ATENDS_DOM_COMPL', - 'DELETE FROM ATENDS_DOM_PROC', - 'DELETE FROM ATENDS_DOM_SIGTAP', - 'DELETE FROM ATENDIMENTOS_DOMICILIARES', - 'DELETE FROM ATENDS_INDIV_PROC', - 'DELETE FROM ATENDS_INDIV_PROF', - 'DELETE FROM ATENDS_INDIVIDUAIS', - 'DELETE FROM BAIRROS', - 'DELETE FROM CADASTROS_INDIVIDUAIS', - 'DELETE FROM CBOS', - 'DELETE FROM CIAPS', - 'DELETE FROM CIDADAOS', - 'DELETE FROM CIDADAO_DOMICILIO', - 'DELETE FROM CIDS', - 'DELETE FROM CONTROLE_INTERNO', - 'DELETE FROM DOMICILIOS_CIDADAOS', - 'DELETE FROM EQUIPES', - 'DELETE FROM FICHAS_COMPLEMENTARES', - 'DELETE FROM LOGRADOUROS_ENDERECOS', - 'DELETE FROM LOGRADOUROS_LOTEAMENTOS', - 'DELETE FROM LOGRADOUROS_TIPOS', - 'DELETE FROM MUNICIPIOS', - 'DELETE FROM PROCEDIMENTOS_FICHAS', - 'DELETE FROM PROCEDIMENTOS_INDIV', - 'DELETE FROM PROCEDIMENTOS_INDIV_FICHA', - 'DELETE FROM PROCEDIMENTOS_INDIV_SIGTAP', - 'DELETE FROM PROCEDIMENTOS_SIGTAP', - 'DELETE FROM PROCEDIMENTOS_SIGTAP_CBO', - 'DELETE FROM PROCEDIMENTOS_SIGTAP_CID', - 'DELETE FROM PROCEDIMENTOS_SIGTAP_REGISTRO', - 'DELETE FROM PROFISSIONAIS', - 'DELETE FROM PROFISSIONAIS_CBOS', - 'DELETE FROM PROFISSIONAIS_EQUIPE', - 'DELETE FROM UNIDADES', - 'DELETE FROM VISITAS_DOMICILIARES', - 'DELETE FROM VISITAS_DOMICILIARES_COMPL', - 'DELETE FROM VISITAS_DOMICILIARES_PROC', + 'DELETE FROM ATENDS_DOM_COMPL;', + 'DELETE FROM ATENDS_DOM_PROC;', + 'DELETE FROM ATENDS_DOM_SIGTAP;', + 'DELETE FROM ATENDIMENTOS_DOMICILIARES;', + 'DELETE FROM ATENDS_INDIV_PROC;', + 'DELETE FROM ATENDS_INDIV_PROF;', + 'DELETE FROM ATENDS_INDIVIDUAIS;', + 'DELETE FROM BAIRROS;', + 'DELETE FROM CADASTROS_INDIVIDUAIS;', + 'DELETE FROM CBOS;', + 'DELETE FROM CIAPS;', + 'DELETE FROM CIDADAOS;', + 'DELETE FROM CIDADAO_DOMICILIO;', + 'DELETE FROM CIDS;', + 'DELETE FROM CONTROLE_INTERNO;', + 'DELETE FROM DOMICILIOS_CIDADAOS;', + 'DELETE FROM EQUIPES;', + 'DELETE FROM FICHAS_COMPLEMENTARES;', + 'DELETE FROM LOGRADOUROS_ENDERECOS;', + 'DELETE FROM LOGRADOUROS_LOTEAMENTOS;', + 'DELETE FROM LOGRADOUROS_TIPOS;', + 'DELETE FROM MUNICIPIOS;', + 'DELETE FROM PROCEDIMENTOS_FICHAS;', + 'DELETE FROM PROCEDIMENTOS_INDIV;', + 'DELETE FROM PROCEDIMENTOS_INDIV_FICHA;', + 'DELETE FROM PROCEDIMENTOS_INDIV_SIGTAP;', + 'DELETE FROM PROCEDIMENTOS_SIGTAP;', + 'DELETE FROM PROCEDIMENTOS_SIGTAP_CBO;', + 'DELETE FROM PROCEDIMENTOS_SIGTAP_CID;', + 'DELETE FROM PROCEDIMENTOS_SIGTAP_REGISTRO;', + 'DELETE FROM PROFISSIONAIS;', + 'DELETE FROM PROFISSIONAIS_CBOS;', + 'DELETE FROM PROFISSIONAIS_EQUIPE;', + 'DELETE FROM UNIDADES;', + 'DELETE FROM VISITAS_DOMICILIARES;', + 'DELETE FROM VISITAS_DOMICILIARES_COMPL;', + 'DELETE FROM VISITAS_DOMICILIARES_PROC;', ]; Database db = await intialDB(); for(int i=0;querys.length>i;i++){ @@ -295,26 +292,24 @@ class DbSqlite{ print(await db.query('PROFISSIONAIS_EQUIPE')); return db; } - Future saveCompetence(var competence,ArgsLoadInitModel args)async{ + Future saveCityInit(ArgsLoadInitModel args)async{ Database db = await intialDB(); - String cityReplace = ConstVariable().replaceText(args.city); - print(competence); //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, '')}]'; "INSERT OR REPLACE INTO CONTROLE_INTERNO (rowid, CARGA_INICIAL, CIDADE_LOAD, NOME_CIDADE, ID_MUNICIPIO, UF_ESTADO, CODIGO_IBGE, AMBIENTE, COMPETENCIA) VALUES (1,?,?,?,?,?,?,?,?)"; - Map row = { - 'CARGA_INICIAL' : 1, - 'CIDADE_LOAD' : cityReplace, - 'NOME_CIDADE' : args.city, - 'ID_MUNICIPIO' : '', - 'UF_ESTADO' : '', - 'CODIGO_IBGE' : '', - 'AMBIENTE' : args.mode, - 'COMPETENCIA' : competence, - }; - int id = await db.insert('CONTROLE_INTERNO', row); - print('id increment $id CONTROLE_INTERNO'); + Map row = { + 'CARGA_INICIAL' : 1, + 'CIDADE_LOAD' : args.model.nameCityApi, + 'NOME_CIDADE' : args.model.nameCityFront, + 'ID_MUNICIPIO' : args.model.codCity, + 'UF_ESTADO' : args.model.codState, + 'CODIGO_IBGE' : args.model.codCityIbge, + 'AMBIENTE' : args.mode, + 'ULTIMA_SINCRONIZACAO' : DateTime.now().toString(), + 'COMPETENCIA' : '${DateTime.now().year}${DateTime.now().month<10?'0':''}${DateTime.now().month-1}', + }; + int id = await db.insert('CONTROLE_INTERNO', row); print(await db.query('CONTROLE_INTERNO')); return db; } diff --git a/lib/utils/const_variable.dart b/lib/utils/const_variable.dart index ac289a7..11ccc6e 100644 --- a/lib/utils/const_variable.dart +++ b/lib/utils/const_variable.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:rkm/models/city_load_model.dart'; import 'color_palette.dart'; class ConstVariable{ @@ -217,39 +218,38 @@ class ConstVariable{ '225124 - Médico pediatra', '225125 - Médico clínico', ]; - List itensCity = [ - 'Anhembi', - 'Aparecida', - 'Batatais', - 'Biritiba Mirim', - 'Cabreúva', - 'Cachoeira Paulista', - 'Caconde', - 'Casa Branca', - 'Corumbataí', - 'Descalvado', - 'Extrema', - 'Franco da Rocha', - 'Igaraçu do Tiete', - 'Iracemápolis', - 'Itapeva', - 'Itápolis', - 'Itirapina', - 'Ituverava', - 'Jardinópolis', - 'Laranjal Paulista', - 'Macatuba', - 'Mairiporã', - 'Mococa', - 'Morro Agudo', - 'Pardinho', - 'Pederneiras', - 'Piracicaba', - 'Porto Ferreira', - 'Santa Rita', - 'Santo Antônio da Alegria', - 'São Sabastião da Grama', - 'Tapiratiba' + List itensCity = [ + CityLoadModel(codCity: 3311, nameCityApi: 'anhembi', nameCityFront: 'Anhembi', codState: 'SP', codCityIbge: 350230), + CityLoadModel(codCity: 3313, nameCityApi: 'aparecida', nameCityFront: 'Aparecida', codState: 'SP', codCityIbge: 350250), + CityLoadModel(codCity: 3352, nameCityApi: 'batatais', nameCityFront: 'Batatais', codState: 'SP', codCityIbge: 350590), + CityLoadModel(codCity: 3360, nameCityApi: 'biritiba', nameCityFront: 'Biritiba Mirim', codState: 'SP', codCityIbge: 350660), + CityLoadModel(codCity: 3381, nameCityApi: 'cabreuva', nameCityFront: 'Cabreúva', codState: 'SP', codCityIbge: 350840), + CityLoadModel(codCity: 1903, nameCityApi: 'cachoeira', nameCityFront: 'Cachoeira Paulista', codState: 'SP', codCityIbge: 290490), + CityLoadModel(codCity: 3384, nameCityApi: 'caconde', nameCityFront: 'Caconde', codState: 'SP', codCityIbge: 350870), + CityLoadModel(codCity: 3409, nameCityApi: 'casabranca', nameCityFront: 'Casa Branca', codState: 'SP', codCityIbge: 351080), + CityLoadModel(codCity: 3427, nameCityApi: 'corumbatai', nameCityFront: 'Corumbataí', codState: 'SP', codCityIbge: 351270), + CityLoadModel(codCity: 3437, nameCityApi: 'descalvado', nameCityFront: 'Descalvado', codState: 'SP', codCityIbge: 351370), + CityLoadModel(codCity: 2539, nameCityApi: 'extrema', nameCityFront: 'Extrema', codState: 'MG', codCityIbge: 312510), + CityLoadModel(codCity: 3473, nameCityApi: 'francodarocha', nameCityFront: 'Franco da Rocha', codState: 'SP', codCityIbge: 351640), + CityLoadModel(codCity: 3514, nameCityApi: 'igaracudotiete', nameCityFront: 'Igaraçu do Tietê', codState: 'SP', codCityIbge: 352000), + CityLoadModel(codCity: 3531, nameCityApi: 'iracemapolis', nameCityFront: 'Iracemápolis', codState: 'SP', codCityIbge: 352140), + CityLoadModel(codCity: 3546, nameCityApi: 'itapolis', nameCityFront: 'Itápolis', codState: 'SP', codCityIbge: 352270), + CityLoadModel(codCity: 3555, nameCityApi: 'itirapina', nameCityFront: 'Itirapina', codState: 'SP', codCityIbge: 352360), + CityLoadModel(codCity: 3560, nameCityApi: 'ituverava', nameCityFront: 'Ituverava', codState: 'SP', codCityIbge: 352410), + CityLoadModel(codCity: 3570, nameCityApi: 'jardinopolis', nameCityFront: 'Jardinópolis', codState: 'SP', codCityIbge: 352510), + CityLoadModel(codCity: 3584, nameCityApi: 'laranjal', nameCityFront: 'Laranjal Paulista', codState: 'SP', codCityIbge: 352640), + CityLoadModel(codCity: 3601, nameCityApi: 'macatuba', nameCityFront: 'Macatuba', codState: 'SP', codCityIbge: 352800), + CityLoadModel(codCity: 3606, nameCityApi: 'mairipora', nameCityFront: 'Mairiporã', codState: 'SP', codCityIbge: 352850), + CityLoadModel(codCity: 3628, nameCityApi: 'mococa', nameCityFront: 'Mococa', codState: 'SP', codCityIbge: 353050), + CityLoadModel(codCity: 3642, nameCityApi: 'morroagudo', nameCityFront: 'Morro Agudo', codState: 'SP', codCityIbge: 353190), + CityLoadModel(codCity: 3691, nameCityApi: 'pardinho', nameCityFront: 'Pardinho', codState: 'SP', codCityIbge: 353610), + CityLoadModel(codCity: 3699, nameCityApi: 'pederneiras', nameCityFront: 'Pederneiras', codState: 'SP', codCityIbge: 353670), + CityLoadModel(codCity: 3719, nameCityApi: 'piracicaba', nameCityFront: 'Piracicaba', codState: 'SP', codCityIbge: 353870), + CityLoadModel(codCity: 3740, nameCityApi: 'portoferreira', nameCityFront: 'Porto Ferreira', codState: 'SP', codCityIbge: 354070), + CityLoadModel(codCity: 3816, nameCityApi: 'santarita', nameCityFront: 'Santa Rita', codState: 'SP', codCityIbge: 354750), + CityLoadModel(codCity: 3821, nameCityApi: 'stoantoniodaalegria',nameCityFront: 'Santo Antônio da Alegria', codState: 'SP', codCityIbge: 354790), + CityLoadModel(codCity: 3853, nameCityApi: 'ssgrama', nameCityFront: 'São Sebastião da Grama', codState: 'SP', codCityIbge: 355080), + CityLoadModel(codCity: 3882, nameCityApi: 'tapiratiba', nameCityFront: 'Tapiratiba', codState: 'SP', codCityIbge: 355360), ]; var backgroundGradient = BoxDecoration( gradient: LinearGradient( @@ -261,15 +261,4 @@ class ConstVariable{ ], ) ); - - replaceText(String text){ - String replace= text.toLowerCase() - .replaceAll('ú', 'u') - .replaceAll('ç', 'c') - .replaceAll('ó', 'o') - .replaceAll('ô', 'o') - .replaceAll('í', 'i') - .replaceAll('ã','a'); - return replace; - } } \ No newline at end of file diff --git a/lib/utils/routes.dart b/lib/utils/routes.dart index 51a6a95..07070f8 100644 --- a/lib/utils/routes.dart +++ b/lib/utils/routes.dart @@ -2,7 +2,7 @@ import 'package:rkm/screens/about_screen.dart'; import 'package:rkm/screens/attendance_list_screen.dart'; import 'package:rkm/screens/home_screen.dart'; import 'package:rkm/screens/load_init_screen.dart'; -import 'package:rkm/screens/login_screen.dart'; +import 'package:rkm/screens/login_load_screen.dart'; import 'package:rkm/screens/select_service/eligibility_assessment_screen.dart'; import 'package:rkm/screens/splash_screen.dart'; import '../screens/clear_data_screen.dart'; @@ -21,7 +21,7 @@ import '../screens/sinc_data_screen.dart'; var routes = { '/home': (context) => HomeScreen(), - '/login': (context) => LoginScreen(), + '/login_load': (context) => LoginLoadScreen(), '/register_citizen': (context) => RegisterCitizenScreen(), '/attendance_list': (context) => AttendanceListScreen(), '/about': (context) => AboutScreen(), diff --git a/lib/widgets/dropdown_button_city.dart b/lib/widgets/dropdown_button_city.dart index 2049b52..abe46d8 100644 --- a/lib/widgets/dropdown_button_city.dart +++ b/lib/widgets/dropdown_button_city.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:rkm/widgets/text_default.dart'; +import '../models/city_load_model.dart'; import '../utils/color_palette.dart'; import '../utils/const_variable.dart'; @@ -36,13 +37,13 @@ class DropDownButtonCity extends StatelessWidget { color: ColorPalette.white ), child: DropdownButtonHideUnderline( - child: DropdownButton( + child: DropdownButton( hint: TextDefault(text: 'Cidade',fontSize: ConstVariable().fontSizeInput), value: select, items: ConstVariable().itensCity.map((value) => DropdownMenuItem( - value: value, + value: value.nameCityFront, child: TextDefault( - text: value, + text: value.nameCityFront, ), ) ).toList(), diff --git a/lib/widgets/dropdown_button_default.dart b/lib/widgets/dropdown_button_default.dart index af4d30c..c24b46a 100644 --- a/lib/widgets/dropdown_button_default.dart +++ b/lib/widgets/dropdown_button_default.dart @@ -9,7 +9,7 @@ class DropDownButtonDefault extends StatelessWidget { String? select; String title; double fontSize; - List list; + List list; double width; double widthContainer; @@ -33,16 +33,23 @@ class DropDownButtonDefault extends StatelessWidget { margin: ConstVariable().marginHightInput, color: ColorPalette.white, child: DropdownButtonHideUnderline( - child: DropdownButton( - hint: TextDefault(text: title,fontSize: ConstVariable().fontSizeInput,textAlign: TextAlign.end), + child: DropdownButton( + hint: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: TextDefault(text: title,fontSize: ConstVariable().fontSizeInput,textAlign: TextAlign.end), + ), value: select, items: list.map((value) => DropdownMenuItem( value: value, child: Container( width: widthContainer, - child: TextDefault( - text: value, - fontSize: fontSize, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 10.0), + child: TextDefault( + text: value, + fontSize: fontSize, + color: Colors.black, + ), ), ), )