|
|
|
@ -1,13 +1,13 @@
|
|
|
|
|
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/config/size_config.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_response.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/models/Authentication/check_paitent_authentication_req.dart';
|
|
|
|
|
|
|
|
|
|
import 'package:diplomaticquarterapp/models/Authentication/select_device_imei_res.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/models/Authentication/send_activation_request.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/models/Authentication/check_activation_code_request.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
|
|
|
@ -18,7 +18,7 @@ import 'package:flutter/cupertino.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/routes.dart';
|
|
|
|
|
import 'package:flutter/services.dart';
|
|
|
|
|
import 'package:flutter_flexible_toast/flutter_flexible_toast.dart';
|
|
|
|
|
import 'package:intl/intl.dart';
|
|
|
|
|
import 'package:local_auth/local_auth.dart';
|
|
|
|
|
|
|
|
|
|
class ConfirmLogin extends StatefulWidget {
|
|
|
|
@ -28,16 +28,16 @@ class ConfirmLogin extends StatefulWidget {
|
|
|
|
|
|
|
|
|
|
class _ConfirmLogin extends State<ConfirmLogin> {
|
|
|
|
|
final LocalAuthentication auth = LocalAuthentication();
|
|
|
|
|
List _availableBiometrics;
|
|
|
|
|
dynamic _availableBiometrics;
|
|
|
|
|
var sharedPref = new AppSharedPreferences();
|
|
|
|
|
bool authenticated;
|
|
|
|
|
final authService = new AuthProvider();
|
|
|
|
|
int mobileNumber;
|
|
|
|
|
String errorMsg = '';
|
|
|
|
|
var user;
|
|
|
|
|
SelectDeviceIMEIRES user;
|
|
|
|
|
bool isLoading = false;
|
|
|
|
|
CheckPatientAuthenticationReq registerd_data;
|
|
|
|
|
|
|
|
|
|
bool isMoreOption = false;
|
|
|
|
|
var zipCode;
|
|
|
|
|
|
|
|
|
|
var patientOutSA;
|
|
|
|
@ -58,6 +58,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
|
|
|
|
|
static BuildContext _context;
|
|
|
|
|
|
|
|
|
|
static bool _loading;
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void initState() {
|
|
|
|
|
_getAvailableBiometrics();
|
|
|
|
@ -80,227 +81,145 @@ class _ConfirmLogin extends State<ConfirmLogin> {
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 3,
|
|
|
|
|
child: 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)
|
|
|
|
|
.verifyFingerprint2,
|
|
|
|
|
fontSize:
|
|
|
|
|
SizeConfig.textMultiplier * 2.5,
|
|
|
|
|
textAlign: TextAlign.left,
|
|
|
|
|
child: user != null && isMoreOption == false
|
|
|
|
|
? Column(
|
|
|
|
|
mainAxisAlignment:
|
|
|
|
|
MainAxisAlignment.spaceEvenly,
|
|
|
|
|
crossAxisAlignment:
|
|
|
|
|
CrossAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Image.asset(
|
|
|
|
|
'assets/images/habib-logo.png',
|
|
|
|
|
height: 80,
|
|
|
|
|
width: 80,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(context)
|
|
|
|
|
.welcomeBack +
|
|
|
|
|
' ' +
|
|
|
|
|
user.name,
|
|
|
|
|
fontSize: SizeConfig.textMultiplier * 4,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(context).accountInfo,
|
|
|
|
|
fontSize: SizeConfig.textMultiplier * 3,
|
|
|
|
|
),
|
|
|
|
|
Card(
|
|
|
|
|
color: Colors.grey[300],
|
|
|
|
|
child: Row(
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Expanded(
|
|
|
|
|
child: ListTile(
|
|
|
|
|
title: Text(
|
|
|
|
|
TranslationBase.of(context)
|
|
|
|
|
.lastLoginAt,
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
|
),
|
|
|
|
|
subtitle: Text(
|
|
|
|
|
formatDate(DateUtil
|
|
|
|
|
.convertStringToDate(
|
|
|
|
|
user.editedOn)),
|
|
|
|
|
textAlign:
|
|
|
|
|
TextAlign.center),
|
|
|
|
|
)),
|
|
|
|
|
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,
|
|
|
|
|
),
|
|
|
|
|
])),
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 4,
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
onlySMSBox == false
|
|
|
|
|
? Row(
|
|
|
|
|
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.center,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Expanded(child: getButton(3)),
|
|
|
|
|
Expanded(child: getButton(2))
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
: SizedBox(),
|
|
|
|
|
Row(
|
|
|
|
|
mainAxisAlignment:
|
|
|
|
|
MainAxisAlignment.center,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Expanded(
|
|
|
|
|
child: InkWell(
|
|
|
|
|
onTap: () => {
|
|
|
|
|
authenticateUser(
|
|
|
|
|
3,
|
|
|
|
|
BiometricType
|
|
|
|
|
.face.index)
|
|
|
|
|
},
|
|
|
|
|
child: RoundedContainer(
|
|
|
|
|
backgroundColor:
|
|
|
|
|
BiometricType.face
|
|
|
|
|
.index ==
|
|
|
|
|
1
|
|
|
|
|
? Colors.white
|
|
|
|
|
: Colors.white
|
|
|
|
|
.withOpacity(
|
|
|
|
|
.7),
|
|
|
|
|
borderColor: Colors.grey,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding:
|
|
|
|
|
EdgeInsets.fromLTRB(
|
|
|
|
|
20, 10, 20, 10),
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment:
|
|
|
|
|
MainAxisAlignment
|
|
|
|
|
.center,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Image.asset(
|
|
|
|
|
'assets/images/login/101.png',
|
|
|
|
|
height: SizeConfig
|
|
|
|
|
.imageSizeMultiplier *
|
|
|
|
|
13,
|
|
|
|
|
width: SizeConfig
|
|
|
|
|
.imageSizeMultiplier *
|
|
|
|
|
16,
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
height: 20,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(
|
|
|
|
|
context)
|
|
|
|
|
.verifyFaceID,
|
|
|
|
|
fontSize: SizeConfig
|
|
|
|
|
.textMultiplier *
|
|
|
|
|
2,
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
)))),
|
|
|
|
|
Expanded(
|
|
|
|
|
child: InkWell(
|
|
|
|
|
onTap: () => {
|
|
|
|
|
authenticateUser(
|
|
|
|
|
2,
|
|
|
|
|
BiometricType
|
|
|
|
|
.fingerprint
|
|
|
|
|
.index)
|
|
|
|
|
},
|
|
|
|
|
child: RoundedContainer(
|
|
|
|
|
backgroundColor:
|
|
|
|
|
BiometricType
|
|
|
|
|
.fingerprint
|
|
|
|
|
.index ==
|
|
|
|
|
1
|
|
|
|
|
? Colors.white
|
|
|
|
|
: Colors.white
|
|
|
|
|
.withOpacity(
|
|
|
|
|
.7),
|
|
|
|
|
borderColor: Colors.grey,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding:
|
|
|
|
|
EdgeInsets.fromLTRB(
|
|
|
|
|
25, 10, 25, 10),
|
|
|
|
|
child: Column(
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Image.asset(
|
|
|
|
|
'assets/images/login/102.png',
|
|
|
|
|
height: SizeConfig
|
|
|
|
|
.imageSizeMultiplier *
|
|
|
|
|
13,
|
|
|
|
|
width: SizeConfig
|
|
|
|
|
.imageSizeMultiplier *
|
|
|
|
|
16,
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
height: 20,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(
|
|
|
|
|
context)
|
|
|
|
|
.verifyFingerprint,
|
|
|
|
|
fontSize: SizeConfig
|
|
|
|
|
.textMultiplier *
|
|
|
|
|
2,
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
))))
|
|
|
|
|
Expanded(child: getButton(1)),
|
|
|
|
|
Expanded(child: getButton(4))
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
: SizedBox(),
|
|
|
|
|
Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Expanded(
|
|
|
|
|
child: InkWell(
|
|
|
|
|
onTap: () =>
|
|
|
|
|
{authenticateUser(1, true)},
|
|
|
|
|
child: RoundedContainer(
|
|
|
|
|
borderColor: Colors.grey,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: EdgeInsets.fromLTRB(
|
|
|
|
|
20, 10, 20, 10),
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment:
|
|
|
|
|
MainAxisAlignment
|
|
|
|
|
.center,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Image.asset(
|
|
|
|
|
'assets/images/login/103.png',
|
|
|
|
|
height: SizeConfig
|
|
|
|
|
.imageSizeMultiplier *
|
|
|
|
|
13,
|
|
|
|
|
width: SizeConfig
|
|
|
|
|
.imageSizeMultiplier *
|
|
|
|
|
16,
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
height: 20,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(
|
|
|
|
|
context)
|
|
|
|
|
.verifySMS,
|
|
|
|
|
fontSize: SizeConfig
|
|
|
|
|
.textMultiplier *
|
|
|
|
|
2,
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
)))),
|
|
|
|
|
Expanded(
|
|
|
|
|
child: InkWell(
|
|
|
|
|
onTap: () =>
|
|
|
|
|
{authenticateUser(4, true)},
|
|
|
|
|
child: RoundedContainer(
|
|
|
|
|
borderColor: Colors.grey,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: EdgeInsets.fromLTRB(
|
|
|
|
|
25, 10, 25, 10),
|
|
|
|
|
child: Column(
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Image.asset(
|
|
|
|
|
'assets/images/login/104.png',
|
|
|
|
|
height: SizeConfig
|
|
|
|
|
.imageSizeMultiplier *
|
|
|
|
|
13,
|
|
|
|
|
width: SizeConfig
|
|
|
|
|
.imageSizeMultiplier *
|
|
|
|
|
16,
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
height: 20,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(
|
|
|
|
|
context)
|
|
|
|
|
.verifyWhatsApp,
|
|
|
|
|
fontSize: SizeConfig
|
|
|
|
|
.textMultiplier *
|
|
|
|
|
2,
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
))))
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
]),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
]),
|
|
|
|
|
),
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 1,
|
|
|
|
|
child: Column(
|
|
|
|
@ -369,27 +288,50 @@ class _ConfirmLogin extends State<ConfirmLogin> {
|
|
|
|
|
|
|
|
|
|
loginWithSMS(type, isActive) {
|
|
|
|
|
//if (!el.disabled) {
|
|
|
|
|
if (this.user != null && this.registerd_data != null) {
|
|
|
|
|
if (this.user != null && this.registerd_data == null) {
|
|
|
|
|
this.checkUserAuthentication(type);
|
|
|
|
|
} else {
|
|
|
|
|
if (this.loginTokenID != null) {
|
|
|
|
|
this.sendActivationCode(type);
|
|
|
|
|
Future.delayed(Duration(seconds: 1), () {
|
|
|
|
|
this.sendActivationCode(type);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
this.checkUserAuthentication(type);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
checkUserAuthentication(type) {}
|
|
|
|
|
checkUserAuthentication(type) {
|
|
|
|
|
showLoader(true);
|
|
|
|
|
var req = getCommonRequest();
|
|
|
|
|
var request = CheckPatientAuthenticationReq.fromJson(req.toJson());
|
|
|
|
|
|
|
|
|
|
sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request);
|
|
|
|
|
authService.checkPatientAuthentication(request).then((value) => {
|
|
|
|
|
if (value['isSMSSent'])
|
|
|
|
|
{
|
|
|
|
|
sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']),
|
|
|
|
|
this.loginTokenID = value['LogInTokenID'],
|
|
|
|
|
sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request),
|
|
|
|
|
Future.delayed(Duration(seconds: 1), () {
|
|
|
|
|
this.sendActivationCode(type);
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (value['IsAuthenticated']) {this.checkActivationCode()}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sendActivationCode(type) {
|
|
|
|
|
var request = this.getCommonRequest();
|
|
|
|
|
loading(true);
|
|
|
|
|
this.authService.sendActivationCode(request).then((result) => {
|
|
|
|
|
if (result['isSMSSent'] == true)
|
|
|
|
|
if (result != null && result['isSMSSent'] == true)
|
|
|
|
|
{loading(false), this.startSMSService(type)}
|
|
|
|
|
else
|
|
|
|
|
{}
|
|
|
|
|
{loading(false)}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -457,30 +399,43 @@ class _ConfirmLogin extends State<ConfirmLogin> {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setUser() async {
|
|
|
|
|
user = SelectDeviceIMEIRES.fromJson(
|
|
|
|
|
await sharedPref.getObject(IMEI_USER_DATA));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setDefault() async {
|
|
|
|
|
// this.user = this.cs.sharedService.getSharedData(
|
|
|
|
|
// AuthenticationService.IMEI_USER_DATA,
|
|
|
|
|
// false
|
|
|
|
|
// );
|
|
|
|
|
this.registerd_data = CheckPatientAuthenticationReq.fromJson(
|
|
|
|
|
await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN));
|
|
|
|
|
setState(() {
|
|
|
|
|
setUser();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN) != null) {
|
|
|
|
|
this.registerd_data = CheckPatientAuthenticationReq.fromJson(
|
|
|
|
|
await sharedPref.getObject(REGISTER_DATA_FOR_LOGIIN));
|
|
|
|
|
}
|
|
|
|
|
this.mobileNumber = this.registerd_data != null
|
|
|
|
|
? this.registerd_data.patientMobileNumber
|
|
|
|
|
: int.parse(this.user.Mobile);
|
|
|
|
|
: int.parse(this.user.mobile);
|
|
|
|
|
this.zipCode = this.registerd_data != null
|
|
|
|
|
? this.registerd_data.zipCode
|
|
|
|
|
: this.user.OutSA ? "971" : "966";
|
|
|
|
|
: this.user.outSA == true ? "971" : "966";
|
|
|
|
|
this.patientOutSA = this.registerd_data != null
|
|
|
|
|
? this.registerd_data.zipCode == "966" ? 0 : 1
|
|
|
|
|
: this.user.OutSA;
|
|
|
|
|
: this.user.outSA;
|
|
|
|
|
if (this.registerd_data != null) {
|
|
|
|
|
this.loginTokenID = await sharedPref.getString(LOGIN_TOKEN_ID);
|
|
|
|
|
this.loginType = this.registerd_data.searchType;
|
|
|
|
|
}
|
|
|
|
|
this.deviceToken = await sharedPref.getString(PUSH_TOKEN);
|
|
|
|
|
this.lastLogin = await sharedPref.getInt(
|
|
|
|
|
LAST_LOGIN); //this.cs.sharedService.getStorage(AuthenticationService.LAST_LOGIN);
|
|
|
|
|
this.lastLogin = await sharedPref.getInt(LAST_LOGIN) != null
|
|
|
|
|
? await sharedPref.getInt(LAST_LOGIN)
|
|
|
|
|
: user.logInType;
|
|
|
|
|
|
|
|
|
|
//this.cs.sharedService.getStorage(AuthenticationService.LAST_LOGIN);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getCommonRequest() {
|
|
|
|
@ -488,42 +443,54 @@ class _ConfirmLogin extends State<ConfirmLogin> {
|
|
|
|
|
request.patientMobileNumber = this.mobileNumber;
|
|
|
|
|
request.mobileNo = '0' + this.mobileNumber.toString();
|
|
|
|
|
request.deviceToken = this.deviceToken;
|
|
|
|
|
request.projectOutSA = this.patientOutSA;
|
|
|
|
|
request.projectOutSA = this.patientOutSA == true ? 1 : 0;
|
|
|
|
|
request.loginType = this.selectedOption;
|
|
|
|
|
request.oTPSendType = this.selectedOption == 1 ? 1 : 2;
|
|
|
|
|
request.zipCode = this.zipCode;
|
|
|
|
|
request.isRegister = false;
|
|
|
|
|
request.logInTokenID = this.loginTokenID ?? "";
|
|
|
|
|
|
|
|
|
|
if (this.registerd_data != null) {
|
|
|
|
|
request.searchType = this.registerd_data.searchType == 1
|
|
|
|
|
? this.registerd_data.searchType
|
|
|
|
|
: 1;
|
|
|
|
|
request.patientID = this.registerd_data.patientID != 0
|
|
|
|
|
? this.registerd_data.patientID
|
|
|
|
|
: 0;
|
|
|
|
|
request.patientIdentificationID =
|
|
|
|
|
request.nationalID = this.registerd_data.patientIdentificationID;
|
|
|
|
|
request.searchType = this.registerd_data.searchType ?? 1;
|
|
|
|
|
request.patientID = this.registerd_data.patientID ?? 0;
|
|
|
|
|
request.patientIdentificationID = request.nationalID =
|
|
|
|
|
this.registerd_data.patientIdentificationID ?? '0';
|
|
|
|
|
} else {
|
|
|
|
|
request.searchType = request.searchType == 1 ? request.searchType : 2;
|
|
|
|
|
request.patientID = int.parse(this.user.PatientID);
|
|
|
|
|
request.patientID = request.nationalID =
|
|
|
|
|
request.nationalID != null ? request.nationalID : 0;
|
|
|
|
|
request.searchType = request.searchType ?? 2;
|
|
|
|
|
request.patientID = this.user.patientID ?? 0;
|
|
|
|
|
request.nationalID = request.nationalID ?? '0';
|
|
|
|
|
request.patientIdentificationID = request.patientIdentificationID ?? '0';
|
|
|
|
|
}
|
|
|
|
|
request.deviceTypeID = request.searchType;
|
|
|
|
|
return request;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
checkActivationCode({value}) {
|
|
|
|
|
SMSOTP.showLoadingDialog(context, true);
|
|
|
|
|
var request = this.getCommonRequest().toJson();
|
|
|
|
|
this.authService.checkActivationCode(request, value).then((result) => {
|
|
|
|
|
this.userData =
|
|
|
|
|
result.list, //AuthenticatedUser.fromJson(result['List'][0]),
|
|
|
|
|
this.sharedPref.setObject(USER_PROFILE, result.list),
|
|
|
|
|
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),
|
|
|
|
|
|
|
|
|
|
this.authService.checkActivationCode(request, value: value).then((result) =>
|
|
|
|
|
{
|
|
|
|
|
if (result != null)
|
|
|
|
|
{
|
|
|
|
|
result = CheckActivationCode.fromJson(result),
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
{
|
|
|
|
|
AppToast.showErrorToast(message: 'Please Enter Valid Code'),
|
|
|
|
|
Navigator.of(context).pop(),
|
|
|
|
|
SMSOTP.showLoadingDialog(context, false)
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -580,4 +547,185 @@ class _ConfirmLogin extends State<ConfirmLogin> {
|
|
|
|
|
isLoading = flag;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getButton(flag) {
|
|
|
|
|
switch (flag) {
|
|
|
|
|
case 4:
|
|
|
|
|
return InkWell(
|
|
|
|
|
onTap: () => {authenticateUser(4, true)},
|
|
|
|
|
child: RoundedContainer(
|
|
|
|
|
borderColor: Colors.grey,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: EdgeInsets.fromLTRB(25, 10, 25, 10),
|
|
|
|
|
child: Column(
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Image.asset(
|
|
|
|
|
'assets/images/login/104.png',
|
|
|
|
|
height: SizeConfig.imageSizeMultiplier * 13,
|
|
|
|
|
width: SizeConfig.imageSizeMultiplier * 16,
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
height: 20,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(context).verifyWhatsApp,
|
|
|
|
|
fontSize: SizeConfig.textMultiplier * 2,
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
)));
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
return InkWell(
|
|
|
|
|
onTap: () => {authenticateUser(1, true)},
|
|
|
|
|
child: RoundedContainer(
|
|
|
|
|
borderColor: Colors.grey,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: EdgeInsets.fromLTRB(20, 10, 20, 10),
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Image.asset(
|
|
|
|
|
'assets/images/login/103.png',
|
|
|
|
|
height: SizeConfig.imageSizeMultiplier * 13,
|
|
|
|
|
width: SizeConfig.imageSizeMultiplier * 16,
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
height: 20,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(context).verifySMS,
|
|
|
|
|
fontSize: SizeConfig.textMultiplier * 2,
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
)));
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
return InkWell(
|
|
|
|
|
onTap: () => {authenticateUser(2, BiometricType.fingerprint.index)},
|
|
|
|
|
child: RoundedContainer(
|
|
|
|
|
backgroundColor: BiometricType.fingerprint.index == 1
|
|
|
|
|
? Colors.white
|
|
|
|
|
: Colors.white.withOpacity(.7),
|
|
|
|
|
borderColor: Colors.grey,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: EdgeInsets.fromLTRB(25, 10, 25, 10),
|
|
|
|
|
child: Column(
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Image.asset(
|
|
|
|
|
'assets/images/login/102.png',
|
|
|
|
|
height: SizeConfig.imageSizeMultiplier * 13,
|
|
|
|
|
width: SizeConfig.imageSizeMultiplier * 16,
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
height: 20,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(context).verifyFingerprint,
|
|
|
|
|
fontSize: SizeConfig.textMultiplier * 2,
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
)));
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
return InkWell(
|
|
|
|
|
onTap: () => {authenticateUser(3, BiometricType.face.index)},
|
|
|
|
|
child: RoundedContainer(
|
|
|
|
|
backgroundColor: BiometricType.face.index == 1
|
|
|
|
|
? Colors.white
|
|
|
|
|
: Colors.white.withOpacity(.7),
|
|
|
|
|
borderColor: Colors.grey,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: EdgeInsets.fromLTRB(20, 10, 20, 10),
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Image.asset(
|
|
|
|
|
'assets/images/login/101.png',
|
|
|
|
|
height: SizeConfig.imageSizeMultiplier * 13,
|
|
|
|
|
width: SizeConfig.imageSizeMultiplier * 16,
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
height: 20,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(context).verifyFaceID,
|
|
|
|
|
fontSize: SizeConfig.textMultiplier * 2,
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
)));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
return InkWell(
|
|
|
|
|
onTap: () => {
|
|
|
|
|
setState(() {
|
|
|
|
|
isMoreOption = true;
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
child: RoundedContainer(
|
|
|
|
|
backgroundColor: BiometricType.fingerprint.index == 1
|
|
|
|
|
? Colors.white
|
|
|
|
|
: Colors.white.withOpacity(.7),
|
|
|
|
|
borderColor: Colors.grey,
|
|
|
|
|
showBorder: true,
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: EdgeInsets.fromLTRB(0, 10, 0, 5),
|
|
|
|
|
child: Column(
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Image.asset(
|
|
|
|
|
'assets/images/login/more_icon.png',
|
|
|
|
|
height: SizeConfig.imageSizeMultiplier * 13,
|
|
|
|
|
width: SizeConfig.imageSizeMultiplier * 16,
|
|
|
|
|
),
|
|
|
|
|
SizedBox(
|
|
|
|
|
height: 20,
|
|
|
|
|
),
|
|
|
|
|
AppText(
|
|
|
|
|
TranslationBase.of(context).moreVerification,
|
|
|
|
|
fontSize: SizeConfig.textMultiplier * 2,
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
)));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getType(type, context) {
|
|
|
|
|
switch (type) {
|
|
|
|
|
case 1:
|
|
|
|
|
return TranslationBase.of(context).verifySMS;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
return TranslationBase.of(context).verifyFingerprint;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
return TranslationBase.of(context).verifyFaceID;
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
return TranslationBase.of(context).verifyWhatsApp;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
return TranslationBase.of(context).verifySMS;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
formatDate(date) {
|
|
|
|
|
return DateFormat('MMM dd, yyy, kk:mm').format(date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
showLoader(bool isTrue) {
|
|
|
|
|
setState(() {
|
|
|
|
|
isLoading = isTrue;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|