174 lines
5.7 KiB
Dart
174 lines
5.7 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:get_storage/get_storage.dart';
|
|
import 'package:gsp_app/modals/leaderboard_ranking_model.dart';
|
|
import 'package:gsp_app/repository/endpoints.dart';
|
|
import 'package:gsp_app/repository/response_data.dart';
|
|
|
|
import '../../../modals/rank_position.dart';
|
|
import '../../../view_model/my_ranking_controller.dart';
|
|
|
|
class RankingLeaderboard extends GetConnect {
|
|
MyRankingController myRankingController = Get.put(MyRankingController());
|
|
|
|
String generateGroupLevel(String groupLevel) {
|
|
if (groupLevel == "Swole") {
|
|
// myRankingController.groupLevel.value = "Swole";
|
|
return "elites";
|
|
} else if (groupLevel == "Up Steppers") {
|
|
// myRankingController.groupLevel.value = "Up Steppers";
|
|
return "gameChangers";
|
|
} else if (groupLevel == "Rookie") {
|
|
// myRankingController.groupLevel.value = "Underdogs";
|
|
return "underdogs";
|
|
}
|
|
return "elites";
|
|
}
|
|
|
|
String generateGender(String gender) {
|
|
if (gender == "Male") {
|
|
// myRankingController.gender.value = "Male";
|
|
return "male";
|
|
} else if (gender == "Female") {
|
|
// myRankingController.gender.value = "Female";
|
|
return "female";
|
|
} else if (gender == "All") {
|
|
// myRankingController.gender.value = "All";
|
|
return "all";
|
|
}
|
|
return "all";
|
|
}
|
|
|
|
Future<ResponseModel> getLeaderboardRanking(
|
|
{required String gender, required String groupLevel}) async {
|
|
var response = await post(Endpoints.getLeaderboraderRanking, {
|
|
"group_level": generateGroupLevel(groupLevel),
|
|
"gender": generateGender(gender)
|
|
}, headers: {
|
|
"access-token": GetStorage().read("token"),
|
|
});
|
|
|
|
if (response.body == null &&
|
|
response.body.toString().contains("<!DOCTYPE html>")) {
|
|
return const ResponseModel(
|
|
responseStatus: ResponseStatus.error, data: null);
|
|
} else {
|
|
Map data = response.body;
|
|
bool isAuthenticated = data["success"] ?? false;
|
|
|
|
if (isAuthenticated) {
|
|
// var allData = data["user_ranking"];
|
|
// var allData = data["user_data"];
|
|
// print("All data of ranking users $data");
|
|
// ["user_data"];
|
|
return ResponseModel(
|
|
responseStatus: ResponseStatus.success,
|
|
data: RnakingModel.fromJson(data as Map<String, dynamic>));
|
|
} else {
|
|
return const ResponseModel(
|
|
responseStatus: ResponseStatus.error, data: null);
|
|
}
|
|
}
|
|
}
|
|
|
|
Future<ResponseModel> getLeaderBoardDataWithoutFilter() async {
|
|
var response = await post(Endpoints.getLeaderboraderRanking, {}, headers: {
|
|
"access-token": GetStorage().read("token"),
|
|
});
|
|
|
|
// print('Ranking without filter ${response.body}');
|
|
|
|
if (response.body == null &&
|
|
response.body.toString().contains("<!DOCTYPE html>")) {
|
|
return const ResponseModel(
|
|
responseStatus: ResponseStatus.error, data: null);
|
|
} else {
|
|
Map data = response.body;
|
|
bool isAuthenticated = data["success"] ?? false;
|
|
|
|
if (isAuthenticated) {
|
|
// var allData = data["user_data"];
|
|
// var allData = data["user_data"];
|
|
// print("All data of ranking users $allData");
|
|
// ["user_data"];
|
|
return ResponseModel(
|
|
responseStatus: ResponseStatus.success,
|
|
data: RnakingModel.fromJson(data as Map<String, dynamic>));
|
|
} else {
|
|
return const ResponseModel(
|
|
responseStatus: ResponseStatus.error, data: null);
|
|
}
|
|
}
|
|
}
|
|
|
|
Future<ResponseModel> getLeaderBoardDataWithoutFilterHome() async {
|
|
var response = await post(Endpoints.getLeaderboraderRanking, { "group_level": "elites",}, headers: {
|
|
"access-token": GetStorage().read("token"),
|
|
});
|
|
|
|
// print('Ranking without filter ${response.body}');
|
|
|
|
if (response.body == null &&
|
|
response.body.toString().contains("<!DOCTYPE html>")) {
|
|
return const ResponseModel(
|
|
responseStatus: ResponseStatus.error, data: null);
|
|
} else {
|
|
Map data = response.body;
|
|
bool isAuthenticated = data["success"] ?? false;
|
|
|
|
if (isAuthenticated) {
|
|
// var allData = data["user_data"];
|
|
// var allData = data["user_data"];
|
|
// print("All data of ranking users $allData");
|
|
// ["user_data"];
|
|
return ResponseModel(
|
|
responseStatus: ResponseStatus.success,
|
|
data: RnakingModel.fromJson(data as Map<String, dynamic>));
|
|
} else {
|
|
return const ResponseModel(
|
|
responseStatus: ResponseStatus.error, data: null);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<ResponseModel> getLeaderBoardRankPositions() async {
|
|
var response = await get(Endpoints.getLeaderBoardRankPosition, headers: {
|
|
"access-token": GetStorage().read("token"),
|
|
});
|
|
|
|
if (response.body == null &&
|
|
response.body.toString().contains("<!DOCTYPE html>")) {
|
|
return const ResponseModel(
|
|
responseStatus: ResponseStatus.error, data: null);
|
|
} else {
|
|
Map data = response.body;
|
|
|
|
bool isAuthenticated = data["success"] ?? false;
|
|
|
|
if (isAuthenticated) {
|
|
return ResponseModel(
|
|
responseStatus: ResponseStatus.success,
|
|
data: SelfRankPositions.fromJson(data as Map<String, dynamic>),
|
|
);
|
|
} else {
|
|
return const ResponseModel(
|
|
responseStatus: ResponseStatus.error,
|
|
data: null,
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
setLeaderBoardRankYearlyPositions() async {
|
|
var response =
|
|
await get(Endpoints.setLeaderBoardRankYealyPosition, headers: {
|
|
"access-token": GetStorage().read("token"),
|
|
});
|
|
}
|
|
}
|