processFetchResponse method

dynamic processFetchResponse(
  1. String serviceName,
  2. Response response,
  3. dynamic model,
  4. int totalPage,
  5. int pageNo,
  6. Function? onFetchComplete,
)

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;
  }
}