save method
Future<Map<String, Object?>>
save(
{ - VoidCallback? onSuccess,
- bool useLoadingDialog = false,
- dynamic afterSave(
- bool success,
- Map<String, List<Map<String, Object?>?>?> response
)?,
- bool checkDirtyData = true,
- bool uploadImage = true,
- Map<String, Object?>? params,
})
Implementation
Future<Map<String, Object?>> save({
VoidCallback? onSuccess,
bool useLoadingDialog = false,
Function(
bool success,
Map<String, List<Map<String, Object?>?>?> response,
)?
afterSave,
bool checkDirtyData = true,
bool uploadImage = true,
Map<String, Object?>? params,
}) async {
Map<String, Object?> dataReturn = {};
this.onSuccess = onSuccess;
if (_isDirtyData || !checkDirtyData) {
final Map<String, Object?> jParam = dataEntity.map((key, value) {
if (value is num || value is bool || value is String || value == null) {
value = value;
} else {
value = value.toString();
}
return MapEntry(key, value);
});
jParam.removeWhere(
(key, value) => _checkIsImagesKey(key.replaceFirst(RegExp(r'@'), '')),
);
params ??= {};
jParam.forEach((key, value) {
params!.putIfAbsent(key, () => value);
});
try {
if (useLoadingDialog) _isWaiting.value = true;
if (kDebugMode) {
print('EditorWidget: Submitting...');
}
final response =
await SQLService.execute(onSaveProcedure, params: params);
if (kDebugMode) {
print('result: $response');
}
dataReturn = response;
if (response['Exception']?.isNotEmpty ?? false) {
_succeed.value = false;
afterSave?.call(false, response);
if (kDebugMode) {
print(
'Editor Save Error On Server: ${response['Exception']?.first?['Message']}');
}
} else {
if (uploadImage) {
await saveImages(response);
}
_succeed.value = true;
afterSave?.call(true, response);
onSuccess?.call();
}
} catch (e, stackTrace) {
if (kDebugMode) {
print('Editor Save Error: $e');
print(stackTrace);
}
}
EditorController.mapDataReturn = dataReturn;
return dataReturn;
} else {
if (kDebugMode) {
print('data have already save');
}
EditorController.mapDataReturn = dataReturn;
return dataReturn;
}
}