getAvancedRangking method

  1. @override
Future<List<AdvancedRanking>> getAvancedRangking({
  1. required String distinctId,
  2. List<String>? categories,
  3. bool? exactCategories,
  4. String? sector,
  5. String? sectorB,
  6. String? sectorC,
  7. String? activityType,
  8. String? pointType,
  9. num? startingPoints,
  10. num? limitPoints,
  11. num? rankingSize,
  12. num? page,
  13. num? perPage,
  14. bool? includeLoggedParticipant,
})
override

Implementation

@override
Future<List<AdvancedRanking>> getAvancedRangking({
  required String distinctId,
  List<String>? categories,
  bool? exactCategories,
  String? sector,
  String? sectorB,
  String? sectorC,
  String? activityType,
  String? pointType,
  num? startingPoints,
  num? limitPoints,
  num? rankingSize,
  num? page,
  num? perPage,
  bool? includeLoggedParticipant,
}) async {
  final body = <String, dynamic>{
    'api_key': Environment.apiKey,
    'campaign': Environment.campaign,
    'distinct_id': distinctId,
  };

  if (categories != null && categories.isNotEmpty) {
    body['categories'] = categories;
  }
  if (exactCategories != null) body['exact_categories'] = exactCategories;
  if (activityType != null && activityType.trim().isNotEmpty) {
    body['activity_type'] = activityType;
  }
  if (pointType != null && pointType.trim().isNotEmpty) {
    body['point_type'] = pointType;
  }
  if (startingPoints != null) body['starting_points'] = startingPoints;
  if (limitPoints != null) body['limit_points'] = limitPoints;
  if (rankingSize != null) body['ranking_size'] = rankingSize;

  final queryParams = <String, dynamic>{};

  if (sector != null && sector.trim().isNotEmpty) {
    queryParams['sector'] = sector;
  }
  if (sectorB != null && sectorB.trim().isNotEmpty) {
    queryParams['sector_b'] = sectorB;
  }
  if (sectorC != null && sectorC.trim().isNotEmpty) {
    queryParams['sector_c'] = sectorC;
  }
  if (page != null) queryParams['page'] = page;
  if (perPage != null) queryParams['per_page'] = perPage;
  if (includeLoggedParticipant != null) {
    queryParams['include_logged_participant'] = includeLoggedParticipant;
  }

  final response = await dio.post(
    '/participants/ranks/advanced',
    data: body,
    queryParameters: queryParams,
  );

  final Map<String, dynamic> responseData = jsonDecode(response.data);
  return _jsonToAdvancedRankingList(responseData);
}