diff --git a/lib/Util/DBHelper.dart b/lib/Util/DBHelper.dart index 4b0712a..bf61453 100644 --- a/lib/Util/DBHelper.dart +++ b/lib/Util/DBHelper.dart @@ -15,10 +15,15 @@ class DBHelper { Future get db async { if (_db == null) _db = await initDb(); - //backupDatabase - String backupPath = join(_db.path.substring(0,_db.path.indexOf("/Android"))+"/Download/UnitDBBackup/", "UnitStocking.db"); - io.File dbFile = io.File(_db.path); - dbFile.copySync(backupPath); + try{ + //backupDatabase + String backupPath = join(_db.path.substring(0,_db.path.indexOf("/Android"))+"/Download/UnitDBBackup/", "${prefs.getString(keyClass.stock_id)}_UnitStocking.db"); + io.File dbFile = io.File(_db.path); + dbFile.copySync(backupPath); + } + catch(e){ + print(e); + } return _db; } @@ -30,7 +35,16 @@ class DBHelper { } restoreDb()async{ - // do something here + await closeDb(); + io.Directory documentsDirectory = await getExternalStorageDirectory(); + String backupPath = join(documentsDirectory.path.substring(0,documentsDirectory.path.indexOf("/Android"))+"/Download/UnitDBBackup/", "${prefs.getString(keyClass.stock_id)}_UnitStocking.db"); + io.File backupdbFile = io.File(backupPath); + if(backupdbFile.existsSync()){ + String path = join(documentsDirectory.path, "UnitStocking.db"); + backupdbFile.copySync(path); + return {"STATUS":1,"MSG":"File Back up successfull"}; + } + return {"STATUS":0,"MSG":"File Backup tidak ditemukan!"}; } closeDb() async { diff --git a/lib/Util/Prefs.dart b/lib/Util/Prefs.dart index 3e6a0ce..eed4d1a 100644 --- a/lib/Util/Prefs.dart +++ b/lib/Util/Prefs.dart @@ -14,6 +14,7 @@ class keyClass{ static String stock_id = 'STOCK_TAKING_UNIT_ID'; static String client_credential = 'CLIENT_CREDENTIAL'; static String rest_data = 'REST_DATA'; + static String tgl_start = 'TGL_START'; } class columnName{ static String id = 'ID'; diff --git a/lib/home_page.dart b/lib/home_page.dart index 0227a23..e6bb038 100644 --- a/lib/home_page.dart +++ b/lib/home_page.dart @@ -522,6 +522,16 @@ class _HomePageState extends State { ), ), PopupMenuItem( + value:'restore', + child: Row( + children: [ + Icon(Icons.sync,color: Colors.black,), + SizedBox(width: 10,), + Text('Restore Backup') + ], + ), + ), + PopupMenuItem( value:'logout', child: Row( children: [ @@ -660,6 +670,41 @@ class _HomePageState extends State { prefs.setBool(keyClass.logged_in, false); Navigator.pushNamed(context, '/login'); } + if(value == 'restore'){ + await showDialog(context: context,builder: (context)=>AlertDialog( + title: Text('Restore Data ?'), + content: Text('Restore data akan menghapus dan mengganti data unit yang ada dengan data unit backup.'), + actions: [ + TextButton( + child: Text('Proceed'), + onPressed: ()async{ + util.showLoading(context); + var result = await DBHelper.database.restoreDb(); + if(result["MSG"]==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, value.value); + } + util.showFlushbar(context, result["MSG"]); + Navigator.pop(context); + Navigator.pop(context); + }, + ), + TextButton( + child: Text('Cancel'), + onPressed: ()=>Navigator.pop(context), + ) + ], + )); + } }, ), ],