fixed checkin issue
This commit is contained in:
@ -48,6 +48,9 @@ class CameraPage extends StatelessWidget {
|
||||
backgroundColor: Colors.red
|
||||
),
|
||||
onPressed: () async {
|
||||
|
||||
print("----- user isss ${indexController.currentUser[0]} -----");
|
||||
|
||||
settingGoal.value = true;
|
||||
try{
|
||||
int userId = indexController.currentUser[0]["user"]["id"];
|
||||
|
||||
@ -113,7 +113,7 @@ class DestinationController extends GetxController {
|
||||
print("---- is in rog is ${is_in_rog} ----");
|
||||
//skip_gps = true;
|
||||
double checkinRadious = fs.properties!['checkin_radius'] ?? double.infinity;
|
||||
//if (checkinRadious >= distance) {
|
||||
if (checkinRadious >= distance) {
|
||||
indexController.currentFeature.clear();
|
||||
Destination d = festuretoDestination(fs);
|
||||
print("----- destination lenght is ${destinations.length} -----");
|
||||
@ -126,7 +126,8 @@ class DestinationController extends GetxController {
|
||||
indexController.currentFeature.add(fs);
|
||||
print("---- before calling startTimer ----");
|
||||
startTimer(d, distance);
|
||||
//}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void startTimer(Destination d, double distance) async {
|
||||
@ -139,7 +140,8 @@ class DestinationController extends GetxController {
|
||||
|
||||
double checkinRadious = d.checkin_radious ?? double.infinity;
|
||||
bool autoCheckin = d.auto_checkin == 0 ? false : true;
|
||||
bool locationAlreadyCheckedIn = ds.length > 0 && ds[0].checkedin == true ? true : false;
|
||||
bool locationAlreadyCheckedIn =
|
||||
ds.length > 0 && ds[0].checkedin == true ? true : false;
|
||||
bool isuserLoggedIn = indexController.currentUser.isNotEmpty ? true : false;
|
||||
//make current destination
|
||||
print("---- checkin_radious $checkinRadious ----");
|
||||
@ -159,9 +161,7 @@ class DestinationController extends GetxController {
|
||||
if (is_photo_shoot.value == true) {
|
||||
photos.clear();
|
||||
showModalBottomSheet(
|
||||
constraints: BoxConstraints.loose(Size(
|
||||
Get.width,
|
||||
Get.height * 0.75)),
|
||||
constraints: BoxConstraints.loose(Size(Get.width, Get.height * 0.75)),
|
||||
context: Get.context!,
|
||||
isScrollControlled: true,
|
||||
builder: ((context) => CameraPage())).whenComplete(() {
|
||||
@ -182,9 +182,8 @@ class DestinationController extends GetxController {
|
||||
is_in_checkin.value = true;
|
||||
is_at_start.value = true;
|
||||
showModalBottomSheet(
|
||||
constraints: BoxConstraints.loose(Size(
|
||||
Get.width,
|
||||
Get.height * 0.75)),
|
||||
constraints:
|
||||
BoxConstraints.loose(Size(Get.width, Get.height * 0.75)),
|
||||
context: Get.context!,
|
||||
isScrollControlled: true,
|
||||
builder: ((context) => BottomSheetNew())).whenComplete(() {
|
||||
@ -198,9 +197,8 @@ class DestinationController extends GetxController {
|
||||
chekcs = 2;
|
||||
is_in_checkin.value = true;
|
||||
showModalBottomSheet(
|
||||
constraints: BoxConstraints.loose(Size(
|
||||
Get.width,
|
||||
Get.height * 0.75)),
|
||||
constraints:
|
||||
BoxConstraints.loose(Size(Get.width, Get.height * 0.75)),
|
||||
context: Get.context!,
|
||||
isScrollControlled: true,
|
||||
builder: ((context) => BottomSheetNew())).whenComplete(() {
|
||||
@ -237,9 +235,8 @@ class DestinationController extends GetxController {
|
||||
is_in_checkin.value = true;
|
||||
photos.clear();
|
||||
showModalBottomSheet(
|
||||
constraints: BoxConstraints.loose(Size(
|
||||
Get.width,
|
||||
Get.height * 0.75)),
|
||||
constraints:
|
||||
BoxConstraints.loose(Size(Get.width, Get.height * 0.75)),
|
||||
context: Get.context!,
|
||||
isScrollControlled: true,
|
||||
builder: ((context) => CameraPage(
|
||||
@ -290,9 +287,8 @@ class DestinationController extends GetxController {
|
||||
is_at_goal.value = true;
|
||||
photos.clear();
|
||||
showModalBottomSheet(
|
||||
constraints: BoxConstraints.loose(Size(
|
||||
Get.width,
|
||||
Get.height * 0.75)),
|
||||
constraints:
|
||||
BoxConstraints.loose(Size(Get.width, Get.height * 0.75)),
|
||||
context: Get.context!,
|
||||
isScrollControlled: true,
|
||||
builder: ((context) => CameraPage(
|
||||
@ -310,9 +306,8 @@ class DestinationController extends GetxController {
|
||||
chekcs = 6;
|
||||
is_at_start.value = true;
|
||||
showModalBottomSheet(
|
||||
constraints: BoxConstraints.loose(Size(
|
||||
Get.width,
|
||||
Get.height * 0.75)),
|
||||
constraints:
|
||||
BoxConstraints.loose(Size(Get.width, Get.height * 0.75)),
|
||||
context: Get.context!,
|
||||
isScrollControlled: true,
|
||||
builder: ((context) => BottomSheetNew())).whenComplete(() {
|
||||
@ -327,6 +322,7 @@ class DestinationController extends GetxController {
|
||||
if (chekcs == 0) {
|
||||
skip_gps = false;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
void resetRogaining() async {
|
||||
@ -355,6 +351,7 @@ class DestinationController extends GetxController {
|
||||
db.deleteAllDestinations().then((value) {
|
||||
PopulateDestinations();
|
||||
startGPSTimer();
|
||||
startGame();
|
||||
//initGPS();
|
||||
});
|
||||
|
||||
@ -369,16 +366,14 @@ class DestinationController extends GetxController {
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (_) => CameraCamera(
|
||||
resolutionPreset: ResolutionPreset.medium,
|
||||
resolutionPreset: ResolutionPreset.medium,
|
||||
onFile: (file) {
|
||||
photos.add(file);
|
||||
Navigator.pop(context);
|
||||
print("----image file is : $file----");
|
||||
//setState(() {});
|
||||
},
|
||||
)
|
||||
|
||||
));
|
||||
)));
|
||||
}
|
||||
|
||||
void getRoutePoints() {
|
||||
@ -424,9 +419,8 @@ class DestinationController extends GetxController {
|
||||
is_in_checkin.value = true;
|
||||
photos.clear();
|
||||
showModalBottomSheet(
|
||||
constraints: BoxConstraints.loose(Size(
|
||||
Get.width,
|
||||
Get.height * 0.75)),
|
||||
constraints:
|
||||
BoxConstraints.loose(Size(Get.width, Get.height * 0.75)),
|
||||
context: Get.context!,
|
||||
isScrollControlled: true,
|
||||
builder: ((context) => CameraPage(
|
||||
@ -443,59 +437,87 @@ class DestinationController extends GetxController {
|
||||
}
|
||||
}
|
||||
|
||||
void checkForCheckin(double la, double ln) {
|
||||
print("--- skip_gps ---- $skip_gps----");
|
||||
void checkForCheckin() async {
|
||||
print("--- Start of checkForCheckin function ---");
|
||||
|
||||
// for (final d in destinations) {
|
||||
// print("--- check checkin for--loc_id- ${d.sub_loc_id}----");
|
||||
try {
|
||||
print("--- 000 ---- $skip_gps----");
|
||||
await Future.delayed(const Duration(milliseconds: 1500));
|
||||
final la = current_lat;
|
||||
final ln = current_lon;
|
||||
for (GeoJsonFeature fs in indexController.locations[0].collection) {
|
||||
GeoJsonMultiPoint mp = fs.geometry as GeoJsonMultiPoint;
|
||||
LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude,
|
||||
mp.geoSerie!.geoPoints[0].longitude);
|
||||
|
||||
// double lat = d.lat!;
|
||||
// double lon = d.lon!;
|
||||
// LatLng p = LatLng(lat, lon);
|
||||
// getDestinationForLatLong(lat, lon).then((value) {
|
||||
// var distance = const Distance();
|
||||
// double dist =
|
||||
// distance.as(LengthUnit.Meter, LatLng(lat, lon), LatLng(la, ln));
|
||||
// //double checkin_radious = value!.checkin_radious ?? double.infinity;
|
||||
// //bool auto_checkin = value.auto_checkin == 0 ? false : true;
|
||||
// //bool location_already_checked_id = d.checkedin ?? false;
|
||||
double latFs = pt.latitude;
|
||||
double lonFs = pt.longitude;
|
||||
var distanceFs = const Distance();
|
||||
double distFs = distanceFs.as(
|
||||
LengthUnit.Meter, LatLng(latFs, lonFs), LatLng(la, ln));
|
||||
|
||||
// // print("-----rogaining_counted---${rogaining_counted.value}-----");
|
||||
// // print("-----is_in_rog---${is_in_rog}-----");
|
||||
// // print("-----dist is ---${dist}-----");
|
||||
// //print("----- ${indexController.currentUser} ----");
|
||||
|
||||
// if (dist <= 250 && skip_gps == false) {
|
||||
// //near a destination
|
||||
// print("---- time with ${d.location_id} ----");
|
||||
// startTimer(d, dist);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
if (indexController.locations.isEmpty) return;
|
||||
|
||||
//check for location in bounds
|
||||
for (GeoJsonFeature fs in indexController.locations[0].collection) {
|
||||
GeoJsonMultiPoint mp = fs.geometry as GeoJsonMultiPoint;
|
||||
LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude,
|
||||
mp.geoSerie!.geoPoints[0].longitude);
|
||||
|
||||
double latFs = pt.latitude;
|
||||
double lonFs = pt.longitude;
|
||||
LatLng pFs = LatLng(latFs, lonFs);
|
||||
var distanceFs = const Distance();
|
||||
double distFs =
|
||||
distanceFs.as(LengthUnit.Meter, LatLng(latFs, lonFs), LatLng(la, ln));
|
||||
|
||||
if (distFs <= 250 && skip_gps == false) {
|
||||
//near a location
|
||||
print("---- before call startTimerLocation ----");
|
||||
startTimerLocation(fs, distFs);
|
||||
if (distFs <= 250 && skip_gps == false) {
|
||||
print("--- 789 ---- $skip_gps----");
|
||||
//near a location
|
||||
print("---- before call startTimerLocation ----");
|
||||
startTimerLocation(fs, distFs);
|
||||
}
|
||||
}
|
||||
print("--- 123 ---- $skip_gps----");
|
||||
} catch (e) {
|
||||
print("An error occurred: $e");
|
||||
} finally {
|
||||
print("--- End of checkForCheckin function, calling recursively ---");
|
||||
checkForCheckin();
|
||||
}
|
||||
}
|
||||
|
||||
// void checkForCheckin() async {
|
||||
// final la = current_lat;
|
||||
// final ln = current_lon;
|
||||
|
||||
// print("--- in checkForCheckin ----");
|
||||
// // if (indexController.locations.isEmpty){
|
||||
// // await Future.delayed(const Duration(seconds: 2));
|
||||
// // checkForCheckin();
|
||||
// // return;
|
||||
// // }
|
||||
|
||||
// print("--- 123 ---- $skip_gps----");
|
||||
|
||||
// //check for location in bounds
|
||||
// for (GeoJsonFeature fs in indexController.locations[0].collection) {
|
||||
// try {
|
||||
// await Future.delayed(const Duration(seconds: 2000));
|
||||
// GeoJsonMultiPoint mp = fs.geometry as GeoJsonMultiPoint;
|
||||
// LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude,
|
||||
// mp.geoSerie!.geoPoints[0].longitude);
|
||||
|
||||
// print("--- 456 ---- $skip_gps----");
|
||||
|
||||
// double latFs = pt.latitude;
|
||||
// double lonFs = pt.longitude;
|
||||
// LatLng pFs = LatLng(latFs, lonFs);
|
||||
// var distanceFs = const Distance();
|
||||
// double distFs = distanceFs.as(
|
||||
// LengthUnit.Meter, LatLng(latFs, lonFs), LatLng(la, ln));
|
||||
|
||||
// if (distFs <= 250 && skip_gps == false) {
|
||||
// print("--- 789 ---- $skip_gps----");
|
||||
// //near a location
|
||||
// print("---- before call startTimerLocation ----");
|
||||
// startTimerLocation(fs, distFs);
|
||||
// }
|
||||
// } catch (e) {
|
||||
// print("----- error -----");
|
||||
// } finally {
|
||||
// print("--- 101112 ----");
|
||||
// checkForCheckin();
|
||||
// }
|
||||
// }
|
||||
// //await Future.delayed(const Duration(seconds: 3));
|
||||
// }
|
||||
|
||||
void addToRogaining(double lat, double lon, int destinationId) async {
|
||||
DatabaseHelper db = DatabaseHelper.instance;
|
||||
List<Destination> d = await db.getDestinationById(destinationId);
|
||||
@ -588,7 +610,8 @@ class DestinationController extends GetxController {
|
||||
}
|
||||
|
||||
try {
|
||||
positionStream = Geolocator.getPositionStream(locationSettings: locationSettings)
|
||||
positionStream =
|
||||
Geolocator.getPositionStream(locationSettings: locationSettings)
|
||||
.listen((Position? position) {
|
||||
current_lat = position != null ? position.latitude : 0;
|
||||
current_lon = position != null ? position.longitude : 0;
|
||||
@ -608,8 +631,8 @@ class DestinationController extends GetxController {
|
||||
//print("---- postion is ${position.latitude}, ${position.longitude}");
|
||||
//gps.clear();
|
||||
//gps.add(
|
||||
// "-- lat : ${position.latitude}, lon : ${position.longitude} --");
|
||||
checkForCheckin(position.latitude, position.longitude);
|
||||
// "-- lat : ${position.latitude}, lon : ${position.longitude} --");
|
||||
//checkForCheckin(position.latitude, position.longitude);
|
||||
print("--- call check checkin");
|
||||
print("---- skip gps is ${skip_gps.toString()} ----");
|
||||
//});
|
||||
@ -624,25 +647,25 @@ class DestinationController extends GetxController {
|
||||
ever(indexController.connectionStatusName, connectionChanged);
|
||||
}
|
||||
|
||||
|
||||
void startGPSTimer() {
|
||||
// If a timer is already running, we first cancel it
|
||||
_GPStimer?.cancel();
|
||||
|
||||
// Start a new timer that fires every 3 seconds
|
||||
_timer = Timer.periodic(Duration(seconds: 3), (timer) async {
|
||||
Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
|
||||
Position position = await Geolocator.getCurrentPosition(
|
||||
desiredAccuracy: LocationAccuracy.high);
|
||||
current_lat = position.latitude;
|
||||
current_lon = position.longitude;
|
||||
|
||||
if (is_gps_selected.value) {
|
||||
double czoom = indexController.rogMapController.zoom;
|
||||
indexController.rogMapController
|
||||
.move(LatLng(position.latitude, position.longitude), czoom);
|
||||
checkForCheckin(position.latitude, position.longitude);
|
||||
print("--- call check checkin");
|
||||
print("---- skip gps is ${skip_gps.toString()} ----");
|
||||
}
|
||||
double czoom = indexController.rogMapController.zoom;
|
||||
indexController.rogMapController
|
||||
.move(LatLng(position.latitude, position.longitude), czoom);
|
||||
//checkForCheckin(position.latitude, position.longitude);
|
||||
print("--- call check checkin");
|
||||
print("---- skip gps is ${skip_gps.toString()} ----");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -650,7 +673,9 @@ class DestinationController extends GetxController {
|
||||
_GPStimer?.cancel();
|
||||
}
|
||||
|
||||
|
||||
void startGame() {
|
||||
checkForCheckin();
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
@ -664,10 +689,11 @@ class DestinationController extends GetxController {
|
||||
void onInit() async {
|
||||
//initGPS();
|
||||
startGPSTimer();
|
||||
startGame();
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
readUserToken() async{
|
||||
readUserToken() async {
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
indexController.userToken = prefs.getString("user_token");
|
||||
}
|
||||
@ -676,7 +702,7 @@ class DestinationController extends GetxController {
|
||||
void onReady() async {
|
||||
await readUserToken();
|
||||
final token = indexController.userToken;
|
||||
if(token != null && token.isNotEmpty){
|
||||
if (token != null && token.isNotEmpty) {
|
||||
await indexController.loadUserDetailsForToken(token);
|
||||
fixMapBound(token);
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user