voice search

merge-update-with-lab-changes
Sultan Khan 5 years ago
parent 227731f8f8
commit 8f18d1025a

@ -14,3 +14,4 @@ const FAMILY_FILE = 'family-file';
const USER_LAT = 'user-lat'; const USER_LAT = 'user-lat';
const USER_LONG = 'user-long'; const USER_LONG = 'user-long';
const IS_GO_TO_PARKING = 'IS_GO_TO_PARKING'; const IS_GO_TO_PARKING = 'IS_GO_TO_PARKING';
const IS_SEARCH_APPO = 'is-search-appo';

@ -1,7 +1,9 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart'; import 'package:diplomaticquarterapp/models/Appointments/AppoimentAllHistoryResultList.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/models/AppointmentType.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/AppointmentCardView.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/widgets/AppointmentCardView.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart'; import 'package:diplomaticquarterapp/widgets/others/app_expandable_notifier.dart';
@ -30,7 +32,7 @@ class _MyAppointmentsState extends State<MyAppointments>
TabController _tabController; TabController _tabController;
bool isDataLoaded = false; bool isDataLoaded = false;
var sharedPref = new AppSharedPreferences();
@override @override
void initState() { void initState() {
_tabController = new TabController(length: 3, vsync: this); _tabController = new TabController(length: 3, vsync: this);
@ -203,14 +205,24 @@ class _MyAppointmentsState extends State<MyAppointments>
}); });
} }
openAppointmentsTab() { openAppointmentsTab() async {
if (widget._patientBookedAppointmentListHospital.length != 0) { var flag = await this.sharedPref.getInt(IS_SEARCH_APPO);
if (flag == 1) {
_tabController.index = 0; _tabController.index = 0;
} else if (widget._patientConfirmedAppointmentListHospital.length != 0) { } else if (flag == 2) {
_tabController.index = 1; _tabController.index = 1;
} else if (widget._patientArrivedAppointmentListHospital.length != 0) { } else if (flag == 3) {
_tabController.index = 2; _tabController.index = 2;
return; } else {
if (widget._patientBookedAppointmentListHospital.length != 0) {
_tabController.index = 0;
} else if (widget._patientConfirmedAppointmentListHospital.length != 0) {
_tabController.index = 1;
} else if (widget._patientArrivedAppointmentListHospital.length != 0) {
_tabController.index = 2;
return;
}
} }
} }

@ -22,6 +22,7 @@ import 'package:flutter/services.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:local_auth/local_auth.dart'; import 'package:local_auth/local_auth.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart';
class ConfirmLogin extends StatefulWidget { class ConfirmLogin extends StatefulWidget {
@override @override
_ConfirmLogin createState() => _ConfirmLogin(); _ConfirmLogin createState() => _ConfirmLogin();
@ -74,182 +75,170 @@ class _ConfirmLogin extends State<ConfirmLogin> {
return AppScaffold( return AppScaffold(
appBarTitle: TranslationBase.of(context).confirm, appBarTitle: TranslationBase.of(context).confirm,
isShowAppBar: true, isShowAppBar: true,
body: SingleChildScrollView( body: SingleChildScrollView(
child: Container( child: Container(
padding: EdgeInsets.all(20), padding: EdgeInsets.all(20),
height: SizeConfig.realScreenHeight * .9, height: SizeConfig.realScreenHeight * .9,
width: SizeConfig.realScreenWidth, width: SizeConfig.realScreenWidth,
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
flex: 3, flex: 3,
child: user != null && isMoreOption == false child: user != null && isMoreOption == false
? Column( ? Column(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceEvenly, MainAxisAlignment.spaceEvenly,
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start, children: <Widget>[
children: <Widget>[ Image.asset(
Image.asset( 'assets/images/habib-logo.png',
'assets/images/habib-logo.png', height: 80,
height: 80, width: 80,
width: 80, ),
), AppText(
AppText( TranslationBase.of(context).welcomeBack +
TranslationBase.of(context) ' ' +
.welcomeBack + user.name,
' ' + fontSize: SizeConfig.textMultiplier * 3.5,
user.name, ),
fontSize: SizeConfig.textMultiplier * 3.5, AppText(
), TranslationBase.of(context).accountInfo,
AppText( fontSize: SizeConfig.textMultiplier * 2.5,
TranslationBase.of(context).accountInfo, ),
fontSize: SizeConfig.textMultiplier * 2.5, Card(
), color: Colors.grey[300],
Card( child: Row(
color: Colors.grey[300], children: <Widget>[
child: Row( Expanded(
children: <Widget>[ child: ListTile(
Expanded( title: Text(
child: ListTile( TranslationBase.of(context)
title: Text( .lastLoginAt,
TranslationBase.of(context) textAlign: TextAlign.center,
.lastLoginAt, ),
textAlign: TextAlign.center, subtitle: Text(
), user.editedOn != null
subtitle: Text( ? formatDate(DateUtil
user.editedOn != null .convertStringToDate(
? formatDate(DateUtil user.editedOn))
.convertStringToDate( : '--',
user.editedOn)) textAlign: TextAlign.center),
: '--', )),
textAlign: Expanded(
TextAlign.center), child: ListTile(
)), title: Text(
Expanded(
child: ListTile(
title: Text(
TranslationBase.of(context)
.lastLoginWith,
textAlign:
TextAlign.center),
subtitle: Text(
getType(user.logInType,
context),
textAlign:
TextAlign.center),
))
],
))
],
)
: Column(
mainAxisAlignment:
MainAxisAlignment.spaceEvenly,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[
Image.asset(
'assets/images/habib-logo.png',
height: 80,
width: 80,
),
this.onlySMSBox == false
? AppText(
TranslationBase.of(context)
.verifyLoginWith,
fontSize:
SizeConfig.textMultiplier *
3.5,
textAlign: TextAlign.left,
)
: AppText(
TranslationBase.of(context) TranslationBase.of(context)
.verifyFingerprint2, .lastLoginWith,
fontSize: textAlign: TextAlign.center),
SizeConfig.textMultiplier * subtitle: Text(
2.5, getType(
textAlign: TextAlign.left, user.logInType, context),
), textAlign: TextAlign.center),
])), ))
user != null && isMoreOption == false ],
? Expanded( ))
flex: 2, ],
child: Column( )
mainAxisAlignment: MainAxisAlignment.start, : Column(
crossAxisAlignment: mainAxisAlignment:
CrossAxisAlignment.start, MainAxisAlignment.spaceEvenly,
children: <Widget>[ crossAxisAlignment: CrossAxisAlignment.start,
Row( children: <Widget>[
Image.asset(
'assets/images/habib-logo.png',
height: 80,
width: 80,
),
this.onlySMSBox == false
? AppText(
TranslationBase.of(context)
.verifyLoginWith,
fontSize:
SizeConfig.textMultiplier * 3.5,
textAlign: TextAlign.left,
)
: AppText(
TranslationBase.of(context)
.verifyFingerprint2,
fontSize:
SizeConfig.textMultiplier * 2.5,
textAlign: TextAlign.left,
),
])),
user != null && isMoreOption == false
? Expanded(
flex: 2,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
mainAxisAlignment:
MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: InkWell(
onTap: () => {
authenticateUser(
3,
BiometricType
.face.index)
},
child:
getButton(user.logInType))),
Expanded(child: getButton(5))
])
]))
: Expanded(
flex: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
onlySMSBox == false
? Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.center, MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Expanded( Expanded(child: getButton(3)),
child: InkWell( Expanded(child: getButton(2))
onTap: () => { ],
authenticateUser( )
3, : SizedBox(),
BiometricType Row(
.face.index) mainAxisAlignment: MainAxisAlignment.center,
},
child: getButton(
user.logInType))),
Expanded(child: getButton(5))
])
]))
: Expanded(
flex: 4,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
onlySMSBox == false Expanded(child: getButton(1)),
? Row( Expanded(child: getButton(4))
mainAxisAlignment: ],
MainAxisAlignment.center, ),
children: <Widget>[ ]),
Expanded(child: getButton(3)), ),
Expanded(child: getButton(2)) Expanded(
], flex: 1,
) child: Column(
: SizedBox(), mainAxisAlignment: MainAxisAlignment.end,
Row( children: <Widget>[
mainAxisAlignment: user != null
MainAxisAlignment.center, ? Row(
children: <Widget>[ children: <Widget>[
Expanded(child: getButton(1)), Expanded(
Expanded(child: getButton(4)) child: DefaultButton(
], TranslationBase.of(context)
), .useAnotherAccount,
]), () => {
), Navigator.of(context).pushNamed(
Expanded( LOGIN_TYPE,
flex: 1, )
child: Column( },
mainAxisAlignment: MainAxisAlignment.end, )),
children: <Widget>[ ],
user != null )
? Row( : SizedBox(),
children: <Widget>[ ],
Expanded( ))
child: DefaultButton( ],
TranslationBase.of(context) ))));
.useAnotherAccount,
() => {
Navigator.of(context).pushNamed(
LOGIN_TYPE,
)
},
)),
],
)
: SizedBox(),
],
))
],
)))
);
} }
Future<void> _getAvailableBiometrics() async { Future<void> _getAvailableBiometrics() async {
@ -313,38 +302,39 @@ class _ConfirmLogin extends State<ConfirmLogin> {
var request = CheckPatientAuthenticationReq.fromJson(req.toJson()); var request = CheckPatientAuthenticationReq.fromJson(req.toJson());
sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request); sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request);
authService.checkPatientAuthentication(request).then((value) => { authService
if (value['isSMSSent']) .checkPatientAuthentication(request)
{ .then((value) => {
sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']), if (value['isSMSSent'])
this.loginTokenID = value['LogInTokenID'], {
sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request), sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']),
// Future.delayed(Duration(seconds: 1), () { this.loginTokenID = value['LogInTokenID'],
this.sendActivationCode(type) sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request),
// }) // Future.delayed(Duration(seconds: 1), () {
} this.sendActivationCode(type)
else // })
{ }
if (value['IsAuthenticated']) {this.checkActivationCode()} else
} {
}).catchError((err) { if (value['IsAuthenticated']) {this.checkActivationCode()}
}
})
.catchError((err) {
print(err); print(err);
}).showProgressBar( }).showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
sendActivationCode(type) { sendActivationCode(type) async {
var request = this.getCommonRequest(); var request = this.getCommonRequest();
// loading(true); // loading(true);
this.authService.sendActivationCode(request).then((result) => {
if (result != null && result['isSMSSent'] == true) await this.authService.sendActivationCode(request).then((result) => {
{loading(false), this.startSMSService(type)} if (result != null && result['isSMSSent'] == true)
else {this.startSMSService(type)}
{loading(false)} });
}).catchError((err) {
print(err);
}).showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
// SMSOTP.showLoadingDialog(context, false), // SMSOTP.showLoadingDialog(context, false),
} }
@ -376,45 +366,50 @@ class _ConfirmLogin extends State<ConfirmLogin> {
} }
getMobileInfo(request) { getMobileInfo(request) {
this.authService.getLoginInfo(request).then((result) => { this
if (result['SMSLoginRequired'] == false) .authService
{ .getLoginInfo(request)
this.loginTokenID = result.logInTokenID, .then((result) => {
this.patientOutSA = result.patientOutSA, if (result['SMSLoginRequired'] == false)
// sms for register the biometric
if (result.isSMSSent)
{ {
this.onlySMSBox = false, this.loginTokenID = result.logInTokenID,
//this.button(); this.patientOutSA = result.patientOutSA,
// sms for register the biometric
if (result.isSMSSent)
{
this.onlySMSBox = false,
//this.button();
}
else
{checkActivationCode()}
} }
else else
{checkActivationCode()}
}
else
{
if (result['IsAuthenticated'] == true)
{ {
setState(() { if (result['IsAuthenticated'] == true)
isMoreOption = true; {
this.onlySMSBox = true; setState(() {
// this.fingrePrintBefore = true; isMoreOption = true;
}), this.onlySMSBox = true;
// this.fingrePrintBefore = true;
//sharedPref.setBool(ONLY_SMS, true), }),
// this.cs.sharedService.setSharedData(true, AuthenticationService.ONLY_SMS);
//this.cs.sharedService.setSharedData(this.selectedOption, AuthenticationService.FINGUREPRINT_BEFORE); //sharedPref.setBool(ONLY_SMS, true),
// this.cs.confirmLogin(); // this.cs.sharedService.setSharedData(true, AuthenticationService.ONLY_SMS);
//this.button(); //this.cs.sharedService.setSharedData(this.selectedOption, AuthenticationService.FINGUREPRINT_BEFORE);
// this.cs.confirmLogin();
//this.button();
}
// else
// {
// // this.cs.presentAlert(result.ErrorEndUserMessage);
// }
} }
// else })
// { .catchError((err) {
// // this.cs.presentAlert(result.ErrorEndUserMessage);
// }
}
}).catchError((err) {
print(err); print(err);
}).showProgressBar( }).showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));; text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
;
} }
setUser() async {} setUser() async {}
@ -435,9 +430,13 @@ class _ConfirmLogin extends State<ConfirmLogin> {
: int.parse(this.user.mobile); : int.parse(this.user.mobile);
this.zipCode = this.registerd_data != null this.zipCode = this.registerd_data != null
? this.registerd_data.zipCode ? this.registerd_data.zipCode
: this.user.outSA == true ? "971" : "966"; : this.user.outSA == true
? "971"
: "966";
this.patientOutSA = this.registerd_data != null this.patientOutSA = this.registerd_data != null
? this.registerd_data.zipCode == "966" ? 0 : 1 ? this.registerd_data.zipCode == "966"
? 0
: 1
: this.user.outSA; : this.user.outSA;
if (this.registerd_data != null) { if (this.registerd_data != null) {
this.loginTokenID = await sharedPref.getString(LOGIN_TOKEN_ID); this.loginTokenID = await sharedPref.getString(LOGIN_TOKEN_ID);
@ -485,46 +484,51 @@ class _ConfirmLogin extends State<ConfirmLogin> {
SMSOTP.showLoadingDialog(context, true); SMSOTP.showLoadingDialog(context, true);
var request = this.getCommonRequest().toJson(); var request = this.getCommonRequest().toJson();
this.authService.checkActivationCode(request, value).then((result) => { this
if (result is Map) .authService
{ .checkActivationCode(request, value)
result = CheckActivationCode.fromJson(result), .then((result) => {
if (this.registerd_data != null && if (result is Map)
this.registerd_data.isRegister == true)
{ {
Navigator.of(context).pushNamed( result = CheckActivationCode.fromJson(result),
REGISTER_INFO, if (this.registerd_data != null &&
) this.registerd_data.isRegister == true)
{
Navigator.of(context).pushNamed(
REGISTER_INFO,
)
}
else
{
this.userData = result
.list, //AuthenticatedUser.fromJson(result['List'][0]),
this.sharedPref.setObject(USER_PROFILE, result.list),
this.loginTokenID = result.logInTokenID,
this
.sharedPref
.setObject(LOGIN_TOKEN_ID, result.logInTokenID),
this
.sharedPref
.setString(TOKEN, result.authenticationTokenID),
this.checkIfUserAgreedBefore(result),
// Navigator.of(context).pop(),
SMSOTP.showLoadingDialog(context, false),
}
} }
else else
{ {
this.userData = result
.list, //AuthenticatedUser.fromJson(result['List'][0]),
this.sharedPref.setObject(USER_PROFILE, result.list),
this.loginTokenID = result.logInTokenID,
this
.sharedPref
.setObject(LOGIN_TOKEN_ID, result.logInTokenID),
this
.sharedPref
.setString(TOKEN, result.authenticationTokenID),
this.checkIfUserAgreedBefore(result),
// Navigator.of(context).pop(), // Navigator.of(context).pop(),
SMSOTP.showLoadingDialog(context, false), SMSOTP.showLoadingDialog(context, false),
Future.delayed(Duration(seconds: 1), () {
AppToast.showErrorToast(message: result);
}),
} }
} })
else .catchError((err) {
{
// Navigator.of(context).pop(),
SMSOTP.showLoadingDialog(context, false),
Future.delayed(Duration(seconds: 1), () {
AppToast.showErrorToast(message: result);
}),
}
}).catchError((err) {
print(err); print(err);
}).showProgressBar( }).showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));; text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
;
} }
checkIfUserAgreedBefore(CheckActivationCode result) { checkIfUserAgreedBefore(CheckActivationCode result) {
@ -537,7 +541,10 @@ class _ConfirmLogin extends State<ConfirmLogin> {
} }
insertIMEI() { insertIMEI() {
authService.insertDeviceImei(selectedOption).then((value) => {goToHome()}).catchError((err) { authService
.insertDeviceImei(selectedOption)
.then((value) => {goToHome()})
.catchError((err) {
print(err); print(err);
}); });
} }
@ -545,7 +552,6 @@ class _ConfirmLogin extends State<ConfirmLogin> {
goToHome() { goToHome() {
// authService.insertDeviceImei().then((value) => print(value)); // authService.insertDeviceImei().then((value) => print(value));
Navigator.of(context).pushNamed(HOME); Navigator.of(context).pushNamed(HOME);
} }
loading(flag) { loading(flag) {

@ -156,19 +156,15 @@ class AuthProvider with ChangeNotifier {
request.generalid = GENERAL_ID; request.generalid = GENERAL_ID;
request.languageID = LANGUAGE_ID; request.languageID = LANGUAGE_ID;
request.patientOutSA = request.zipCode == '966' ? 0 : 1; request.patientOutSA = request.zipCode == '966' ? 0 : 1;
try {
dynamic localRes; dynamic localRes;
await new BaseAppClient().post(CHECK_PATIENT_AUTH, await new BaseAppClient().post(CHECK_PATIENT_AUTH,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
throw error;
}, body: request.toJson());
return Future.value(localRes);
} catch (error) {
print(error);
throw error; throw error;
} }, body: request.toJson());
return Future.value(localRes);
} }
Future<dynamic> getLoginInfo(request) async { Future<dynamic> getLoginInfo(request) async {
@ -180,19 +176,15 @@ class AuthProvider with ChangeNotifier {
request.deviceTypeID = DeviceTypeID; request.deviceTypeID = DeviceTypeID;
request.patientOutSA = request.zipCode == '966' ? 0 : 1; request.patientOutSA = request.zipCode == '966' ? 0 : 1;
request.isDentalAllowedBackend = false; request.isDentalAllowedBackend = false;
try {
dynamic localRes; dynamic localRes;
await new BaseAppClient().post(GET_MOBILE_INFO, await new BaseAppClient().post(GET_MOBILE_INFO,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
localRes = response; localRes = response;
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
throw error;
}, body: request.toJson());
return Future.value(localRes);
} catch (error) {
print(error);
throw error; throw error;
} }, body: request.toJson());
return Future.value(localRes);
} }
Future<dynamic> sendActivationCode(request) async { Future<dynamic> sendActivationCode(request) async {
@ -204,20 +196,16 @@ class AuthProvider with ChangeNotifier {
request.deviceTypeID = DeviceTypeID; request.deviceTypeID = DeviceTypeID;
request.patientOutSA = request.zipCode == '966' ? 0 : 1; request.patientOutSA = request.zipCode == '966' ? 0 : 1;
request.isDentalAllowedBackend = false; request.isDentalAllowedBackend = false;
try {
dynamic localRes; dynamic localRes;
await new BaseAppClient().post(SEND_ACTIVATION_CODE, await new BaseAppClient().post(SEND_ACTIVATION_CODE,
onSuccess: (dynamic response, int statusCode) { onSuccess: (dynamic response, int statusCode) {
localRes = response; localRes = response;
authenticatedUser = CheckActivationCode.fromJson(localRes); authenticatedUser = CheckActivationCode.fromJson(localRes);
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
throw error;
}, body: request.toJson());
return Future.value(localRes);
} catch (error) {
print(error);
throw error; throw error;
} }, body: request.toJson());
return Future.value(localRes);
} }
Future<dynamic> checkActivationCode(request, [value]) async { Future<dynamic> checkActivationCode(request, [value]) async {

@ -323,7 +323,6 @@ class _AppDrawerState extends State<AppDrawer> {
await this.sharedPref.getObject(USER_PROFILE)); await this.sharedPref.getObject(USER_PROFILE));
setState(() { setState(() {
this.user = data; this.user = data;
print(this.user);
}); });
} }
} }

@ -1,27 +1,44 @@
import 'dart:collection'; import 'dart:collection';
import 'dart:io';
import 'dart:math'; import 'dart:math';
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorListResponse.dart';
import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart'; import 'package:diplomaticquarterapp/models/Appointments/DoctorProfile.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/my_web_view.dart';
import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/parking_page.dart';
import 'package:diplomaticquarterapp/pages/Blood/blood_donation.dart';
import 'package:diplomaticquarterapp/pages/Blood/my_balance_page.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/widgets/BranchView.dart';
import 'package:diplomaticquarterapp/pages/ContactUs/findus/findus_page.dart';
import 'package:diplomaticquarterapp/pages/ErService/AmbulanceReq.dart';
import 'package:diplomaticquarterapp/pages/ErService/ErOptions.dart';
import 'package:diplomaticquarterapp/pages/ErService/NearestEr.dart'; import 'package:diplomaticquarterapp/pages/ErService/NearestEr.dart';
import 'package:diplomaticquarterapp/pages/MyAppointments/MyAppointments.dart'; import 'package:diplomaticquarterapp/pages/MyAppointments/MyAppointments.dart';
import 'package:diplomaticquarterapp/pages/family/my-family.dart';
import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.dart'; import 'package:diplomaticquarterapp/pages/feedback/feedback_home_page.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_approval_screen.dart';
import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart'; import 'package:diplomaticquarterapp/pages/insurance/insurance_update_screen.dart';
import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart';
import 'package:diplomaticquarterapp/pages/login/welcome.dart';
import 'package:diplomaticquarterapp/pages/medical/balance/advance_payment_page.dart';
import 'package:diplomaticquarterapp/pages/medical/doctor/doctor_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/doctor/doctor_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/labs/labs_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/labs/labs_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart';
import 'package:diplomaticquarterapp/pages/medical/patient_sick_leave_page.dart'; import 'package:diplomaticquarterapp/pages/medical/patient_sick_leave_page.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/radiology/radiology_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/reports/report_home_page.dart'; import 'package:diplomaticquarterapp/pages/medical/reports/report_home_page.dart';
import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart'; import 'package:diplomaticquarterapp/pages/medical/vital_sign/vital_sign_details_screen.dart';
import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart';
import 'package:diplomaticquarterapp/pages/vaccine/my_vaccines_screen.dart'; import 'package:diplomaticquarterapp/pages/vaccine/my_vaccines_screen.dart';
import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart'; import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart'; import 'package:diplomaticquarterapp/widgets/robo-search/robosearch.dart';
@ -30,6 +47,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter_tts/flutter_tts.dart'; import 'package:flutter_tts/flutter_tts.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:speech_to_text/speech_recognition_error.dart'; import 'package:speech_to_text/speech_recognition_error.dart';
import 'package:speech_to_text/speech_recognition_result.dart'; import 'package:speech_to_text/speech_recognition_result.dart';
import 'package:speech_to_text/speech_to_text.dart'; import 'package:speech_to_text/speech_to_text.dart';
@ -38,6 +56,7 @@ import 'package:diplomaticquarterapp/pages/BookAppointment/Search.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'package:url_launcher/url_launcher.dart';
class FloatingSearchButton extends StatefulWidget { class FloatingSearchButton extends StatefulWidget {
@override @override
@ -67,11 +86,12 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
bool isSearching = false; bool isSearching = false;
Map results = {}; Map results = {};
String lastStatus; String lastStatus;
AuthenticatedUser user;
bool _isInit = true; bool _isInit = true;
var event = RobotProvider(); var event = RobotProvider();
var sharedPref = new AppSharedPreferences();
bool _hasSpeech = false; bool _hasSpeech = false;
ProjectViewModel projectProvider;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -83,14 +103,17 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
}); });
} }
}); });
requestPermissions(); requestPermissions();
// Future.delayed(const Duration(seconds: 10), () { // Future.delayed(const Duration(seconds: 10), () {
initSpeechState().then((value) => {}); initSpeechState().then((value) => {});
getUserData();
// }); // });
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
projectProvider = Provider.of(context);
return AnimatedPositioned( return AnimatedPositioned(
onEnd: () { onEnd: () {
// setState(() { // setState(() {
@ -156,7 +179,9 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
setState(() { setState(() {
activeAnimation = true; if (this.mounted) {
activeAnimation = true;
}
}); });
}, },
child: Align( child: Align(
@ -169,45 +194,7 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
), ),
), ),
), ),
]) ]));
// Stack(
// fit: StackFit.loose,
// overflow: Overflow.visible,
// children: <Widget>[
// Container(),
// Positioned(
// child: GestureDetector(
// behavior: HitTestBehavior.translucent,
// onTapDown: (TapDownDetails details) => {
// setState(() {
// activeAnimation = true;
// })
// }, // handle your image tap here
// child: Image.asset(
// 'assets/images/CloseIcon.png',
// fit: BoxFit.cover, // this is the solution for border
// width: 30.0,
// height: 30.0,
// ),
// )),
// Positioned(
// child: GestureDetector(
// onTap: () {
// this.roboSearch(context);
// }, // handle your image tap here
// child: SvgPicture.asset('assets/images/robort_svg.svg')))
// // new RawMaterialButton(
// // // shape: new CircleBorder(),
// // elevation: 1.0,
// // child: SvgPicture.asset('assets/images/robort_svg.svg'),
// // onPressed: () {},
// // ),
// ],
// )
);
} }
startVoiceSearch() async { startVoiceSearch() async {
@ -232,12 +219,11 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
if (result.finalResult == true) { if (result.finalResult == true) {
// setState(() { // setState(() {
reconizedWord = result.recognizedWords; reconizedWord = result.recognizedWords;
event.setValue({"searchText": reconizedWord}); event.setValue({"searchText": reconizedWord});
setState(() { // setState(() {
searchText = reconizedWord; // searchText = reconizedWord;
}); // });
Future.delayed(const Duration(seconds: 1), () { Future.delayed(const Duration(seconds: 1), () {
_speak(reconizedWord); _speak(reconizedWord);
}); });
@ -278,9 +264,9 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
} }
if (!mounted) return; if (!mounted) return;
setState(() { // setState(() {
_hasSpeech = hasSpeech; // _hasSpeech = hasSpeech;
}); // });
} }
void errorListener(SpeechRecognitionError error) { void errorListener(SpeechRecognitionError error) {
@ -402,6 +388,19 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
} }
} }
break; break;
case '104':
{
List clnicID = unique(result['ClinicId']);
//= result['ProjectId'] ? result['ProjectId'] : 0; //result['ProjectId'];
if (clnicID.length == 1) {
getDoctorsList(result['ProjectId'], clnicID[0], context,
doctorId: null, doctorName: null, isNearest: true);
} else {
goToClinic(clnicID);
}
}
break;
case '4': case '4':
{ {
Navigator.push(context, FadePage(page: LabsHomePage())); Navigator.push(context, FadePage(page: LabsHomePage()));
@ -483,11 +482,193 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
} }
break; break;
case '16': case '16':
{
Navigator.push(context, FadePage(page: MyBalancePage()));
}
break;
case '17':
{
Navigator.push(context, FadePage(page: MedicalProfilePage()));
}
break;
case '18':
{
//Drivethrough need to be implemeted here.
}
break;
case '19':
{ {
Navigator.push(context, FadePage(page: LiveCareHome())); Navigator.push(context, FadePage(page: LiveCareHome()));
} }
break; break;
case '20':
{
//CMC service need to be implemeted
}
break;
case '21':
{
Navigator.push(context, FadePage(page: MyFamily()));
}
break;
case '22':
{
Navigator.push(context, FadePage(page: BloodDonationPage()));
}
break;
case '23':
{
//health calculator need to be implemeted
}
break;
case '24':
{
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => MyWebView(
title: "HMG News",
selectedUrl:
"https://twitter.com/hashtag/مجموعة_د_سليمان_الحبيب_الطبية?src=hashtag_click&f=live",
)));
}
break;
case '25':
{
if (user == null) {
Navigator.push(context, FadePage(page: WelcomeLogin()));
}
}
break;
case '26':
{
Navigator.push(context, FadePage(page: ParkingPage()));
}
break;
case '27':
{
Navigator.push(
context,
FadePage(
page: ErOptions(
isAppbar: true,
)));
}
break;
case '28':
{
Navigator.push(context, FadePage(page: AmbulanceReq()));
}
break;
case '29':
{
Navigator.push(context, FadePage(page: FindUsPage()));
}
break;
case '30':
{
launch("tel://" + result['PhoneNumbers'][0]);
}
break;
case '31':
{
Navigator.of(context).popUntil(ModalRoute.withName('/'));
}
break;
case '32':
{
Navigator.push(context, FadePage(page: AdvancePaymentPage()));
}
break;
case '33':
{
if (result['LanguageCode'] != '0') {
if (projectProvider.isArabic) {
projectProvider.changeLanguage('en');
} else {
projectProvider.changeLanguage('ar');
}
}
}
break;
case '34':
{
//settings page need to be implemented here
}
break;
case '35':
{
if (Platform.isIOS) {
launch(
"https://apps.apple.com/sa/app/dr-suliaman-alhabib/id733503978");
} else {
launch(
"https://play.google.com/store/apps/details?id=com.ejada.hmg&hl=en");
}
}
break;
case '36':
{
Navigator.of(context).pushNamed(
REGISTER,
);
}
break;
case '37':
{
Navigator.of(context).pushNamed(
SYMPTOM_CHECKER,
);
}
break;
case '38':
{
await this.sharedPref.setInt(IS_SEARCH_APPO, 1);
Navigator.push(context, FadePage(page: MyAppointments()));
}
break;
case '39':
{
await this.sharedPref.setInt(IS_SEARCH_APPO, 2);
Navigator.push(context, FadePage(page: MyAppointments()));
}
break;
case '40':
{
//Home health care service need to be implemeted here
}
break;
case '41':
{
Navigator.push(context, FadePage(page: PaymentService()));
}
break;
case '42':
{
//weather indicator need to be implemented here
}
break;
case '43':
{
await this.sharedPref.setInt(IS_SEARCH_APPO, 3);
Navigator.push(context, FadePage(page: MyAppointments()));
}
break;
case '44':
{
//chat need be implmented here.
}
break;
case '45':
{
launch('https://hmg.com/ir/ar/Pages/ShareInformation/home.aspx');
}
break;
case '46':
{
launch('https://hmg.com/ir/ar/pages/home.aspx');
}
break;
case '200': case '200':
{ {
Navigator.push(context, FadePage(page: FeedbackHomePage())); Navigator.push(context, FadePage(page: FeedbackHomePage()));
@ -499,8 +680,6 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
speak(); speak();
break; break;
} }
//searchProvider.setLisener(result);
} }
getDoctorProfile(projectId, clinicId, doctorId, context, doctorData) { getDoctorProfile(projectId, clinicId, doctorId, context, doctorData) {
@ -526,13 +705,14 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
}); });
} }
getDoctorsList(projectId, clinicId, context, {doctorId, doctorName}) { getDoctorsList(projectId, clinicId, context,
{doctorId, doctorName, isNearest = false}) {
List<DoctorList> doctorsList = []; List<DoctorList> doctorsList = [];
List<String> arr = []; List<String> arr = [];
List<String> arrDistance = []; List<String> arrDistance = [];
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
service service
.getDoctorsList(clinicId, projectId, false, context, .getDoctorsList(clinicId, projectId, isNearest, context,
doctorId: doctorId, doctorName: doctorName) doctorId: doctorId, doctorName: doctorName)
.then((res) { .then((res) {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
@ -620,8 +800,8 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
speak() async { speak() async {
if (_currentLocaleId == 'en-US' && results['ReturnMessage'] != null) { if (_currentLocaleId == 'en-US' && results['ReturnMessage'] != null) {
await flutterTts.setVoice("en-us-x-sfg#male_2-local"); await flutterTts.setVoice("en-us-x-sfg#male_2-local");
await flutterTts.setLanguage(_currentLocaleId); await flutterTts.setLanguage(_currentLocaleId);
await flutterTts.speak(results['ReturnMessage']); await flutterTts.speak(results['ReturnMessage']);
} else if (results['ReturnMessage_Ar'] != null) { } else if (results['ReturnMessage_Ar'] != null) {
await flutterTts.setLanguage(_currentLocaleId); await flutterTts.setLanguage(_currentLocaleId);
@ -648,4 +828,13 @@ class _FloatingSearchButton extends State<FloatingSearchButton>
List unique(List list) { List unique(List list) {
return list.toSet().toList(); return list.toSet().toList();
} }
getUserData() async {
if (await this.sharedPref.getObject(USER_PROFILE) != null) {
setState(() async {
user = AuthenticatedUser.fromJson(
await this.sharedPref.getObject(USER_PROFILE));
});
}
}
} }

Loading…
Cancel
Save