import 'dart:convert'; import 'package:geojson/geojson.dart'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; import 'package:rogapp/pages/index/index_controller.dart'; import 'package:rogapp/utils/const.dart'; class LocationService{ // static Future loadLocations() async { // final IndexController indexController = Get.find(); // String server_url = ConstValues.currentServer(); // String url = ""; // if(indexController.currentUser.length > 0){ // url = '${server_url}/api/location/?is_rog=True'; // } // else { // url = '${server_url}/api/location/'; // } // //String url = 'http://localhost:8100/api/location/'; // final response = await http.get(Uri.parse(url), // headers: { // 'Content-Type': 'application/json; charset=UTF-8', // }, // ); // if (response.statusCode == 200) { // return featuresFromGeoJson(utf8.decode(response.bodyBytes)); // } // return null; // } static Future loadLocationsFor(String perfecture, String cat) async { final IndexController indexController = Get.find(); String url = ""; String serverUrl = ConstValues.currentServer(); if(cat.isNotEmpty){ if(indexController.currentUser.isNotEmpty){ bool rog = indexController.currentUser[0]['user']['is_rogaining']; String r = rog == true ? 'True': 'False'; var grp = indexController.currentUser[0]['user']['event_code']; url = '$serverUrl/api/inperf/?rog=$r&perf=$perfecture&cat=$cat'; } else { url = '$serverUrl/api/inperf/?perf=$perfecture&cat=$cat'; } } else{ if(indexController.currentUser.isNotEmpty){ bool rog = indexController.currentUser[0]['user']['is_rogaining']; String r = rog == true ? 'True': 'False'; var grp = indexController.currentUser[0]['user']['event_code']; url = '$serverUrl/api/inperf/?rog=$r&perf=$perfecture'; } else { url = '$serverUrl/api/inperf/?perf=$perfecture'; } } print('++++++++$url'); final response = await http.get(Uri.parse(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, ); if (response.statusCode == 200) { GeoJsonFeatureCollection cc = await featuresFromGeoJson(utf8.decode(response.bodyBytes)); //print(cc); return cc; //featuresFromGeoJson(utf8.decode(response.bodyBytes)); } return null; } static Future?> getLocationsExt(String token) async { List ext = []; String serverUrl = ConstValues.currentServer(); String url = '$serverUrl/api/locsext/'; print('++++++++$url'); final response = await http.post(Uri.parse(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Token $token' }, body: jsonEncode({ 'token': token, }) ); if (response.statusCode == 200) { ext = json.decode(utf8.decode(response.bodyBytes)); } return ext; } static Future loadLocationsSubFor(String subperfecture, String cat) async { final IndexController indexController = Get.find(); String url = ""; String serverUrl = ConstValues.currentServer(); if(cat.isNotEmpty){ if(indexController.currentUser.isNotEmpty){ bool rog = indexController.currentUser[0]['user']['is_rogaining']; String r = rog == true ? 'True': 'False'; var grp = indexController.currentUser[0]['user']['event_code']; url = '$serverUrl/api/insubperf?rog=$r&subperf=$subperfecture&cat=$cat'; } else{ url = '$serverUrl/api/insubperf?subperf=$subperfecture&cat=$cat'; } } else{ if(indexController.currentUser.isNotEmpty){ bool rog = indexController.currentUser[0]['user']['is_rogaining']; String r = rog == true ? 'True': 'False'; var grp = indexController.currentUser[0]['user']['event_code']; url = '$serverUrl/api/insubperf?rog=$r&subperf=$subperfecture'; } else{ url = '$serverUrl/api/insubperf?subperf=$subperfecture'; } } print('++++++++$url'); final response = await http.get(Uri.parse(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, ); if (response.statusCode == 200) { GeoJsonFeatureCollection cc = await featuresFromGeoJson(utf8.decode(response.bodyBytes)); //print(cc); return cc; //featuresFromGeoJson(utf8.decode(response.bodyBytes)); } return null; } static Future loadLocationsBound(double lat1, double lon1, double lat2, double lon2, double lat3, double lon3, double lat4, double lon4, String cat) async { final IndexController indexController = Get.find(); print("-------- in location for bound -------------"); print("-------- in location for bound current user ${indexController.currentUser} -------------"); String url = ""; String serverUrl = ConstValues.currentServer(); if(cat.isNotEmpty){ if(indexController.currentUser.isNotEmpty){ bool rog = indexController.currentUser[0]['user']['is_rogaining']; String r = rog == true ? 'True': 'False'; var grp = indexController.currentUser[0]['user']['event_code']; url = '$serverUrl/api/inbound?rog=$r&grp=$grp&ln1=$lon1&la1=$lat1&ln2=$lon2&la2=$lat2&ln3=$lon3&la3=$lat3&ln4=$lon4&la4=$lat4&cat=$cat'; } else{ url = '$serverUrl/api/inbound?ln1=$lon1&la1=$lat1&ln2=$lon2&la2=$lat2&ln3=$lon3&la3=$lat3&ln4=$lon4&la4=$lat4&cat=$cat'; } } else{ if(indexController.currentUser.isNotEmpty){ bool rog = indexController.currentUser[0]['user']['is_rogaining']; String r = rog == true ? 'True': 'False'; var grp = indexController.currentUser[0]['user']['event_code']; print("-------- requested user group $grp -------------"); url = '$serverUrl/api/inbound?rog=$r&grp=$grp&ln1=$lon1&la1=$lat1&ln2=$lon2&la2=$lat2&ln3=$lon3&la3=$lat3&ln4=$lon4&la4=$lat4'; } else{ url = '$serverUrl/api/inbound?ln1=$lon1&la1=$lat1&ln2=$lon2&la2=$lat2&ln3=$lon3&la3=$lat3&ln4=$lon4&la4=$lat4'; } } print('++++++++$url'); final response = await http.get(Uri.parse(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, ); if (response.statusCode == 500) { return GeoJsonFeatureCollection(); //featuresFromGeoJson(utf8.decode(response.bodyBytes)); } if (response.statusCode == 200) { GeoJsonFeatureCollection cc = await featuresFromGeoJson(utf8.decode(response.bodyBytes)); if(cc.collection.isEmpty){ return null; } else{ //print("---- feature got from server is ${cc.collection[0].properties} ------"); return cc; } } return null; } static Future loadCustomLocations(String name, String cat) async { final IndexController indexController = Get.find(); String url = ""; if(cat == "-all-"){ cat = ""; } String serverUrl = ConstValues.currentServer(); print("loadCustomLocations url is ----- $cat"); if(cat.isNotEmpty){ if(indexController.currentUser.isNotEmpty){ bool rog = indexController.currentUser[0]['user']['is_rogaining']; String r = rog == true ? 'True': 'False'; var grp = indexController.currentUser[0]['user']['event_code']; url = '$serverUrl/api/custom_area/?rog=$r&&cat=$cat'; } else{ url = '$serverUrl/api/custom_area/?&cat=$cat'; } } else{ if(indexController.currentUser.isNotEmpty){ bool rog = indexController.currentUser[0]['user']['is_rogaining']; String r = rog == true ? 'True': 'False'; var grp = indexController.currentUser[0]['user']['event_code']; url = '$serverUrl/api/customarea?rog=$r&name=$name'; } else{ url = '$serverUrl/api/customarea?name=$name'; } } print('++++++++$url'); final response = await http.get(Uri.parse(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, ); if (response.statusCode == 500) { return GeoJsonFeatureCollection(); //featuresFromGeoJson(utf8.decode(response.bodyBytes)); } if (response.statusCode == 200) { GeoJsonFeatureCollection cc = await featuresFromGeoJson(utf8.decode(response.bodyBytes)); if(cc.collection.isEmpty){ return null; } else{ return cc; } } return null; } }