hmg wifi implementation 1.0

mirza_hmg_wifi_phase_1
mirza.shafique 3 years ago
parent f4100a138d
commit 62c3c47fe9

@ -526,5 +526,7 @@
"myTeam": "فريقي",
"youCanPlayDemo": "لكن يمكنك لعب العرض",
"connectHmgWifi": "قم بتوصيل HMG WIFI",
"connectedHmgWifi": "اتصال HMG WIFI"
"connectedHmgWifi": "افصل HMG WIFI",
"networkMustHMG": "يجب أن تكون الشبكة متصلة بـ HMG",
"connectedWithHmg": "تم الاتصال بنجاح مع HMG WIFI"
}

@ -526,5 +526,7 @@
"myTeam" : "My Team",
"youCanPlayDemo": "But you can play demo",
"connectHmgWifi": "Connect HMG WIFI",
"connectedHmgWifi": "Connected HMG WIFI"
"connectedHmgWifi": "Disconnect HMG WIFI",
"networkMustHMG": "Network must be connected with HMG",
"connectedWithHmg": "Successfully Connected with HMG WIFI"
}

@ -3,8 +3,8 @@ import 'package:mohem_flutter_app/ui/marathon/widgets/question_card.dart';
class ApiConsts {
//static String baseUrl = "http://10.200.204.20:2801/"; // Local server
// static String baseUrl = "https://erptstapp.srca.org.sa"; // SRCA server
// static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server
static String baseUrl = "https://hmgwebservices.com"; // Live server
static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server
// static String baseUrl = "https://hmgwebservices.com"; // Live server
static String baseUrlServices = baseUrl + "/Services/"; // server
// static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server
static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/";

@ -540,7 +540,11 @@ class CodegenLoader extends AssetLoader{
"fakeLocation": ".لقد تتبعنا أنك تحاول استخدام موقع مزيف! يعتبر هذا مخالفة وقد تم إخطار الموارد البشرية",
"noWinner": "حزين! لم يفز أحد اليوم.",
"myTeam": "فريقي",
"youCanPlayDemo": "لكن يمكنك لعب العرض"
"youCanPlayDemo": "لكن يمكنك لعب العرض",
"connectHmgWifi": "قم بتوصيل HMG WIFI",
"connectedHmgWifi": "افصل HMG WIFI",
"networkMustHMG": "يجب أن تكون الشبكة متصلة بـ HMG",
"connectedWithHmg": "تم الاتصال بنجاح مع HMG WIFI"
};
static const Map<String,dynamic> en_US = {
"mohemm": "Mohemm",
@ -1068,7 +1072,11 @@ static const Map<String,dynamic> en_US = {
"fakeLocation": "We traced out that you try to use a fake location! This is considered a violation, and HR has been notified.",
"noWinner": "Sad! No one won today.",
"myTeam": "My Team",
"youCanPlayDemo": "But you can play demo"
"youCanPlayDemo": "But you can play demo",
"connectHmgWifi": "Connect HMG WIFI",
"connectedHmgWifi": "Disconnect HMG WIFI",
"networkMustHMG": "Network must be connected with HMG",
"connectedWithHmg": "Successfully Connected with HMG WIFI"
};
static const Map<String, Map<String,dynamic>> mapLocales = {"ar_SA": ar_SA, "en_US": en_US};
}

@ -513,5 +513,7 @@ abstract class LocaleKeys {
static const youCanPlayDemo = 'youCanPlayDemo';
static const connectHmgWifi = 'connectHmgWifi';
static const connectedHmgWifi = 'connectedHmgWifi';
static const networkMustHMG = 'networkMustHMG';
static const connectedWithHmg = 'connectedWithHmg';
}

@ -13,25 +13,31 @@ class HmgConnectionProvider extends ChangeNotifier {
} else {
isConnectedToHMG = false;
}
AppState().isConnectedToHMG = isConnectedToHMG;
notify();
return isConnectedToHMG;
}
void connectWithHmgNetwork() async {
Future<bool> connectWithHmgNetwork() async {
try {
// 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);
if (isConnected) {
await WiFiForIoTPlugin.forceWifiUsage(true);
await Future.delayed(const Duration(seconds: 2));
isConnectedToHMG=true;
isConnectedToHMG = true;
notify();
}
return isConnectedToHMG;
} catch (e) {
isConnectedToHMG = false;
AppState().isConnectedToHMG = isConnectedToHMG;
notify();
print("----------------o----");
print(e);
return isConnectedToHMG;
}
}
@ -39,8 +45,17 @@ class HmgConnectionProvider extends ChangeNotifier {
if (Platform.isAndroid) {
await WiFiForIoTPlugin.forceWifiUsage(false);
}
isConnectedToHMG = false;
bool isDone = await WiFiForIoTPlugin.disconnect();
if (isDone) {
isConnectedToHMG = false;
notify();
}
return isDone;
}
void notify() {
AppState().isConnectedToHMG = isConnectedToHMG;
return await WiFiForIoTPlugin.disconnect();
notifyListeners();
}
}

@ -26,6 +26,7 @@ import 'package:mohem_flutter_app/ui/landing/widget/services_widget.dart';
import 'package:mohem_flutter_app/ui/marathon/marathon_provider.dart';
import 'package:mohem_flutter_app/ui/marathon/widgets/marathon_banner.dart';
import 'package:mohem_flutter_app/widgets/bottom_sheet.dart';
import 'package:mohem_flutter_app/widgets/button/hmg_connectivity_button.dart';
import 'package:mohem_flutter_app/widgets/mark_attendance_widget.dart';
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
import 'package:mohem_flutter_app/widgets/shimmer/offers_shimmer_widget.dart';
@ -345,7 +346,15 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
showMyBottomSheet(
context,
callBackFunc: () {},
child: MarkAttendanceWidget(model, isFromDashboard: true),
child: Column(
children: [
const Padding(
padding: EdgeInsets.all(8.0),
child: HmgConnectivityButton(),
),
MarkAttendanceWidget(model, isFromDashboard: true),
],
),
);
}),
],

@ -9,10 +9,12 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/widgets/button/hmg_connectivity_button.dart';
import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart';
import 'package:mohem_flutter_app/widgets/mark_attendance_widget.dart';
import 'package:nfc_manager/nfc_manager.dart';
import 'package:provider/provider.dart';
import 'package:sizer/sizer.dart';
import 'package:wifi_iot/wifi_iot.dart';
class TodayAttendanceScreen2 extends StatefulWidget {
@ -50,17 +52,19 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen2> {
icon: const Icon(Icons.arrow_back_ios, color: Colors.white),
onPressed: () => Navigator.pop(context),
),
// actions: [
// IconButton(
// onPressed: () {
// data.fetchAttendanceTracking(context);
// },
// icon: const Icon(
// Icons.ac_unit,
// color: Colors.white,
// ),
// )
// ],
actions: [
// IconButton(
// onPressed: () {
// data.fetchAttendanceTracking(context);
// },
// icon: const Icon(
// Icons.ac_unit,
// color: Colors.white,
// ),
// )
HmgConnectivityButton(),
12.width,
],
),
backgroundColor: MyColors.backgroundBlackColor,
body: Consumer<DashboardProviderModel>(
@ -69,6 +73,7 @@ class _TodayAttendanceScreenState extends State<TodayAttendanceScreen2> {
? const Center(child: CircularProgressIndicator())
: Column(
children: [
8.height,
Container(
width: double.infinity,
color: MyColors.backgroundBlackColor,

@ -172,8 +172,8 @@ class _LoginScreenState extends State<LoginScreen> {
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 = "Abcd@1234";
// username.text = "206535"; // Hashim User
// password.text = "Namira786";
@ -185,8 +185,7 @@ class _LoginScreenState extends State<LoginScreen> {
}
// username.text = "15444";
return Scaffold(
return Scaffold(
body: Column(
children: [
const SizedBox(height: 23),
@ -198,8 +197,10 @@ class _LoginScreenState extends State<LoginScreen> {
children: [
Row(
children: [
Expanded(
child:SizedBox(child: HmgConnectivityButton(),),
const Expanded(
child: SizedBox(
child: HmgConnectivityButton(),
),
),
Row(
children: [
@ -261,30 +262,4 @@ class _LoginScreenState extends State<LoginScreen> {
),
);
}
void connectWithHmgNetwork() async {
try {
bool isConnected = await WiFiForIoTPlugin.connect("MOHEMM-CONNECT", password: "0987654321", joinOnce: Platform.isIOS ? false : true, security: NetworkSecurity.WPA, withInternet: false);
if (isConnected) {
await WiFiForIoTPlugin.forceWifiUsage(true);
// if (Platform.isIOS) {
// await closeWifiRequest();
// await Future.delayed(Duration(seconds: 6));
// } else {
// await WiFiForIoTPlugin.forceWifiUsage(true);
// }
}
} catch (e) {
print("----------------o----");
print(e);
}
}
Future<bool> closeWifiRequest() async {
if (Platform.isAndroid) {
await WiFiForIoTPlugin.forceWifiUsage(false);
}
return await WiFiForIoTPlugin.disconnect();
}
}

@ -1,50 +1,115 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/provider/hmg_connection_provider.dart';
import 'package:provider/provider.dart';
import 'package:shimmer/shimmer.dart';
class HmgConnectivityButton extends StatefulWidget {
const HmgConnectivityButton({Key? key}) : super(key: key);
@override
State<HmgConnectivityButton> createState() => _HmgConnectivityButtonState();
}
class _HmgConnectivityButtonState extends State<HmgConnectivityButton> with SingleTickerProviderStateMixin {
late Animation<Color?> animation;
late AnimationController controller;
@override
void initState() {
super.initState();
controller = AnimationController(
duration: const Duration(milliseconds: 1500),
vsync: this,
);
CurvedAnimation curve = CurvedAnimation(parent: controller, curve: Curves.linear);
animation = ColorTween(begin: Colors.transparent, end:MyColors.gradiantStartColor).animate(curve);
animation.addStatusListener((status) {
if (status == AnimationStatus.completed) {
controller.reverse();
} else if (status == AnimationStatus.dismissed) {
controller.forward();
}
setState(() {});
});
controller.forward();
}
class HmgConnectivityButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
Provider.of<HmgConnectionProvider>(context, listen: false).checkHmgNetworkConnectivity();
return Consumer<HmgConnectionProvider>(
builder: (_, HmgConnectionProvider foo, __) {
return Container(
height: 45,
padding: const EdgeInsets.only(left: 12, right: 12),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(200.0),
gradient: const LinearGradient(
transform: GradientRotation(.83),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: <Color>[
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
],
),
),
child: InkWell(
onTap: (){
},
child: Row(
children: [
const Icon(
Icons.wifi,
color: Colors.white,
),
12.width,
LocaleKeys.connectHmgWifi.tr().toText18(color: Colors.white),
],
),
),
);
},
// Provider.of<HmgConnectionProvider>(context, listen: false).checkHmgNetworkConnectivity();
return Row(
children: [
Consumer<HmgConnectionProvider>(
builder: (_, HmgConnectionProvider provider, __) {
return AnimatedBuilder(
animation: animation,
builder: (BuildContext context, Widget? child) {
return Container(
height: 45,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(200.0),
gradient: const LinearGradient(
transform: GradientRotation(.83),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: <Color>[
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
],
),
),
child: Container(
padding: const EdgeInsets.only(left: 12, right: 12),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(200.0),
color: animation.value,
),
child: InkWell(
onTap: () async {
if (provider.isConnectedToHMG) {
Utils.showLoading(context);
await provider.closeWifiRequest();
Utils.hideLoading(context);
} else {
Utils.showLoading(context);
await provider.connectWithHmgNetwork();
Utils.hideLoading(context);
}
},
child: Row(
children: [
Icon(
Icons.wifi,
color: provider.isConnectedToHMG ? Colors.white : Colors.grey[700],
size: 16,
),
8.width,
provider.isConnectedToHMG ? LocaleKeys.connectedHmgWifi.tr().toText12(color: Colors.white) : LocaleKeys.connectHmgWifi.tr().toText12(color: Colors.white),
],
),
),
),
);
});
},
),
],
);
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
}

@ -14,6 +14,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/generic_response_model.dart';
import 'package:mohem_flutter_app/models/privilege_list_model.dart';
import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart';
import 'package:mohem_flutter_app/provider/hmg_connection_provider.dart';
import 'package:mohem_flutter_app/ui/dialogs/success_dialog.dart';
import 'package:mohem_flutter_app/widgets/dialogs/confirm_dialog.dart';
import 'package:mohem_flutter_app/widgets/dialogs/dialogs.dart';
@ -21,6 +22,7 @@ import 'package:mohem_flutter_app/widgets/location/Location.dart';
import 'package:mohem_flutter_app/widgets/nfc/nfc_reader_sheet.dart';
import 'package:mohem_flutter_app/widgets/qr_scanner_dialog.dart';
import 'package:nfc_manager/nfc_manager.dart';
import 'package:provider/provider.dart';
import 'package:wifi_iot/wifi_iot.dart';
class MarkAttendanceWidget extends StatefulWidget {
@ -75,75 +77,102 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.only(left: 21, right: 21, bottom: 21, top: widget.topPadding),
decoration: const BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white),
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.markAttendance.tr().toSectionHeading(),
LocaleKeys.selectMethodOfAttendance.tr().tr().toText11(color: const Color(0xff535353)),
GridView(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.only(bottom: 0, top: 21),
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: (MediaQuery.of(context).size.width < 550) ? 3 : 5, childAspectRatio: 1 / 1, crossAxisSpacing: 8, mainAxisSpacing: 8),
children: <Widget>[
// if (isNfcEnabled)
attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, () {
if (isNfcLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng, bool isMocked) {
if (isMocked) {
markFakeAttendance("NFC", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "");
} else {
performNfcAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
}
}, context);
} else {
performNfcAttendance(widget.model);
}
}),
if (isWifiEnabled)
attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, () {
if (isWifiLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng, bool isMocked) {
if (isMocked) {
markFakeAttendance("WIFI", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "");
} else {
performWifiAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
}
}, context);
} else {
performWifiAttendance(widget.model);
}
// connectWifi();
}),
if (isQrEnabled)
attendanceMethod("QR", "assets/images/ic_qr.svg", isQrEnabled, () async {
if (isQrLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng, bool isMocked) {
if (isMocked) {
markFakeAttendance("QR", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "");
} else {
performQrCodeAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "");
}
}, context);
} else {
performQrCodeAttendance(widget.model);
}
// performQrCodeAttendance(model);
}),
],
)
],
),
);
return Consumer<HmgConnectionProvider>(builder: (_, HmgConnectionProvider provider, __) {
return Container(
decoration: BoxDecoration(
borderRadius: const BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)),
color: provider.isConnectedToHMG ? MyColors.greenColor : MyColors.pinkDarkColor,
),
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
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),
),
Container(
padding: EdgeInsets.only(left: 21, right: 21, bottom: 21, top: widget.topPadding),
decoration: const BoxDecoration(borderRadius: BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25)), color: Colors.white),
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
LocaleKeys.markAttendance.tr().toSectionHeading(),
LocaleKeys.selectMethodOfAttendance.tr().tr().toText11(color: const Color(0xff535353)),
GridView(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.only(bottom: 0, top: 21),
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: (MediaQuery.of(context).size.width < 550) ? 3 : 5, childAspectRatio: 1 / 1, crossAxisSpacing: 8, mainAxisSpacing: 8),
children: <Widget>[
// if (isNfcEnabled)
attendanceMethod("NFC", "assets/images/nfc.svg", isNfcEnabled, provider.isConnectedToHMG, () async {
if (await provider.checkHmgNetworkConnectivity()) {
if (isNfcLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng, bool isMocked) {
if (isMocked) {
markFakeAttendance("NFC", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "",provider: provider);
} else {
performNfcAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "",provider: provider);
}
}, context);
} else {
performNfcAttendance(widget.model,provider: provider);
}
} else {
Utils.showToast("Please connect with the HMG internet to mark attendance");
}
}),
if (isWifiEnabled)
attendanceMethod("Wifi", "assets/images/wufu.svg", isWifiEnabled, provider.isConnectedToHMG, () async {
if (await provider.checkHmgNetworkConnectivity()) {
if (isWifiLocationEnabled) {
Location.getCurrentLocation((LatLng? latlng, bool isMocked) {
if (isMocked) {
markFakeAttendance("WIFI", latlng?.latitude.toString() ?? "", latlng?.longitude.toString() ?? "",provider: provider);
} else {
performWifiAttendance(widget.model, lat: latlng?.latitude.toString() ?? "", lng: latlng?.longitude.toString() ?? "",provider: provider);
}
}, context);
} else {
performWifiAttendance(widget.model,provider: provider);
}
} else {
Utils.showToast("Please connect with the HMG internet to mark attendance");
}
// connectWifi();
}),
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);
}),
],
)
],
),
),
],
),
);
});
}
Future<void> performNfcAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async {
Future<void> performNfcAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0", required HmgConnectionProvider provider}) async {
if (Platform.isIOS) {
Utils.readNFc(onRead: (String nfcId) async {
Utils.showLoading(context);
@ -170,6 +199,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
isDismissable: true,
child: SuccessDialog(widget.isFromDashboard),
);
provider.closeWifiRequest();
}
} catch (ex) {
Utils.hideLoading(context);
@ -201,7 +231,9 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
isDismissable: false,
child: SuccessDialog(widget.isFromDashboard),
);
provider.closeWifiRequest();
}
} catch (ex) {
print(ex);
Utils.hideLoading(context);
@ -226,40 +258,28 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
}
}
Future<void> performWifiAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0"}) async {
Future<void> performWifiAttendance(DashboardProviderModel model, {String lat = "0", String lng = "0", required HmgConnectionProvider provider}) async {
if (Platform.isAndroid) {
if (!(await checkSession())) {
return;
}
}
Utils.showLoading(context);
bool isConnected = await WiFiForIoTPlugin.connect(AppState().getMohemmWifiSSID ?? "",
password: AppState().getMohemmWifiPassword ?? "", joinOnce: Platform.isIOS ? false : true, security: NetworkSecurity.WPA, withInternet: false);
if (Platform.isIOS) {
if (await WiFiForIoTPlugin.getSSID() == AppState().getMohemmWifiSSID) {
isConnected = true;
} else {
isConnected = false;
}
}
if (isConnected && AppState().isAuthenticated) {
await WiFiForIoTPlugin.forceWifiUsage(true);
if (AppState().isAuthenticated) {
await Future.delayed(const Duration(seconds: 6));
try {
GenericResponseModel? g = await DashboardApiClient().markAttendance(pointType: 3, nfcValue: "", isGpsRequired: isWifiLocationEnabled, lat: lat, long: lng);
bool status = await model.fetchAttendanceTracking(context);
Utils.hideLoading(context);
await closeWifiRequest();
showMDialog(
context,
backgroundColor: Colors.transparent,
isDismissable: false,
child: SuccessDialog(widget.isFromDashboard),
);
provider.closeWifiRequest();
} catch (ex) {
await closeWifiRequest();
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
@ -268,7 +288,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
Utils.hideLoading(context);
Utils.confirmDialog(context, LocaleKeys.comeNearHMGWifi.tr());
} else {
await closeWifiRequest();
// await closeWifiRequest();
}
}
}
@ -306,7 +326,7 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
}
}
void markFakeAttendance(String sourceName, String lat, String long) async {
void markFakeAttendance(String sourceName, String lat, String long, {required HmgConnectionProvider provider}) async {
Utils.showLoading(context);
try {
await DashboardApiClient().markFakeLocation(sourceName: sourceName, lat: lat, long: long);
@ -319,11 +339,11 @@ class _MarkAttendanceWidgetState extends State<MarkAttendanceWidget> {
}
}
Widget attendanceMethod(String title, String image, bool isEnabled, VoidCallback onPress) => Container(
Widget attendanceMethod(String title, String image, bool isEnabled, bool isHmgNetworkAvailable, VoidCallback onPress) => Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: isEnabled ? null : Colors.grey.withOpacity(.5),
gradient: isEnabled
color: isHmgNetworkAvailable && isEnabled ? null : Colors.grey.withOpacity(.5),
gradient: isHmgNetworkAvailable && isEnabled
? const LinearGradient(
transform: GradientRotation(.64),
begin: Alignment.topRight,

Loading…
Cancel
Save