processFetchResponse method
dynamic
processFetchResponse()
Implementation
processFetchResponse(
String serviceName,
http.Response response,
dynamic model,
int totalPage,
int pageNo,
Function? onFetchComplete) async {
if (response.statusCode == 200) {
var json = jsonDecode(response.body);
print('Api Response $pageNo - JSON : ${json}');
if (json['Success']) {
if (pageNo == 1) totalRecord = json['TotalRecord'];
if (json['ApiPacket']['PacketList'] != null) {
var data = json['ApiPacket']['PacketList'] as List;
print('Total Record : ${data.length}');
print('Dumping data....');
var newModel = Dynamic(model).createInstance();
//saving to database
if (data.length > 0) {
await Dynamic(newModel).apiJsonMapToDb(newModel, data);
}
completedPages.add(pageNo);
print('Pages Completed: ${completedPages.toList().toString()}');
pages += pageNo.toString() + ',';
bool allPageCompleted = false;
if (totalPage == pageNo || pageSize >= totalRecord) {
allPageCompleted = true;
}
await dbHelper.updateFetchHistoryPages(model.runtimeType.toString(),
pages, totalRecord, allPageCompleted ? 1 : 0);
if (allPageCompleted) {
await dbHelper.updateFetchTable(
serviceName, model.runtimeType.toString());
print("Updated Remark to :" + model.runtimeType.toString());
}
}
} else {
await dbHelper.updateFetchHistoryPages(
model.runtimeType.toString(), pages, totalRecord, 4);
await dbHelper.updateFetchTable(
serviceName, model.runtimeType.toString());
print(
"```````````````````````````````````````````````````````````````````````````````````");
print(
"``````````````````````````````````Failed to Fetch``````````````````````````````````");
print("``````````````````````````````````" +
model.runtimeType.toString() +
'``````````````````````````````````');
print(
"```````````````````````````````````````````````````````````````````````````````````");
print(
"```````````````````````````````````````````````````````````````````````````````````");
print("Error Reason : " + json['Message'].toString());
}
} else {
await dbHelper.updateFetchHistoryPages(
model.runtimeType.toString(), pages, totalRecord, 4);
await dbHelper.updateFetchTable(
serviceName, model.runtimeType.toString());
print(
"```````````````````````````````````````````````````````````````````````````````````");
print(
"``````````````````````````````````Failed to Fetch``````````````````````````````````");
print("``````````````````````````````````" +
model.runtimeType.toString() +
'``````````````````````````````````');
print(
"```````````````````````````````````````````````````````````````````````````````````");
print(
"```````````````````````````````````````````````````````````````````````````````````");
if (response.body.isNotEmpty) {
var json = jsonDecode(response.body);
if (onFetchComplete != null) {
print(json['Message'] + pageNo.toString());
//onFetchComplete(json['Message'] + pageNo.toString(), 'failed', json['ApiPacket']['PacketList']);
}
} else {
print('500: Internal Server Error');
if (onFetchCompleted != null) {
onFetchCompleted!('500', 0);
}
if (onFetchFailed != null) onFetchFailed!(model.runtimeType.toString());
}
return null;
}
}