@@ -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), | |||
) | |||
], | |||
)); | |||
} | |||
}, | |||
), | |||
], | |||