@@ -37,7 +37,7 @@ class _HomePageState extends State<HomePage> {
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<HomePage> {
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<HomePage> {
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<HomePage> {
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: <Widget>[
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: <Widget>[
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);
}
}
},