diff --git a/android/app/build.gradle b/android/app/build.gradle index 5d77fe5..100cacc 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -67,7 +67,7 @@ if (keystorePropertiesFile.exists()) { } android { - compileSdkVersion 30 + compileSdkVersion 31 sourceSets { main.java.srcDirs += 'src/main/kotlin' diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 019e8be..286d3b9 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -11,7 +11,7 @@ { String state = ''; final hostAddress = new TextEditingController(); - clearData(context,{backup=true})async{ + clearData(context)async{ setState(() { progressDL = null; isLoading = false; @@ -63,8 +63,6 @@ class _HomePageState extends State { File db = File(path); if(db.existsSync()){ await DBHelper.database.closeDb(); - //auto backup - // if(backup)await DBHelper.database.backupDb(context); db.deleteSync(); await prefs.remove(keyClass.lastDownload); await prefs.remove(keyClass.lastUpload); @@ -281,6 +279,7 @@ class _HomePageState extends State { await prefs.remove(keyClass.lastUpload); await prefs.remove(keyClass.targetProccess); await prefs.remove(keyClass.submitProccess); + await prefs.remove(keyClass.stock_id); lastUpload = ''; lastDownload = ''; timeString = ''; @@ -674,69 +673,92 @@ class _HomePageState extends State { Navigator.pushNamed(context, '/login'); } if(value == 'backup'){ - var result = await DBHelper.database.backupDb(); + var result = await DBHelper.database.backupDb(context); util.showFlushbar(context, result['MSG'],color: result["STATUS"]==1?Colors.grey:Colors.red); } if(value == 'restore'){ - bool isRestore = await showDialog(context: context,builder: (context)=>AlertDialog( - title: Text('Restore Data ?'), - content: Text('Restore data akan menghapus dan mengganti data unit dan cabang yang ada dengan data backup.'), - actions: [ - TextButton( - child: Text('Proceed'), - onPressed: ()async{ - Navigator.pop(context,true); - }, - ), - TextButton( - child: Text('Cancel'), - onPressed: ()=>Navigator.pop(context,false), - ) - ], - )); - if(isRestore??false){ - var response; - bool isclear; - Directory documentsDirectory = await getExternalStorageDirectory(); - String path = join(documentsDirectory.path, "UnitStocking.db"); - File db = File(path); - if(db.existsSync()){ - isclear = await clearData(context,backup: false); - } - else{ - isclear = true; - } - if(isclear??false){ - var result = await DBHelper.database.restoreDb(); - if(result["STATUS"]==1){ - await prefs.remove(keyClass.lastDownload); - await prefs.remove(keyClass.lastUpload); - await prefs.remove(keyClass.targetProccess); - await prefs.remove(keyClass.submitProccess); - setState(() { - lastUpload = ''; - lastDownload = ''; - timeString = ''; - }); - valueTab value = await DBHelper.database.getValue(keyClass.tgl_start); - if(value != null)await prefs.setString(keyClass.lastDownload, DateFormat('dd-MM-yyyy HH:mm:ss').parse(value.value).toIso8601String()); - else { - await prefs.setString(keyClass.lastDownload, DateTime.now().toIso8601String()); + if(prefs.getString(keyClass.stock_id) == null){ + util.showFlushbar(context, "Data Unit cabang tidak ditemukan. Silakan get data terlbih dahulu."); + } + else{ + if(prefs.getString(keyClass.stock_id) == prefs.getString(keyClass.backup_stock_id)){ + String company = prefs.getString(keyClass.company); + String stock_taking_id = prefs.getString(keyClass.stock_id); + String stockState = ''; + if(company!=null&&stock_taking_id!=null){ + var result = await util.JsonDataPostRaw({"company":company,"stockTakingId":stock_taking_id}, '${prefs.getString(keyClass.hostAddress)}/stock_taking/state/'); + if(result['STATUS']==1){ + stockState = result['DATA']; } - value = await DBHelper.database.getValue(keyClass.stock_id); - if(value != null) await prefs.setString(keyClass.stock_id,value.value); - else { - await prefs.setString(keyClass.stock_id,prefs.getString(keyClass.backup_stock_id)); + } + if(['Open','Submitted'].contains(stockState)){ + bool isRestore = await showDialog(context: context,builder: (context)=>AlertDialog( + title: Text('Restore Data ?'), + content: Text('Restore data akan menghapus dan mengganti data unit dan cabang yang ada dengan data backup.'), + actions: [ + TextButton( + child: Text('Proceed'), + onPressed: ()async{ + Navigator.pop(context,true); + }, + ), + TextButton( + child: Text('Cancel'), + onPressed: ()=>Navigator.pop(context,false), + ) + ], + )); + if(isRestore??false){ + var response; + bool isclear; + Directory documentsDirectory = await getExternalStorageDirectory(); + String path = join(documentsDirectory.path, "UnitStocking.db"); + File db = File(path); + if(db.existsSync()){ + isclear = await clearData(context); + } + else{ + isclear = true; + } + if(isclear??false){ + var result = await DBHelper.database.restoreDb(context); + if(result["STATUS"]==1){ + await prefs.remove(keyClass.lastDownload); + await prefs.remove(keyClass.lastUpload); + await prefs.remove(keyClass.targetProccess); + await prefs.remove(keyClass.submitProccess); + setState(() { + lastUpload = ''; + lastDownload = ''; + timeString = ''; + }); + valueTab value = await DBHelper.database.getValue(keyClass.tgl_start); + if(value != null)await prefs.setString(keyClass.lastDownload, DateFormat('dd-MM-yyyy HH:mm:ss').parse(value.value).toIso8601String()); + else { + await prefs.setString(keyClass.lastDownload, DateTime.now().toIso8601String()); + } + value = await DBHelper.database.getValue(keyClass.stock_id); + if(value != null) await prefs.setString(keyClass.stock_id,value.value); + else { + await prefs.setString(keyClass.stock_id,prefs.getString(keyClass.backup_stock_id)); + } + loadState(); + setState(() { + lastDownload = prefs.getString(keyClass.lastDownload); + }); + } + response = result["MSG"]; + } + if(response != null)util.showFlushbar(context, response); } - await prefs.setString(keyClass.cabang_id,prefs.getString(keyClass.backup_cabang_id)); - loadState(); - setState(() { - lastDownload = prefs.getString(keyClass.lastDownload); - }); } - response = result["MSG"]; + else{ + util.showFlushbar(context, "Stocking Unit sudah selesai dan tidak perlu di restore"); + } + } + else { + util.showFlushbar(context, "File Backup tidak ditemukan atau sudah selesai"); } - if(response != null)util.showFlushbar(context, response); } } }, diff --git a/pubspec.lock b/pubspec.lock index bfe5d2a..a7fc777 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -247,6 +247,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" meta: dependency: transitive description: @@ -524,7 +531,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.4.8" typed_data: dependency: transitive description: @@ -580,7 +587,7 @@ packages: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.0.8" url_launcher_windows: dependency: transitive description: @@ -625,4 +632,4 @@ packages: version: "3.1.0" sdks: dart: ">=2.15.0 <3.0.0" - flutter: ">=2.8.0" + flutter: ">=2.10.0"