Untitled
unknown
plain_text
2 years ago
10 kB
12
Indexable
// offline Shout add & delete
void deleteOfflineShout(OfflineShoutModel item) async {
final offlineShoutsBox = Hive.box<OfflineShoutModel>('offlineShouts');
final index = offlineShoutsBox.values.toList().indexOf(item);
await offlineShoutsBox.deleteAt(index);
offlineShoutList.remove(item);
back();
DialogHelper.globalDialog(
message: 'The offline shout incident was deleted successfully',
isSuccess: true,
onTap: () {
back();
},
);
}
void syncOfflineShouts() async {
isSubmitOfflineShout.value = true;
final offlineShoutsBox = Hive.box<OfflineShoutModel>('offlineShouts');
final allOfflineShouts = offlineShoutsBox.values.toList();
final List<MultipartFile> attachments = [];
for (final item in allOfflineShouts) {
for (final imgItem in item.files!) {
final img = await MultipartFile.fromBytes(
imgItem.toList(),
filename: '${getUniqeId()}.jpg',
);
attachments.add(img);
}
final mapData = item.toJson();
mapData['files'] = attachments;
final body = FormData.fromMap(mapData);
final res = await postDynamic(
path: ApiEndpoint.addShoutIncidentForm(),
body: body,
authentication: true,
);
attachments.clear();
kLog(res.data);
if (res != null) {
if (res.data['status'] != null && res.data['status'].contains('successful') == true) {
isSubmit.value = false;
if (res.data['data']['data']['shoutProcessStatus'] == 2) {
DialogHelper.globalDialogMultipleMessage(
message: res.data['message'][0],
detailsMessage: 'No Officer Found',
isSuccess: true,
onTap: () {
back();
back();
},
);
} else if (res.data['data']['data']['shoutProcessStatus'] == 1) {
DialogHelper.globalDialogMultipleMessage(
message: res.data['message'][0],
detailsMessage:
'Sorry, We are unable to process this service because there is no agency for this service. Your shout is under consideration.',
isSuccess: true,
onTap: () {
back();
back();
},
);
} else {
DialogHelper.globalDialog(
message: res.data['message'][0],
isSuccess: true,
onTap: () {
back();
back();
menuC.currentIndex.value = 2;
},
);
}
imagefiles.clear();
selectedAttentionDropdown.value = null;
selectedAttentionSearch.value = '';
selectedLocation.value = null;
knownLocation.value = false;
remarks.value = '';
urgencyLevel.value = '';
searchAttentionAgencyName.value = '';
} else {
isSubmit.value = false;
DialogHelper.globalDialog(
message: 'Something went wrong',
isSuccess: false,
onTap: () {
back();
back();
},
);
}
} else {
DialogHelper.globalDialog(
message: 'Something went wrong',
isSuccess: false,
onTap: () {
back();
back();
},
);
}
await 2.delay();
}
await offlineShoutsBox.clear();
offlineShoutList.clear();
isSubmitOfflineShout.value = false;
}
void initOfflineShouts() {
final offlineShoutsBox = Hive.box<OfflineShoutModel>('offlineShouts');
final allOfflineShouts = offlineShoutsBox.values.toList();
offlineShoutList.addAll(allOfflineShouts);
}
Future<void> addShout({
required String subcategoryId,
required String? categoryName,
required String? categoryNameEn,
required String subcategoryName,
required bool broadcastAllowed,
required String attentionType,
}) async {
// var list = [];
isSubmit.value = false;
try {
// var shoutData = Hive.box('shoutData');
final username = Get.put(UserController()).username;
// final selectedAgency = Get.put(AgencyController()).selectedAgency;
final List<MultipartFile> attachments = [];
final List<Uint8List> offlineAttachments = [];
for (var img in imagefiles) {
final fileName = getFileName(path: img.path);
final imgFile = await MultipartFile.fromFile(
img.path,
filename: '${getUniqeId()}$fileName',
);
attachments.add(imgFile);
offlineAttachments.add(await img.readAsBytes());
// kLog('attachment length: ${attachments.length}');
}
Map<String, dynamic> bodyData = {
"apiKey": ApiEndpoint.SHOUT_API_KEY,
"appCode": ApiEndpoint.SHOUT_APP_CODE,
"subcategoryIds": subcategoryId,
"categoryName": categoryNameEn ?? 'N/A',
"subcategoryName": subcategoryName,
"broadcastAllowed": broadcastAllowed,
if (attentionType == 'Dropdown')
"agencyIds": selectedAttentionDropdown.value != null ? selectedAttentionDropdown.value?.agencyId : null,
if (attentionType != 'Dropdown')
"agencyIds": selectedAttentionDropdown.value != null ? selectedAttentionDropdown.value?.agencyId : null,
if (attentionType == 'Dropdown')
"agencyName": selectedAttentionDropdown.value != null ? selectedAttentionDropdown.value?.agencyName : null,
if (attentionType != 'Dropdown')
"agencyName": selectedAttentionDropdown.value != null ? selectedAttentionDropdown.value?.agencyName : null,
"countryCode": serverLocationController.countryCode.value,
"username": username,
"latitude": selectedLocation.value != null ? '${selectedLocation.value!.latitude}' : '${locationC.latLng.value.latitude}',
"longitude": selectedLocation.value != null ? '${selectedLocation.value!.longitude}' : '${locationC.latLng.value.longitude}',
"urgencyLevel": urgencyLevel.value.isEmpty ? "Immediate" : urgencyLevel.value,
"remarks": remarks.value.isEmpty ? "" : remarks.value,
"uiCodes": ["000000"],
"wasAnonymous": keepMeAnonymous.value,
"reportedAt": DateTime.now().toString(),
"files": authC.loginType.value == 'online' ? attachments : offlineAttachments,
};
final body = FormData.fromMap(bodyData);
if (authC.loginType.value == 'online') {
final res = await postDynamic(
path: ApiEndpoint.addShoutIncidentForm(),
body: body,
authentication: true,
);
if (res != null) {
if (res.data['status'] != null && res.data['status'].contains('successful') == true) {
isSubmit.value = false;
// is trace enabled
if (broadcastAllowed) {
await CtsGetStorage().write('isTraceEnabled', true);
} else {
await CtsGetStorage().write('isTraceEnabled', false);
}
if (res.data['data']['data']['shoutProcessStatus'] == 2) {
DialogHelper.globalDialogMultipleMessage(
message: res.data['message'][0],
detailsMessage: 'No Officer Found',
isSuccess: true,
onTap: () {
back();
back();
menuC.currentIndex.value = 2;
},
);
} else if (res.data['data']['data']['shoutProcessStatus'] == 1) {
DialogHelper.globalDialogMultipleMessage(
message: res.data['message'][0],
detailsMessage:
'Sorry, We are unable to process this service because there is no agency for this service. Your shout is under consideration.',
isSuccess: true,
onTap: () {
back();
back();
menuC.currentIndex.value = 2;
},
);
} else {
DialogHelper.globalDialog(
message: res.data['message'][0],
isSuccess: true,
onTap: () {
back();
back();
menuC.currentIndex.value = 2;
},
);
}
imagefiles.clear();
selectedAttentionDropdown.value = null;
selectedAttentionSearch.value = '';
selectedLocation.value = null;
knownLocation.value = false;
remarks.value = '';
urgencyLevel.value = '';
searchAttentionAgencyName.value = '';
} else {
isSubmit.value = false;
DialogHelper.globalDialog(
message: 'Something went wrong',
isSuccess: false,
onTap: () {
back();
back();
menuC.currentIndex.value = 2;
},
);
}
} else {
DialogHelper.globalDialog(
message: 'Something went wrong',
isSuccess: false,
onTap: () {
// push(HomePage());
back();
back();
menuC.currentIndex.value = 2;
},
);
}
} else {
// Offline shout logic
final offlineShoutsBox = Hive.box<OfflineShoutModel>('offlineShouts');
final offlineShout = OfflineShoutModel.fromJson(bodyData);
await offlineShoutsBox.add(offlineShout);
offlineShoutList.add(offlineShout);
DialogHelper.globalDialog(
message: 'Offline shout has been saved!',
isSuccess: true,
onTap: () {
back();
back();
menuC.currentIndex.value = 2;
},
);
}
} catch (e) {
print(e);
}
}
Editor is loading...
Leave a Comment