getUserOrderPets method

Future<List<Map<String, dynamic>>> getUserOrderPets()

Implementation

Future<List<Map<String, dynamic>>> getUserOrderPets() async {
  http.Response response;

  List<Map<String, dynamic>> orderPetInfoList = [];
  List<PetModel> orderedPets = [];
  List<OrderSummaryModel> orderSummaries = [];
  List<OrderPetMapModel> orderPetMapList = [];
  int i = 0;

  SharedPreferencesService sharedPreferencesService = await SharedPreferencesService.getInstance();

  try {
    var currentUserId = await sharedPreferencesService.getUserId();
    var token = await sharedPreferencesService.getToken();
    response = await getHttp("/user/$currentUserId/order", token);

    if (response.statusCode == 200) {
      final listResponse = json.decode(response.body);
      for (var key in listResponse.keys) {
        var petInfo = listResponse[key]["PetInfo"];
        var orderPetMapDetails = listResponse[key]["OrderPetMapDetails"];
        var orderSummary = listResponse[key]["OrderSummary"];

        orderedPets.add(PetModel.getData(petInfo));
        orderPetMapList.add(OrderPetMapModel.getData(orderPetMapDetails));
        orderSummaries.add(OrderSummaryModel.getData(orderSummary));

        // Instead of adding to a map, add a new map to the list
        orderPetInfoList.add({
          "index": i,
          "PetInfo": orderedPets[i],
          "OrderPetMapDetails": orderPetMapList[i],
          "OrderSummary": orderSummaries[i],
        });
        i++;
      }
    }
  } catch (e) {
    return orderPetInfoList; // Return the list even in case of error
  }
  return orderPetInfoList;
}