@@ -21,16 +21,16 @@ class DBHelper { | |||||
} | } | ||||
backupDb(context) async{ | backupDb(context) async{ | ||||
var result = {"STATUS":0,"MSG":"Backup gagal!"}; | var result = {"STATUS":0,"MSG":"Backup gagal!"}; | ||||
var stock_id = prefs.getString(keyClass.stock_id)??''; | |||||
if(stock_id != ''){ | |||||
await util.permissionCheck(context,pHandler.Permission.storage,()async{ | await util.permissionCheck(context,pHandler.Permission.storage,()async{ | ||||
try{ | try{ | ||||
// if(dbPath == null || dbPath == ''){ | |||||
// if(dbPath == null || dbPath == ''){ | |||||
final database = await db; | final database = await db; | ||||
var dbPath = database.path; | var dbPath = database.path; | ||||
await DBHelper.database.closeDb(); | await DBHelper.database.closeDb(); | ||||
// } | |||||
await prefs.remove(keyClass.backup_stock_id); | |||||
var stock_id = prefs.getString(keyClass.stock_id)??''; | |||||
if(stock_id != ''){ | |||||
// } | |||||
await prefs.remove(keyClass.backup_stock_id); | |||||
if(stock_id !='' && stock_id != null ) await prefs.setString(keyClass.backup_stock_id,stock_id); | if(stock_id !='' && stock_id != null ) await prefs.setString(keyClass.backup_stock_id,stock_id); | ||||
//backupDatabase | //backupDatabase | ||||
String backupPath = join(dbPath.substring(0,dbPath.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db"); | String backupPath = join(dbPath.substring(0,dbPath.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db"); | ||||
@@ -47,15 +47,16 @@ class DBHelper { | |||||
print('file backup dont exist tho'); | print('file backup dont exist tho'); | ||||
} | } | ||||
} | } | ||||
else{ | |||||
result = {"STATUS":0,"MSG":"Backup gagal data unit tidak ditemukan!"}; | |||||
} | |||||
catch(e){ | |||||
print(e); | |||||
result = {"STATUS":0,"MSG":"Backup gagal!"}; | |||||
} | |||||
},customMessage: " untuk menyimpan data backup"); | |||||
} | } | ||||
catch(e){ | |||||
print(e); | |||||
result = {"STATUS":0,"MSG":"Backup gagal!"}; | |||||
else{ | |||||
result = {"STATUS":0,"MSG":"Backup gagal data unit tidak ditemukan!"}; | |||||
} | } | ||||
},customMessage: " untuk menyimpan data backup"); | |||||
return result; | return result; | ||||
} | } | ||||
initDb() async { | initDb() async { | ||||
@@ -352,6 +353,8 @@ class DBHelper { | |||||
newValue.name, | newValue.name, | ||||
newValue.value | newValue.value | ||||
]); | ]); | ||||
print("row inserted"); | |||||
return res; | return res; | ||||
} | } | ||||
catch(e){ | catch(e){ | ||||
@@ -53,7 +53,7 @@ class _HomePageState extends State<HomePage> { | |||||
content: Text('Proceed to clear any remaining units data on this device?'), | content: Text('Proceed to clear any remaining units data on this device?'), | ||||
actions: <Widget>[ | actions: <Widget>[ | ||||
TextButton( | TextButton( | ||||
child: Text('Proceed'), | |||||
child: Text('OK'), | |||||
onPressed: ()async{ | onPressed: ()async{ | ||||
util.showLoading(context); | util.showLoading(context); | ||||
await Future.sync(()async{ | await Future.sync(()async{ | ||||
@@ -104,6 +104,7 @@ class _HomePageState extends State<HomePage> { | |||||
if(value != null)await prefs.setString(keyClass.stock_id, value.value); | if(value != null)await prefs.setString(keyClass.stock_id, value.value); | ||||
} | } | ||||
String stock_taking_id = prefs.getString(keyClass.stock_id); | String stock_taking_id = prefs.getString(keyClass.stock_id); | ||||
if(prefs.getString(keyClass.backup_stock_id) == null) prefs.setString(keyClass.backup_stock_id,stock_taking_id); | |||||
if(company!=null&&stock_taking_id!=null){ | 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/'); | var result = await util.JsonDataPostRaw({"company":company,"stockTakingId":stock_taking_id}, '${prefs.getString(keyClass.hostAddress)}/stock_taking/state/'); | ||||
if(result['STATUS']==1){ | if(result['STATUS']==1){ | ||||
@@ -666,15 +667,38 @@ class _HomePageState extends State<HomePage> { | |||||
} | } | ||||
} | } | ||||
if(value == 'logout'){ | if(value == 'logout'){ | ||||
prefs.remove(keyClass.cabang_id); | |||||
// prefs.remove(keyClass.cabang_id); | |||||
prefs.remove(keyClass.company); | prefs.remove(keyClass.company); | ||||
prefs.remove(keyClass.loginId); | prefs.remove(keyClass.loginId); | ||||
prefs.setBool(keyClass.logged_in, false); | prefs.setBool(keyClass.logged_in, false); | ||||
Navigator.pushNamed(context, '/login'); | Navigator.pushNamed(context, '/login'); | ||||
} | } | ||||
if(value == 'backup'){ | if(value == 'backup'){ | ||||
var result = await DBHelper.database.backupDb(context); | |||||
util.showFlushbar(context, result['MSG'],color: result["STATUS"]==1?Colors.grey:Colors.red); | |||||
if(lastDownload != null && lastDownload != '' ){ | |||||
bool isBackup = await showDialog(context: context,builder: (context)=>AlertDialog( | |||||
title: Text('Backup Data ?'), | |||||
content: Text('Backup data akan menghapus dan mengganti data backup unit dan cabang sebelumnya.'), | |||||
actions: <Widget>[ | |||||
TextButton( | |||||
child: Text('OK'), | |||||
onPressed: ()async{ | |||||
Navigator.pop(context,true); | |||||
}, | |||||
), | |||||
TextButton( | |||||
child: Text('Cancel'), | |||||
onPressed: ()=>Navigator.pop(context,false), | |||||
) | |||||
], | |||||
)); | |||||
if(isBackup??false){ | |||||
var result = await DBHelper.database.backupDb(context); | |||||
util.showFlushbar(context, result['MSG'],color: result["STATUS"]==1?Colors.grey:Colors.red); | |||||
} | |||||
} | |||||
else{ | |||||
util.showFlushbar(context, "Data Unit cabang tidak ditemukan. Silakan get data terlbih dahulu."); | |||||
} | |||||
} | } | ||||
if(value == 'restore'){ | if(value == 'restore'){ | ||||
if(prefs.getString(keyClass.stock_id) == null){ | if(prefs.getString(keyClass.stock_id) == null){ | ||||
@@ -697,7 +721,7 @@ class _HomePageState extends State<HomePage> { | |||||
content: Text('Restore data akan menghapus dan mengganti data unit dan cabang yang ada dengan data backup.'), | content: Text('Restore data akan menghapus dan mengganti data unit dan cabang yang ada dengan data backup.'), | ||||
actions: <Widget>[ | actions: <Widget>[ | ||||
TextButton( | TextButton( | ||||
child: Text('Proceed'), | |||||
child: Text('OK'), | |||||
onPressed: ()async{ | onPressed: ()async{ | ||||
Navigator.pop(context,true); | Navigator.pop(context,true); | ||||
}, | }, | ||||
@@ -807,7 +831,7 @@ class _HomePageState extends State<HomePage> { | |||||
content: Text('Fetch data unit for stocking'), | content: Text('Fetch data unit for stocking'), | ||||
actions: <Widget>[ | actions: <Widget>[ | ||||
TextButton( | TextButton( | ||||
child: Text('Proceed'), | |||||
child: Text('OK'), | |||||
onPressed: (){ | onPressed: (){ | ||||
Navigator.pop(context,true); | Navigator.pop(context,true); | ||||
}, | }, | ||||
@@ -1077,7 +1101,7 @@ class _HomePageState extends State<HomePage> { | |||||
content: Text('Proceed to unpack the uploaded data.'), | content: Text('Proceed to unpack the uploaded data.'), | ||||
actions: <Widget>[ | actions: <Widget>[ | ||||
TextButton( | TextButton( | ||||
child: Text('Proceed'), | |||||
child: Text('OK'), | |||||
onPressed: ()async{ | onPressed: ()async{ | ||||
Navigator.pop(context,true); | Navigator.pop(context,true); | ||||
}, | }, | ||||
@@ -26,20 +26,26 @@ class _LoginPageState extends State<LoginPage> { | |||||
var result = await util.JsonDataPostRaw({"User":userCon.text,"Pass":passCon.text}, '${prefs.getString(keyClass.hostAddress)}/user//login/'); | var result = await util.JsonDataPostRaw({"User":userCon.text,"Pass":passCon.text}, '${prefs.getString(keyClass.hostAddress)}/user//login/'); | ||||
if(result['STATUS']==1&& result["DATA"]["status"]=='OK'){ | if(result['STATUS']==1&& result["DATA"]["status"]=='OK'){ | ||||
prefs.setString(keyClass.loginId, result['DATA'][keyClass.loginId.toLowerCase()]); | prefs.setString(keyClass.loginId, result['DATA'][keyClass.loginId.toLowerCase()]); | ||||
print("user id ${result['DATA'][keyClass.loginId.toLowerCase()]}"); | |||||
// print("user id ${result['DATA'][keyClass.loginId.toLowerCase()]}"); | |||||
prefs.setString(keyClass.company, result['DATA'][keyClass.company.toLowerCase()]); | prefs.setString(keyClass.company, result['DATA'][keyClass.company.toLowerCase()]); | ||||
prefs.setBool(keyClass.logged_in, true); | prefs.setBool(keyClass.logged_in, true); | ||||
var cabangList = await util.JsonDataPostRaw({"company":prefs.getString(keyClass.company),"User":prefs.getString(keyClass.loginId)}, '${prefs.getString(keyClass.hostAddress)}/user/cabangs/'); | |||||
Navigator.pop(context); | |||||
if(cabangList['STATUS']==1){ | |||||
cabangDrop = cabangList['DATA']; | |||||
selected = cabangDrop[0]['RETURN_VALUE']; | |||||
setState(() { | |||||
}); | |||||
FocusScope.of(context).requestFocus(new FocusNode()); | |||||
if(prefs.getString(keyClass.cabang_id)!= null && prefs.getString(keyClass.cabang_id)!= ''){ | |||||
Navigator.pop(context); | |||||
Navigator.pushNamed(context, '/home'); | |||||
} | } | ||||
else{ | else{ | ||||
util.showFlushbar(context, cabangList['DATA'],color: Colors.red); | |||||
var cabangList = await util.JsonDataPostRaw({"company":prefs.getString(keyClass.company),"User":prefs.getString(keyClass.loginId)}, '${prefs.getString(keyClass.hostAddress)}/user/cabangs/'); | |||||
Navigator.pop(context); | |||||
if(cabangList['STATUS']==1){ | |||||
cabangDrop = cabangList['DATA']; | |||||
selected = cabangDrop[0]['RETURN_VALUE']; | |||||
setState(() { | |||||
}); | |||||
FocusScope.of(context).requestFocus(new FocusNode()); | |||||
} | |||||
else{ | |||||
util.showFlushbar(context, cabangList['DATA'],color: Colors.red); | |||||
} | |||||
} | } | ||||
} | } | ||||
else{ | else{ | ||||
@@ -247,13 +247,6 @@ packages: | |||||
url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
source: hosted | source: hosted | ||||
version: "0.12.11" | 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: | meta: | ||||
dependency: transitive | dependency: transitive | ||||
description: | description: | ||||
@@ -531,7 +524,7 @@ packages: | |||||
name: test_api | name: test_api | ||||
url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
source: hosted | source: hosted | ||||
version: "0.4.8" | |||||
version: "0.4.3" | |||||
typed_data: | typed_data: | ||||
dependency: transitive | dependency: transitive | ||||
description: | description: | ||||
@@ -587,7 +580,7 @@ packages: | |||||
name: url_launcher_web | name: url_launcher_web | ||||
url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
source: hosted | source: hosted | ||||
version: "2.0.8" | |||||
version: "2.0.6" | |||||
url_launcher_windows: | url_launcher_windows: | ||||
dependency: transitive | dependency: transitive | ||||
description: | description: | ||||
@@ -632,4 +625,4 @@ packages: | |||||
version: "3.1.0" | version: "3.1.0" | ||||
sdks: | sdks: | ||||
dart: ">=2.15.0 <3.0.0" | dart: ">=2.15.0 <3.0.0" | ||||
flutter: ">=2.10.0" | |||||
flutter: ">=2.8.0" |
@@ -1,7 +1,7 @@ | |||||
name: unitstocks | name: unitstocks | ||||
description: App to stock Thamrin Brothers Units | description: App to stock Thamrin Brothers Units | ||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html | ||||
version: 1.0.5+9 | |||||
version: 1.0.5+10 | |||||
environment: | environment: | ||||
sdk: ">=2.1.0 <3.0.0" | sdk: ">=2.1.0 <3.0.0" | ||||