import 'dart:io'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; import 'package:intl/intl.dart'; import 'package:rogapp/model/rog.dart'; import 'package:rogapp/pages/destination/destination_controller.dart'; import 'package:rogapp/pages/index/index_controller.dart'; import 'package:rogapp/utils/database_helper.dart'; import 'dart:convert'; import '../utils/const.dart'; // // Rog type 0- start 1- checkin 2- goal // class ExternalService { static final ExternalService _instance = ExternalService._internal(); factory ExternalService(){ return _instance; } ExternalService._internal(); String getFormatedTime(DateTime datetime){ return DateFormat('yyyy-MM-dd HH:mm:ss').format(datetime); } Future> StartRogaining() async { final IndexController indexController = Get.find(); Map res = {}; int userId = indexController.currentUser[0]["user"]["id"]; //print("--- Pressed -----"); String team = indexController.currentUser[0]["user"]['team_name']; //print("--- _team : ${_team}-----"); String eventCode = indexController.currentUser[0]["user"]["event_code"]; if(indexController.connectionStatusName != "wifi" && indexController.connectionStatusName != "mobile"){ DatabaseHelper db = DatabaseHelper.instance; Rog rog = Rog( id:1, team_name: team, event_code : eventCode, user_id: userId, cp_number: -1, checkintime: DateTime.now().toUtc().microsecondsSinceEpoch, image: null, rog_action_type: 0 ); db.insertRogaining(rog); } else { String url = 'https://natnats.mobilous.com/start_from_rogapp'; print('++++++++$url'); final http.Response response = await http.post( Uri.parse(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode({ 'team_name': team, 'event_code': eventCode }), ); print("---- start rogianing api status ---- ${response.statusCode}"); if (response.statusCode == 200) { res = json.decode(utf8.decode(response.bodyBytes)); print('----_res : $res ----'); } } return res; } Future> makeCheckpoint(int userId, String token, String checkinTime, String teamname, int cp, String eventcode, String imageurl) async { Map res = {}; String url = 'https://natnats.mobilous.com/checkin_from_rogapp'; print('++++++++$url'); final IndexController indexController = Get.find(); if(imageurl != null){ if(indexController.connectionStatusName != "wifi" && indexController.connectionStatusName != "mobile"){ DatabaseHelper db = DatabaseHelper.instance; Rog rog = Rog( id:1, team_name: teamname, event_code : eventcode, user_id: userId, cp_number: cp, checkintime: DateTime.now().toUtc().microsecondsSinceEpoch, image: imageurl, rog_action_type: 1, ); db.insertRogaining(rog); } else { String serverUrl = ConstValues.currentServer(); String url1 = "$serverUrl/api/checkinimage/"; final im1Bytes = File(imageurl).readAsBytesSync(); String im1_64 = base64Encode(im1Bytes); final http.Response response = await http.post( Uri.parse(url1), headers: { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Token $token' }, // 'id', 'user', 'goalimage', 'goaltime', 'team_name', 'event_code','cp_number' body: jsonEncode({ 'user' : userId.toString(), 'team_name': teamname, 'event_code': eventcode, 'checkinimage' : im1_64, 'checkintime' : checkinTime, 'cp_number' : cp.toString() }), ); res = json.decode(utf8.decode(response.bodyBytes)); print("-----@@@@@ $res -----"); if(response.statusCode == 201){ //print('---- toekn is ${token} -----'); final http.Response response2 = await http.post( Uri.parse(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode({ 'team_name': teamname, 'cp_number': cp.toString(), 'event_code': eventcode, 'image': res["checkinimage"].toString().replaceAll('http://localhost:8100', 'http://rogaining.sumasen.net') }), ); print("--- checnin response ${response2.statusCode}----"); if (response2.statusCode == 200) { res = json.decode(utf8.decode(response2.bodyBytes)); print('----checkin res _res : $res ----'); } } } } else{ if(indexController.connectionStatusName != "wifi" || indexController.connectionStatusName != "mobile"){ DatabaseHelper db = DatabaseHelper.instance; Rog rog = Rog( id:1, team_name: teamname, event_code : eventcode, user_id: userId, cp_number: cp, checkintime: DateTime.now().toUtc().microsecondsSinceEpoch, image: null, rog_action_type: 1, ); db.insertRogaining(rog); } else { final http.Response response3 = await http.post( Uri.parse(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode({ 'team_name': teamname, 'cp_number': cp.toString(), 'event_code': eventcode, 'image': "" }), ); print("--- checnin response ${response3.statusCode}----"); if (response3.statusCode == 200) { res = json.decode(utf8.decode(response3.bodyBytes)); print('----checkin res _res : $res ----'); } } } return res; } Future> makeGoal(int userId, String token, String teamname, String image, String goalTime, String eventcode) async { Map res2 = {}; final IndexController indexController = Get.find(); final DestinationController destinationController = Get.find(); //if(indexController.connectionStatusName != "wifi" && indexController.connectionStatusName != "mobile"){ DatabaseHelper db = DatabaseHelper.instance; Rog rog = Rog( id:1, team_name: teamname, event_code : eventcode, user_id: userId, cp_number: -1, checkintime: DateTime.now().toUtc().microsecondsSinceEpoch, image: image, rog_action_type: 1, ); db.insertRogaining(rog); // } // else{ String serverUrl = ConstValues.currentServer(); String url1 = "$serverUrl/api/goalimage/"; final im1Bytes = File(image).readAsBytesSync(); String im1_64 = base64Encode(im1Bytes); final http.Response response = await http.post( Uri.parse(url1), headers: { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Token $token' }, // 'id', 'user', 'goalimage', 'goaltime', 'team_name', 'event_code','cp_number' body: jsonEncode({ 'user' : userId.toString(), 'team_name': teamname, 'event_code': eventcode, 'goaltime' : goalTime, 'goalimage' : im1_64, 'cp_number' : "-1" }), ); String url = 'https://natnats.mobilous.com/goal_from_rogapp'; print('++++++++$url'); if (response.statusCode == 201) { Map res = json.decode(utf8.decode(response.bodyBytes)); print('----_res : $res ----'); print('---- image url ${res["goalimage"]} ----'); final http.Response response2 = await http.post( Uri.parse(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode({ 'team_name': teamname, 'event_code': eventcode, 'goal_time' : goalTime, 'image' : res["goalimage"].toString().replaceAll('http://localhost:8100', 'http://rogaining.sumasen.net') } ), ); print('----- response2 is $response2 --------'); if (response2.statusCode == 200) { res2 = json.decode(utf8.decode(response2.bodyBytes)); } } //} destinationController.resetRogaining(); return res2; } static Future> usersEventCode(String teamcode, String password) async { Map res = {}; String url = "https://natnats.mobilous.com/check_event_code?zekken_number=$teamcode&password=$password"; print('++++++++$url'); final http.Response response = await http.get( Uri.parse(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', } ); if (response.statusCode == 200) { res = json.decode(utf8.decode(response.bodyBytes)); } return res; } }