| @@ -15,10 +15,15 @@ class DBHelper { | |||
| Future<Database> 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 { | |||
| @@ -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'; | |||
| @@ -522,6 +522,16 @@ class _HomePageState extends State<HomePage> { | |||
| ), | |||
| ), | |||
| PopupMenuItem( | |||
| value:'restore', | |||
| child: Row( | |||
| children: <Widget>[ | |||
| Icon(Icons.sync,color: Colors.black,), | |||
| SizedBox(width: 10,), | |||
| Text('Restore Backup') | |||
| ], | |||
| ), | |||
| ), | |||
| PopupMenuItem( | |||
| value:'logout', | |||
| child: Row( | |||
| children: <Widget>[ | |||
| @@ -660,6 +670,41 @@ class _HomePageState extends State<HomePage> { | |||
| 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: <Widget>[ | |||
| 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), | |||
| ) | |||
| ], | |||
| )); | |||
| } | |||
| }, | |||
| ), | |||
| ], | |||