From 69a47173cf65d5983e0efbdaf1aaade4c13eb253 Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Wed, 14 Jun 2023 14:53:39 +0300 Subject: [PATCH] QR attendance --- android/app/src/main/AndroidManifest.xml | 1 + assets/langs/ar-SA.json | 4 +- assets/langs/en-US.json | 4 +- lib/api/dashboard_api_client.dart | 15 ++++ lib/main.dart | 6 ++ lib/provider/hmg_connection_provider.dart | 2 +- lib/ui/login/login_screen.dart | 4 +- lib/widgets/mark_attendance_widget.dart | 97 ++++++++++++++--------- pubspec.yaml | 25 +++--- 9 files changed, 102 insertions(+), 56 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 3f5e424..45fef0a 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -22,6 +22,7 @@ android:icon="@mipmap/ic_launcher" android:label="Mohemm" android:extractNativeLibs="true" + android:usesCleartextTraffic="true" android:networkSecurityConfig="@xml/network_security_config" android:roundIcon="@mipmap/ic_launcher_round"> checkLocelIP(String qrValue) async { + String url = "http://10.201.214.101:80/Services/SWP.svc/REST/CheckWifiCall"; + + Map postParams = { + "EmployeeID": AppState().memberInformationList!.eMPLOYEENUMBER, + "QRValue": qrValue, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + return responseData; + }, url, postParams); + } } diff --git a/lib/main.dart b/lib/main.dart index 07590f3..58caabc 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -13,6 +13,7 @@ import 'package:mohem_flutter_app/provider/chat_call_provider.dart'; import 'package:mohem_flutter_app/provider/chat_provider_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/provider/eit_provider_model.dart'; +import 'package:mohem_flutter_app/provider/hmg_connection_provider.dart'; import 'package:mohem_flutter_app/theme/app_theme.dart'; import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart'; import 'package:month_year_picker/month_year_picker.dart'; @@ -20,6 +21,8 @@ import 'package:provider/provider.dart'; import 'package:provider/single_child_widget.dart'; import 'package:sizer/sizer.dart'; + + Logger logger = Logger( // filter: null, // Use the default LogFilter (-> only log in debug mode) printer: PrettyPrinter( @@ -73,6 +76,9 @@ Future main() async { // ChangeNotifierProvider( // create: (_) => ChatCallProvider(), // ), + ChangeNotifierProvider( + create: (_) => HmgConnectionProvider(), + ), ], child: const MyApp(), ), diff --git a/lib/provider/hmg_connection_provider.dart b/lib/provider/hmg_connection_provider.dart index 8812c89..b9f303b 100644 --- a/lib/provider/hmg_connection_provider.dart +++ b/lib/provider/hmg_connection_provider.dart @@ -22,7 +22,7 @@ class HmgConnectionProvider extends ChangeNotifier { // bool isConnected = await WiFiForIoTPlugin.connect(AppState().getMohemmWifiSSID ?? "", // password: AppState().getMohemmWifiPassword ?? "", joinOnce: Platform.isIOS ? false : true, security: NetworkSecurity.WPA, withInternet: false); - bool isConnected = await WiFiForIoTPlugin.connect("MOHEMM-CONNECT", password: "0987654321", joinOnce: Platform.isIOS ? false : true, security: NetworkSecurity.WPA, withInternet: false); + bool isConnected = await WiFiForIoTPlugin.connect("HMG-MOHEMM", password: "M0hemm@1212", joinOnce: Platform.isIOS ? false : true, security: NetworkSecurity.WPA, withInternet: false); if (isConnected) { diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index 8d8e7c2..10ed60c 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -195,8 +195,8 @@ class _LoginScreenState extends State { isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool; if (!kReleaseMode) { // username.text = "15444"; // Maha User - // username.text = "15153"; // Tamer User - // password.text = "Abcd@12345"; + username.text = "15153"; // Tamer User + password.text = "tata@1234"; // username.text = "206535"; // Hashim User // password.text = "Namira786"; diff --git a/lib/widgets/mark_attendance_widget.dart b/lib/widgets/mark_attendance_widget.dart index 30ca077..4165413 100644 --- a/lib/widgets/mark_attendance_widget.dart +++ b/lib/widgets/mark_attendance_widget.dart @@ -3,7 +3,9 @@ import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:geolocator/geolocator.dart'; + +// import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:mohem_flutter_app/api/dashboard_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; @@ -89,7 +91,8 @@ class _MarkAttendanceWidgetState extends State { children: [ Padding( padding: const EdgeInsets.only(left: 25, right: 25, top: 10, bottom: 10), - child: (provider.isConnectedToHMG ? LocaleKeys.connectedWithHmg.tr() : LocaleKeys.networkMustHMG.tr()).toText12(color: Colors.white), + // child: (provider.isConnectedToHMG ? LocaleKeys.connectedWithHmg.tr() : LocaleKeys.networkMustHMG.tr()).toText12(color: Colors.white), + child: (provider.isConnectedToHMG ? "Connected With HMG" : "Network Must be HMG").toText12(color: Colors.white), ), Container( padding: EdgeInsets.only(left: 21, right: 21, bottom: 21, top: widget.topPadding), @@ -112,15 +115,15 @@ class _MarkAttendanceWidgetState extends State { attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, provider.isConnectedToHMG, () async { if (await provider.checkHmgNetworkConnectivity()) { if (isNfcLocationEnabled) { - Location.getCurrentLocation((LatLng? latlng, bool isMocked) { + Location.getCurrentLocation((Position? latlng, bool isMocked) { if (isMocked) { - markFakeAttendance("NFC", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "",provider: provider); + markFakeAttendance("NFC", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "", provider: provider); } else { - performNfcAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "",provider: provider); + performNfcAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "", provider: provider); } }, context); } else { - performNfcAttendance(widget.model,provider: provider); + performNfcAttendance(widget.model, provider: provider); } } else { Utils.showToast("Please connect with the HMG internet to mark attendance"); @@ -130,15 +133,15 @@ class _MarkAttendanceWidgetState extends State { attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, provider.isConnectedToHMG, () async { if (await provider.checkHmgNetworkConnectivity()) { if (isWifiLocationEnabled) { - Location.getCurrentLocation((LatLng? latlng, bool isMocked) { + Location.getCurrentLocation((Position? latlng, bool isMocked) { if (isMocked) { - markFakeAttendance("WIFI", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "",provider: provider); + markFakeAttendance("WIFI", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "", provider: provider); } else { - performWifiAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "",provider: provider); + performWifiAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "", provider: provider); } }, context); } else { - performWifiAttendance(widget.model,provider: provider); + performWifiAttendance(widget.model, provider: provider); } } else { Utils.showToast("Please connect with the HMG internet to mark attendance"); @@ -148,18 +151,18 @@ class _MarkAttendanceWidgetState extends State { }), if (isQrEnabled) attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, provider.isConnectedToHMG, () async { - if (isQrLocationEnabled) { - Location.getCurrentLocation((LatLng? latlng, bool isMocked) { - if (isMocked) { - markFakeAttendance("QR", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "",provider: provider); - } else { - performQrCodeAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); - } - }, context); - } else { - performQrCodeAttendance(widget.model); - } - // performQrCodeAttendance(model); + // if (isQrLocationEnabled) { + // Location.getCurrentLocation((Position? latlng, bool isMocked) { + // if (isMocked) { + // markFakeAttendance("QR", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "", provider: provider); + // } else { + // performQrCodeAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? ""); + // } + // }, context); + // } else { + // performQrCodeAttendance(widget.model); + // } + performQrCodeAttendance(widget.model); }), ], ) @@ -233,7 +236,6 @@ class _MarkAttendanceWidgetState extends State { ); provider.closeWifiRequest(); } - } catch (ex) { print(ex); Utils.hideLoading(context); @@ -307,22 +309,39 @@ class _MarkAttendanceWidgetState extends State { ), ); if (qrCodeValue != null) { - Utils.showLoading(context); - try { - GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 1, isGpsRequired: isQrLocationEnabled, lat: lat, long: lng, QRValue: qrCodeValue); - bool status = await model.fetchAttendanceTracking(context); - Utils.hideLoading(context); - showMDialog( - context, - backgroundColor: Colors.transparent, - isDismissable: true, - child: SuccessDialog(widget.isFromDashboard), - ); - } catch (ex) { - print(ex); - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } + print("-----------f---"); + print(qrCodeValue); + Utils.showToast(qrCodeValue); + // Utils.showLoading(context); + checkLocalIP(qrCodeValue); + // try { + // GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 1, isGpsRequired: isQrLocationEnabled, lat: lat, long: lng, QRValue: qrCodeValue); + // bool status = await model.fetchAttendanceTracking(context); + // Utils.hideLoading(context); + // showMDialog( + // context, + // backgroundColor: Colors.transparent, + // isDismissable: true, + // child: SuccessDialog(widget.isFromDashboard), + // ); + // } catch (ex) { + // print(ex); + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } + } + } + + void checkLocalIP(String qrValue) async { + Utils.showLoading(context); + try { + await DashboardApiClient().checkLocelIP(qrValue); + Utils.hideLoading(context); + Utils.confirmDialog(context, "Local Ip called"); + } catch (ex) { + print(ex); + Utils.hideLoading(context); + Utils.handleException(ex, context, null); } } diff --git a/pubspec.yaml b/pubspec.yaml index bc70be9..da43101 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -46,7 +46,7 @@ dependencies: local_auth: ^1.1.9 fluttertoast: ^8.0.8 syncfusion_flutter_calendar: ^19.4.48 -# flutter_calendar_carousel: ^2.1.0 + # flutter_calendar_carousel: ^2.1.0 pie_chart: ^5.1.0 shared_preferences: ^2.0.12 firebase_messaging: ^13.0.4 @@ -54,9 +54,9 @@ dependencies: logger: ^1.1.0 flutter_countdown_timer: ^4.1.0 nfc_manager: ^3.2.0 -# uuid: ^3.0.6 -# device_info_plus: ^4.0.0 -# android_id: ^0.1.3+1 + # uuid: ^3.0.6 + # device_info_plus: ^4.0.0 + # android_id: ^0.1.3+1 platform_device_id: ^1.0.1 image_picker: ^0.8.5+3 file_picker: ^4.6.1 @@ -66,21 +66,22 @@ dependencies: open_file: ^3.2.1 wifi_iot: ^0.3.18 flutter_html: ^3.0.0-alpha.6 -# flutter_barcode_scanner: ^2.0.0 + # flutter_barcode_scanner: ^2.0.0 qr_code_scanner: ^1.0.1 -# qr_flutter: ^4.0.0 + # qr_flutter: ^4.0.0 url_launcher: ^6.0.15 share: 2.0.4 flutter_rating_bar: ^4.0.1 auto_size_text: ^3.0.0 pull_to_refresh: ^2.0.0 -# lottie json animations + # lottie json animations + file: ^6.1.4 lottie: any -# Marathon Card Swipe + # Marathon Card Swipe appinio_swiper: ^1.1.1 expandable: ^5.0.1 -# networkImage + # networkImage cached_network_image: ^3.2.2 #Chat @@ -101,11 +102,11 @@ dependencies: video_player: ^2.5.1 just_audio: ^0.9.30 -# safe_device: ^1.1.2 + # safe_device: ^1.1.2 flutter_layout_grid: ^2.0.1 #Huawei Dependencies -# huawei_hmsavailability: ^6.6.0+300 + # huawei_hmsavailability: ^6.6.0+300 huawei_location: 6.0.0+302 huawei_push: ^6.7.0+300 firebase_crashlytics: ^2.9.0 @@ -114,7 +115,7 @@ dependencies: carousel_slider: ^4.2.1 #Huawei Specified -# store_checker: ^1.1.0 + # store_checker: ^1.1.0 google_api_availability: ^3.0.1