From d8fd352a62c63a6e0008ee39e6176c0dc213a1c5 Mon Sep 17 00:00:00 2001 From: Mohamed Nouffer Date: Fri, 24 Nov 2023 11:58:17 +0530 Subject: [PATCH] update fixes --- assets/images/money.png | Bin 0 -> 72704 bytes ios/Runner/Info.plist | 16 ++-- lib/model/gps_data.dart | 38 ++++++---- lib/pages/camera/camera_page.dart | 12 ++- .../destination/destination_controller.dart | 51 +++++-------- lib/pages/drawer/drawer_page.dart | 20 +++++ lib/pages/permission/permission.dart | 11 ++- lib/services/external_service.dart | 69 ++++++++++++++++++ lib/utils/database_gps.dart | 25 ++++++- lib/widgets/bottom_sheet_new.dart | 8 +- pubspec.yaml | 1 + 11 files changed, 187 insertions(+), 64 deletions(-) create mode 100644 assets/images/money.png diff --git a/assets/images/money.png b/assets/images/money.png new file mode 100644 index 0000000000000000000000000000000000000000..9f2ff56e77c507e302486b02c78fb39df29ba86c GIT binary patch literal 72704 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 T=j}V$0Me%WME`Le#5VGOwL8?Y literal 0 HcmV?d00001 diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index c4f831e..a9c4d95 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -27,17 +27,17 @@ LSRequiresIPhoneOS NSCameraUsageDescription - 写真撮影のためカメラにアクセスします + 「岐阜ナビは旅のさまざまなチェックポイントで写真を撮影して共有するためにカメラへのアクセスが必要です。これにより、訪問を確認し、体験を向上させることができます。」 NSLocationAlwaysAndWhenInUseUsageDescription - このアプリでは、位置情報の収集を行います。 + 「岐阜ナビはアプリが閉じられているときでも位置情報へのアクセスが必要です。これにより、チェックポイントでの自動チェックインを提供し、旅の間のナビゲーション体験を向上させます。」 NSLocationAlwaysUsageDescription - このアプリでは、バックグラウンドで位置情報を収集します。 + 「自動チェックインを有効にし、ナビゲーションを改善するために、岐阜ナビはアプリが使用されていないときでも継続的に位置情報へのアクセスを必要とします。」 NSLocationWhenInUseUsageDescription - このアプリでは、開始時点で位置情報を収集します。 + 「岐阜ナビにアプリ使用中の位置情報へのアクセスを許可することで、チェックポイントでのチェックインを有効にし、位置に基づいた情報とガイダンスを提供します。」 NSMicrophoneUsageDescription - プロフィールに動画を投稿してください。 + 「岐阜ナビは、ナビゲーション体験を向上させるために、音声コマンドやオーディオフィードバックなどの機能にマイクへのアクセスが必要です。」 NSPhotoLibraryUsageDescription - 写真ライブラリへのアクセス警告 + 「岐阜ナビはチェックポイントで撮影した写真を保存・管理し、他人と旅の様子を共有するために、写真ライブラリへのアクセスが必要です。」 NSPhotoLibraryUsageDescription Need to save image in phone Album UILaunchStoryboardName @@ -45,9 +45,7 @@ UIMainStoryboardFile Main NSCameraUsageDescription - ロゲイニングのゴールでは写真撮影が必要です。 - NSMicrophoneUsageDescription - 収録音声の保存が必要です。 + 「岐阜ナビはチェックポイントで撮影した写真を写真ライブラリに保存し、あなたの旅行の記録を保持し、友人と共有することができます。」 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait diff --git a/lib/model/gps_data.dart b/lib/model/gps_data.dart index f6a3aa8..404a900 100644 --- a/lib/model/gps_data.dart +++ b/lib/model/gps_data.dart @@ -6,25 +6,30 @@ class GpsData { double lon; int is_checkin; int created_at; + int is_synced; - GpsData( - {required this.id, - required this.team_name, - required this.event_code, - required this.lat, - required this.lon, - required this.created_at, - this.is_checkin = 0}); + GpsData({ + required this.id, + required this.team_name, + required this.event_code, + required this.lat, + required this.lon, + required this.created_at, + this.is_checkin = 0, + this.is_synced = 0, + }); factory GpsData.fromMap(Map json) { return GpsData( - id: json["id"], - team_name: json["team_name"], - event_code: json["event_code"], - lat: json["lat"], - lon: json["lon"], - is_checkin: json["is_checkin"], - created_at: json["created_at"]); + id: json["id"], + team_name: json["team_name"], + event_code: json["event_code"], + lat: json["lat"], + lon: json["lon"], + is_checkin: json["is_checkin"], + created_at: json["created_at"], + is_synced: json["is_synced"] ?? 0, + ); } Map toMap() { @@ -35,7 +40,8 @@ class GpsData { 'lat': lat, 'lon': lon, 'is_checkin': is_checkin, - 'created_at': created_at + 'created_at': created_at, + 'is_synced': is_synced, }; } } diff --git a/lib/pages/camera/camera_page.dart b/lib/pages/camera/camera_page.dart index df9df01..9569c52 100644 --- a/lib/pages/camera/camera_page.dart +++ b/lib/pages/camera/camera_page.dart @@ -72,6 +72,16 @@ ImageProvider getFinishImage() { } } +ImageProvider getReceiptImage() { + DestinationController destinationController = + Get.find(); + if (destinationController.photos.isNotEmpty) { + return FileImage(destinationController.photos[0]); + } else { + return const AssetImage('assets/images/money.png'); + } +} + class CameraPage extends StatelessWidget { bool? manulaCheckin = false; bool? buyPointPhoto = false; @@ -454,7 +464,7 @@ class BuyPointCamera extends StatelessWidget { height: 370, decoration: BoxDecoration( image: DecorationImage( - image: getFinishImage(), fit: BoxFit.cover)), + image: getReceiptImage(), fit: BoxFit.cover)), ), ), ), diff --git a/lib/pages/destination/destination_controller.dart b/lib/pages/destination/destination_controller.dart index b23ebc4..e00fdc2 100644 --- a/lib/pages/destination/destination_controller.dart +++ b/lib/pages/destination/destination_controller.dart @@ -510,7 +510,7 @@ class DestinationController extends GetxController { lat: la, lon: ln, is_checkin: isCheckin, - created_at: DateTime.now().microsecondsSinceEpoch); + created_at: DateTime.now().millisecondsSinceEpoch); var res = await db.insertGps(gps_data); print("==gps res == ${res}"); } @@ -559,10 +559,10 @@ class DestinationController extends GetxController { LengthUnit.Meter, LatLng(latFs, lonFs), LatLng(la, ln)); Destination des = festuretoDestination(fs); - print( - "--- position is ---- ${position.longitude}, --- ${position.longitude}----"); + //print( + // "--- position is ---- ${position.longitude}, --- ${position.longitude}----"); - print("--- distFs ---- $distFs, --- ${des.checkin_radious}----"); + //print("--- distFs ---- $distFs, --- ${des.checkin_radious}----"); if (distFs <= des.checkin_radious! && skipGps == false) { //print("--- 789 ---- $skip_gps----"); //near a location @@ -571,6 +571,7 @@ class DestinationController extends GetxController { break; } } + pushGPStoServer(); //print("--- 123 ---- $skip_gps----"); } catch (e) { //print("An error occurred: $e"); @@ -581,6 +582,19 @@ class DestinationController extends GetxController { } } + Future pushGPStoServer() async { + try { + await Future.delayed(const Duration(minutes: 5)); + ExternalService().pushGPS(); + } catch (e) { + //print("An error occurred: $e"); + await pushGPStoServer(); + } finally { + //print("--- End of pushGPStoServer function, calling recursively ---"); + await pushGPStoServer(); + } + } + void addToRogaining(double lat, double lon, int destinationId) async { DatabaseHelper db = DatabaseHelper.instance; List d = await db.getDestinationById(destinationId); @@ -665,7 +679,7 @@ class DestinationController extends GetxController { DateTime now = DateTime.now(); String formattedDate = DateFormat('yyyy-MM-dd HH:mm:ss').format(now); - await addGPStoDB(destination.lat!, destination.lon!, isCheckin: 1); + await addGPStoDB(currentLat, currentLon, isCheckin: 1); // print("------ checkin event $eventCode ------"); ExternalService() @@ -869,9 +883,6 @@ class DestinationController extends GetxController { // ---------- database ------------------/// void addDestinations(Destination dest) { - // print( - // '------ destination controller in add destination ${dest.checkin_radious} ---- :::::'); - DatabaseHelper db = DatabaseHelper.instance; db.getDestinationByLatLon(dest.lat!, dest.lon!).then((value) { if (value.isNotEmpty) { @@ -947,40 +958,16 @@ class DestinationController extends GetxController { } void populateDestinations() { - //print( - // "--------- destination controller populsting destinations ----------- ::::::"); - DatabaseHelper db = DatabaseHelper.instance; destinations.clear(); db.getDestinations().then((value) { destinationCount.value = 0; for (Destination d in value) { - // print( - // "------ destination controller populating destination-------- ${d.checkedin}-------- :::::"); - //print("-----populated----- ${d.toMap()}"); destinations.add(d); } if (destinations.isEmpty) { rogainingCounted.value = false; } - // destinationCount.value = 0; - //print( - // "------ destination controller destinationcount-------- $destinationCount-------- :::::"); - - // MatrixService.getDestinations(value).then((mat){ - // print(" matrix is ------- ${mat}"); - // matrix = mat; - - // try{ - // getRoutePoints(); - // destinationCount.value = destinations.length; - // } - // catch(_){ - // skip_gps = false; - // return; - // } - - // }); }); } diff --git a/lib/pages/drawer/drawer_page.dart b/lib/pages/drawer/drawer_page.dart index d7e97dc..d771fd0 100644 --- a/lib/pages/drawer/drawer_page.dart +++ b/lib/pages/drawer/drawer_page.dart @@ -130,6 +130,26 @@ class DrawerPage extends StatelessWidget { width: 0, height: 0, ), + indexController.currentUser.isNotEmpty + ? ListTile( + leading: const Icon(Icons.delete_forever), + title: Text("ユーザーデータを削除する".tr), + onTap: () { + String token = indexController.currentUser[0]['token']; + AuthService.deleteUser(token).then((value) { + if (value.isNotEmpty) { + indexController.logout(); + Get.toNamed(AppPages.TRAVEL); + Get.snackbar("ユーザーデータを削除する", + "データを削除するためにユーザーの同意が設定されています アプリとサーバーでユーザーデータが削除されました"); + } + }); + }, + ) + : const SizedBox( + width: 0, + height: 0, + ), // ListTile( // leading: const Icon(Icons.person), // title: Text("profile".tr), diff --git a/lib/pages/permission/permission.dart b/lib/pages/permission/permission.dart index f374b45..fd692a6 100644 --- a/lib/pages/permission/permission.dart +++ b/lib/pages/permission/permission.dart @@ -45,9 +45,16 @@ class _PermissionHandlerScreenState extends State { content: const SingleChildScrollView( child: ListBody( children: [ - Text('このアプリでは、位置情報の収集を行います。'), + Text('ぎふナビ "アプリへようこそ!\n'), + Text('収集データ:\n'), Text( - '岐阜ナビアプリではチェックポイントの自動チェックインの機能を可能にするために、現在地のデータが収集されます。アプリを閉じている時や、使用していないときにも収集されます。位置情報は、個人を特定できない統計的な情報として、ユーザーの個人情報とは一切結びつかない形で送信されます。お知らせの配信、位置情報の利用を許可しない場合は、この後表示されるダイアログで「許可しない」を選択してください。'), + '岐阜ナビアプリをより快適にご利用いただくために、チェックポイントでの自動チェックインのための位置情報を収集しています。また、撮影した画像やチェックインした時間を収集し、チャレンジの勝者を決定します。\n'), + Text('お客様のデータの使用方法:\n'), + Text( + 'お客様のデータは、アプリを改善し、競争力のある魅力的な体験を提供するのに役立ちます。お客様の位置情報と画像は、個人を特定できない統計データとして処理され、いかなる個人情報にもリンクされないようにしています\n'), + Text('お客様の管理:\n'), + Text( + 'お客様はご自身のデータを完全に管理することができます。アプリの設定でいつでも同意を撤回することができます。位置情報の収集に同意しなくても、ぎふナビを楽しむことはできますが、自動チェックインや競技への参加など、一部の機能が制限されることを覚えておいてください。位置情報、画像、時刻情報の利用に同意する場合は「許可」を選択してください。許可しない場合は、「許可しない」を選択してください。あなたの選択は、アプリの他の機能を使用することに影響しません。\n'), ], ), ), diff --git a/lib/services/external_service.dart b/lib/services/external_service.dart index 9e80516..20e8524 100644 --- a/lib/services/external_service.dart +++ b/lib/services/external_service.dart @@ -5,9 +5,11 @@ 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_gps.dart'; import 'package:rogapp/utils/database_helper.dart'; import 'dart:convert'; +import '../model/gps_data.dart'; import '../utils/const.dart'; // @@ -340,6 +342,73 @@ class ExternalService { return Future.value(false); } + String timestampToTimeString(int timestamp) { + // Convert timestamp to DateTime and format it as needed + var dateTime = DateTime.fromMillisecondsSinceEpoch(timestamp * 1000); + // Format dateTime to a time string (e.g., '12:00:00') + // Adjust the format as needed + return "${dateTime.hour}:${dateTime.minute}:${dateTime.second}"; + } + + Future pushGPS() async { + final IndexController indexController = Get.find(); + + //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"]; + + List gpsDataList = []; + + if (indexController.connectionStatusName.value != "wifi" && + indexController.connectionStatusName.value != "mobile") { + return Future.value(false); + } else { + // Step 1: Fetch data from the local database + gpsDataList = + await GpsDatabaseHelper.instance.getUnsyncedGPSData(team, eventCode); + + // Step 2: Transform data into the required format + var payload = { + 'team_name': team, + 'event_code': eventCode, + 'waypoints': gpsDataList.map((gpsData) { + return { + 'latitude': gpsData.lat.toString(), + 'longitude': gpsData.lon.toString(), + // Convert the timestamp to a formatted time string + 'time': timestampToTimeString(gpsData.created_at), + }; + }).toList(), + }; + + print("calling push gps step 2 ${payload}"); + + String urlS = + 'https://rogaining.sumasen.net/gifuroge/get_waypoint_datas_from_rogapp'; + //print('++++++++$url'); + var url = Uri.parse(urlS); // Replace with your server URL + var response = await http.post( + url, + headers: {"Content-Type": "application/json"}, + body: json.encode(payload), + ); + + print("GPS Data res ${response.statusCode}"); + if (response.statusCode == 200) { + // Handle success + // make local data as synced + await GpsDatabaseHelper.instance.setSyncData(gpsDataList); + print("GPS Data sent successfully"); + } else { + // Handle error + print("Failed to send data"); + } + } + return Future.value(false); + } + static Future> usersEventCode( String teamcode, String password) async { Map res = {}; diff --git a/lib/utils/database_gps.dart b/lib/utils/database_gps.dart index 96a922a..d19e059 100644 --- a/lib/utils/database_gps.dart +++ b/lib/utils/database_gps.dart @@ -37,7 +37,8 @@ class GpsDatabaseHelper { lat REAL, lon REAL, is_checkin int, - created_at INTEGER + created_at INTEGER, + is_synced INTEGER DEFAULT 0 ) '''); } @@ -70,4 +71,26 @@ class GpsDatabaseHelper { print("--------- db list $gpsDatas"); return gpsDatas; } + + Future> getUnsyncedGPSData( + String team_name, String event_code) async { + Database db = await instance.database; + var gpss = await db.query('gps', + where: 'team_name = ? and event_code = ? and is_synced = 0', + whereArgs: [team_name, event_code], + orderBy: 'created_at'); + return gpss.isNotEmpty ? gpss.map((e) => GpsData.fromMap(e)).toList() : []; + } + + Future setSyncData(List data) async { + Database db = await instance.database; + for (var record in data) { + await db.update( + 'gps', + {'is_synced': 1}, + where: 'id = ?', + whereArgs: [record.id], + ); + } + } } diff --git a/lib/widgets/bottom_sheet_new.dart b/lib/widgets/bottom_sheet_new.dart index 091dfa4..b6a13df 100644 --- a/lib/widgets/bottom_sheet_new.dart +++ b/lib/widgets/bottom_sheet_new.dart @@ -65,6 +65,7 @@ class BottomSheetNew extends GetView { } } else { GeoJsonFeature gf = indexController.currentFeature[0]; + print("=== photo sss ${gf.properties!["photos"]}"); if (gf.properties!["photos"] == null || gf.properties!["photos"] == "") { return const Image(image: AssetImage('assets/images/empty_image.png')); } else { @@ -80,9 +81,11 @@ class BottomSheetNew extends GetView { }, ); } else { + String imageUrl = Uri.encodeFull( + '$serverUrl/media/compressed/${gf.properties!["photos"]}'); return Image( image: NetworkImage( - '$serverUrl/media/compressed/${gf.properties!["photos"]}', + imageUrl, ), errorBuilder: (BuildContext context, Object exception, StackTrace? stackTrace) { @@ -495,8 +498,7 @@ class BottomSheetNew extends GetView { // ), destinationController.rogainingCounted.value == true && - destination.cp == -1 && - destinationController.distanceToStart() <= 500 + destination.cp == -1 ? ElevatedButton( onPressed: () async { destinationController.isAtGoal.value = true; diff --git a/pubspec.yaml b/pubspec.yaml index 3f48580..6d83729 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -113,6 +113,7 @@ flutter: - assets/images/japanese_fun.jpeg - assets/images/appicon.png - assets/images/login_image.jpg + - assets/images/money.png # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see