jefry před 3 roky
rodič
revize
4f4ad83529
5 změnil soubory, kde provedl 118 přidání a 90 odebrání
  1. +1
    -1
      android/app/build.gradle
  2. +1
    -1
      android/app/src/main/AndroidManifest.xml
  3. +25
    -26
      lib/Util/DBHelper.dart
  4. +81
    -59
      lib/home_page.dart
  5. +10
    -3
      pubspec.lock

+ 1
- 1
android/app/build.gradle Zobrazit soubor

@@ -67,7 +67,7 @@ if (keystorePropertiesFile.exists()) {
}

android {
compileSdkVersion 30
compileSdkVersion 31

sourceSets {
main.java.srcDirs += 'src/main/kotlin'


+ 1
- 1
android/app/src/main/AndroidManifest.xml Zobrazit soubor

@@ -11,7 +11,7 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
android:name="io.flutter.app.FlutterApplication"
android:name="${applicationName}"
android:label="unitstocks"
android:icon="@mipmap/launcher_icon">
<activity


+ 25
- 26
lib/Util/DBHelper.dart Zobrazit soubor

@@ -19,8 +19,10 @@ class DBHelper {
if (_db == null) _db = await initDb();
return _db;
}
backupDb() async{
try{
backupDb(context) async{
var result = {"STATUS":0,"MSG":"Backup gagal!"};
await util.permissionCheck(context,pHandler.Permission.storage,()async{
try{
// if(dbPath == null || dbPath == ''){
final database = await db;
var dbPath = database.path;
@@ -29,8 +31,6 @@ class DBHelper {
await prefs.remove(keyClass.backup_stock_id);
var stock_id = prefs.getString(keyClass.stock_id)??'';
if(stock_id != ''){
var cabang = prefs.getString(keyClass.cabang_id)??'';
if(cabang !='' && cabang != null ) await prefs.setString(keyClass.backup_cabang_id,cabang);
if(stock_id !='' && stock_id != null ) await prefs.setString(keyClass.backup_stock_id,stock_id);
//backupDatabase
String backupPath = join(dbPath.substring(0,dbPath.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db");
@@ -40,21 +40,23 @@ class DBHelper {
// dbFile.copySync(backupPath);
Uint8List byte = dbFile.readAsBytesSync();
backupFile.writeAsBytesSync(byte);
return {"STATUS":1,"MSG":"Backup Berhasil!"};
result = {"STATUS":1,"MSG":"Backup Berhasil!"};
}
else{
return {"STATUS":0,"MSG":"Backup gagal data unit tidak ditemukan!"};
result = {"STATUS":0,"MSG":"Backup gagal data unit tidak ditemukan!"};
print('file backup dont exist tho');
}
}
else{
return {"STATUS":0,"MSG":"Backup gagal data unit tidak ditemukan!"};
result = {"STATUS":0,"MSG":"Backup gagal data unit tidak ditemukan!"};
}
}
catch(e){
print(e);
return {"STATUS":0,"MSG":"Backup gagal!"};
result = {"STATUS":0,"MSG":"Backup gagal!"};
}
},customMessage: " untuk menyimpan data backup");
return result;
}
initDb() async {
io.Directory documentsDirectory = await getExternalStorageDirectory();
@@ -63,26 +65,23 @@ class DBHelper {
return theDb;
}

restoreDb()async{
restoreDb(context)async{
var result = {"STATUS":0,"MSG":"File Backup tidak ditemukan!"};
if(prefs.getString(keyClass.stock_id) == null || prefs.getString(keyClass.stock_id) == prefs.getString(keyClass.backup_cabang_id)){
if(prefs.getString(keyClass.backup_stock_id)!=null && prefs.getString(keyClass.backup_cabang_id)!= null){
await util.permissionCheck(context,pHandler.Permission.storage,()async{
io.Directory documentsDirectory = await getExternalStorageDirectory();
String backupPath = join(documentsDirectory.path.substring(0,documentsDirectory.path.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db");
io.File backupdbFile = io.File(backupPath);
if(backupdbFile.existsSync()){
io.File dbFile = new io.File(join(documentsDirectory.path, "UnitStocking.db"));
Uint8List byte = backupdbFile.readAsBytesSync();
dbFile.writeAsBytesSync(byte);
result = {"STATUS":1,"MSG":"File Back up successfull"};
await DBHelper.database.closeDb();
}
else result = {"STATUS":0,"MSG":"File Backup tidak ditemukan!"};
},customMessage: " untuk menyimpan data backup");
}
if(prefs.getString(keyClass.backup_stock_id)!=null){
await util.permissionCheck(context,pHandler.Permission.storage,()async{
io.Directory documentsDirectory = await getExternalStorageDirectory();
String backupPath = join(documentsDirectory.path.substring(0,documentsDirectory.path.indexOf("/Android"))+"/Download", "${prefs.getString(keyClass.backup_stock_id)}_UnitStocking.db");
io.File backupdbFile = io.File(backupPath);
if(backupdbFile.existsSync()){
io.File dbFile = new io.File(join(documentsDirectory.path, "UnitStocking.db"));
Uint8List byte = backupdbFile.readAsBytesSync();
dbFile.writeAsBytesSync(byte);
result = {"STATUS":1,"MSG":"File Back up successfull"};
await DBHelper.database.closeDb();
}
else result = {"STATUS":0,"MSG":"File Backup tidak ditemukan!"};
},customMessage: " untuk menyimpan data backup");
}
else result = {"STATUS":0,"MSG":"File Backup tidak ditemukan!"};
return result;
}



+ 81
- 59
lib/home_page.dart Zobrazit soubor

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


+ 10
- 3
pubspec.lock Zobrazit soubor

@@ -247,6 +247,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
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:
dependency: transitive
description:
@@ -524,7 +531,7 @@ packages:
name: test_api
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.3"
version: "0.4.8"
typed_data:
dependency: transitive
description:
@@ -580,7 +587,7 @@ packages:
name: url_launcher_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.6"
version: "2.0.8"
url_launcher_windows:
dependency: transitive
description:
@@ -625,4 +632,4 @@ packages:
version: "3.1.0"
sdks:
dart: ">=2.15.0 <3.0.0"
flutter: ">=2.8.0"
flutter: ">=2.10.0"

Načítá se…
Zrušit
Uložit