|
|
|
@ -11,18 +11,19 @@ import 'package:diplomaticquarterapp/pages/rateAppointment/rate_appointment_doct
|
|
|
|
|
import 'package:diplomaticquarterapp/routes.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/gif_loader_dialog_utils.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/utils.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:smart_progress_bar/smart_progress_bar.dart';
|
|
|
|
|
|
|
|
|
|
class Login extends StatefulWidget {
|
|
|
|
|
@override
|
|
|
|
|
_Login createState() => _Login();
|
|
|
|
@ -41,8 +42,8 @@ class _Login extends State<Login> {
|
|
|
|
|
AppointmentRateViewModel appointmentRateViewModel =
|
|
|
|
|
locator<AppointmentRateViewModel>();
|
|
|
|
|
|
|
|
|
|
AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>();
|
|
|
|
|
|
|
|
|
|
AuthenticatedUserObject authenticatedUserObject =
|
|
|
|
|
locator<AuthenticatedUserObject>();
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void initState() {
|
|
|
|
@ -62,70 +63,69 @@ class _Login extends State<Login> {
|
|
|
|
|
appBarTitle: TranslationBase.of(context).login,
|
|
|
|
|
isShowAppBar: true,
|
|
|
|
|
isShowDecPage: false,
|
|
|
|
|
body: SingleChildScrollView(
|
|
|
|
|
child: Container(
|
|
|
|
|
padding:
|
|
|
|
|
EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30),
|
|
|
|
|
height: SizeConfig.realScreenHeight * .9,
|
|
|
|
|
width: SizeConfig.realScreenWidth,
|
|
|
|
|
child: Column(children: <Widget>[
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 2,
|
|
|
|
|
child: AppText(
|
|
|
|
|
TranslationBase.of(context).enterNationalId,
|
|
|
|
|
fontSize: SizeConfig.textMultiplier * 3.5,
|
|
|
|
|
textAlign: TextAlign.start,
|
|
|
|
|
)),
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 3,
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
|
|
|
body: SingleChildScrollView(
|
|
|
|
|
child: Container(
|
|
|
|
|
padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30),
|
|
|
|
|
height: SizeConfig.realScreenHeight * .9,
|
|
|
|
|
width: SizeConfig.realScreenWidth,
|
|
|
|
|
child: Column(children: <Widget>[
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 2,
|
|
|
|
|
child: AppText(
|
|
|
|
|
TranslationBase.of(context).enterNationalId,
|
|
|
|
|
fontSize: SizeConfig.textMultiplier * 3.5,
|
|
|
|
|
textAlign: TextAlign.start,
|
|
|
|
|
)),
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 3,
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
MobileNo(
|
|
|
|
|
onNumberChange: (value) =>
|
|
|
|
|
{mobileNo = value, validateForm()},
|
|
|
|
|
onCountryChange: (value) => countryCode = value),
|
|
|
|
|
Container(
|
|
|
|
|
child: TextFields(
|
|
|
|
|
fontWeight: FontWeight.normal,
|
|
|
|
|
controller: nationalIDorFile,
|
|
|
|
|
onChanged: (value) => {validateForm()},
|
|
|
|
|
prefixIcon: Icon(
|
|
|
|
|
loginType == 1
|
|
|
|
|
? Icons.chrome_reader_mode
|
|
|
|
|
: Icons.receipt,
|
|
|
|
|
color: Color(0xFF40ACC9)),
|
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
|
top: 20, bottom: 20, left: 10, right: 10),
|
|
|
|
|
hintText: loginType == 1
|
|
|
|
|
? TranslationBase.of(context).nationalID
|
|
|
|
|
: TranslationBase.of(context).fileNo,
|
|
|
|
|
))
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 3,
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.end,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Row(
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
MobileNo(
|
|
|
|
|
onNumberChange: (value) =>
|
|
|
|
|
{mobileNo = value, validateForm()},
|
|
|
|
|
onCountryChange: (value) => countryCode = value),
|
|
|
|
|
Container(
|
|
|
|
|
child: TextFields(
|
|
|
|
|
fontWeight: FontWeight.normal,
|
|
|
|
|
controller: nationalIDorFile,
|
|
|
|
|
onChanged: (value) => {validateForm()},
|
|
|
|
|
prefixIcon: Icon(
|
|
|
|
|
loginType == 1
|
|
|
|
|
? Icons.chrome_reader_mode
|
|
|
|
|
: Icons.receipt,
|
|
|
|
|
color: Color(0xFF40ACC9)),
|
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
|
top: 20, bottom: 20, left: 10, right: 10),
|
|
|
|
|
hintText: loginType == 1
|
|
|
|
|
? TranslationBase.of(context).nationalID
|
|
|
|
|
: TranslationBase.of(context).fileNo,
|
|
|
|
|
Expanded(
|
|
|
|
|
child: DefaultButton(
|
|
|
|
|
TranslationBase.of(context).login,
|
|
|
|
|
() => {this.startLogin()},
|
|
|
|
|
color: isButtonDisabled == true
|
|
|
|
|
? Colors.grey
|
|
|
|
|
: Colors.grey[900],
|
|
|
|
|
textColor: Colors.white,
|
|
|
|
|
))
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
Expanded(
|
|
|
|
|
flex: 3,
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.end,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Row(
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Expanded(
|
|
|
|
|
child: DefaultButton(
|
|
|
|
|
TranslationBase.of(context).login,
|
|
|
|
|
() => {this.startLogin()},
|
|
|
|
|
color: isButtonDisabled == true
|
|
|
|
|
? Colors.grey
|
|
|
|
|
: Colors.grey[900],
|
|
|
|
|
textColor: Colors.white,
|
|
|
|
|
))
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
))
|
|
|
|
|
]),
|
|
|
|
|
)));
|
|
|
|
|
],
|
|
|
|
|
))
|
|
|
|
|
]),
|
|
|
|
|
)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
startLogin() {
|
|
|
|
@ -150,7 +150,8 @@ class _Login extends State<Login> {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
checkUserAuthentication() {
|
|
|
|
|
// showLoader(true);
|
|
|
|
|
// showLoader(true);
|
|
|
|
|
GifLoaderDialogUtils.showMyDialog(context);
|
|
|
|
|
var request = CheckPatientAuthenticationReq();
|
|
|
|
|
request.isRegister = false;
|
|
|
|
|
request.patientMobileNumber = int.parse(mobileNo);
|
|
|
|
@ -165,23 +166,27 @@ class _Login extends State<Login> {
|
|
|
|
|
request.patientID = int.parse(nationalIDorFile.text);
|
|
|
|
|
}
|
|
|
|
|
sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request);
|
|
|
|
|
authService.checkPatientAuthentication(request).then((value) => {
|
|
|
|
|
//showLoader(false),
|
|
|
|
|
if (value['isSMSSent'])
|
|
|
|
|
{
|
|
|
|
|
sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']),
|
|
|
|
|
sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request),
|
|
|
|
|
Navigator.of(context).pushNamed(CONFIRM_LOGIN)
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (value['IsAuthenticated']) {this.checkActivationCode()}
|
|
|
|
|
}
|
|
|
|
|
}).catchError((err) {
|
|
|
|
|
authService
|
|
|
|
|
.checkPatientAuthentication(request)
|
|
|
|
|
.then((value) => {
|
|
|
|
|
//showLoader(false),
|
|
|
|
|
GifLoaderDialogUtils.hideDialog(context),
|
|
|
|
|
if (value['isSMSSent'])
|
|
|
|
|
{
|
|
|
|
|
sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']),
|
|
|
|
|
sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request),
|
|
|
|
|
Navigator.of(context).pushNamed(CONFIRM_LOGIN)
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (value['IsAuthenticated']) {this.checkActivationCode()}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.catchError((err) {
|
|
|
|
|
GifLoaderDialogUtils.hideDialog(context);
|
|
|
|
|
print(err);
|
|
|
|
|
}).showProgressBar(
|
|
|
|
|
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
|
|
|
|
|
// SMSOTP.showLoadingDialog(context, false),
|
|
|
|
|
AppToast.showErrorToast(message: err);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
checkActivationCode({code}) async {
|
|
|
|
@ -191,7 +196,7 @@ class _Login extends State<Login> {
|
|
|
|
|
// request.isSilentLogin = code != null ? false : true;
|
|
|
|
|
if (code == null)
|
|
|
|
|
//showLoader(true);
|
|
|
|
|
request['PatientMobileNumber'] = int.parse(mobileNo);
|
|
|
|
|
request['PatientMobileNumber'] = int.parse(mobileNo);
|
|
|
|
|
request['ZipCode'] = countryCode;
|
|
|
|
|
request['SearchType'] = loginType;
|
|
|
|
|
request['LoginType'] = loginType;
|
|
|
|
@ -202,13 +207,15 @@ class _Login extends State<Login> {
|
|
|
|
|
request['PatientIdentificationID'] = '';
|
|
|
|
|
request['PatientID'] = int.parse(nationalIDorFile.text);
|
|
|
|
|
}
|
|
|
|
|
GifLoaderDialogUtils.showMyDialog(context);
|
|
|
|
|
// request.isRegister = false;
|
|
|
|
|
this.authService.checkActivationCode(request, code).then((result) => {
|
|
|
|
|
result = CheckActivationCode.fromJson(result),
|
|
|
|
|
authenticatedUserObject.getUser(),
|
|
|
|
|
authenticatedUserObject.getUser(),
|
|
|
|
|
this.sharedPref.setObject(USER_PROFILE, result.list),
|
|
|
|
|
this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID),
|
|
|
|
|
this.sharedPref.setString(TOKEN, result.authenticationTokenID),
|
|
|
|
|
GifLoaderDialogUtils.hideDialog(context),
|
|
|
|
|
//this.checkIfUserAgreedBefore(result),
|
|
|
|
|
Navigator.of(context).pushNamed(
|
|
|
|
|
HOME,
|
|
|
|
@ -235,17 +242,18 @@ class _Login extends State<Login> {
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}).catchError((err) {
|
|
|
|
|
print(err);
|
|
|
|
|
}).showProgressBar(
|
|
|
|
|
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6))
|
|
|
|
|
// SMSOTP.showLoadingDialog(context, false),
|
|
|
|
|
})
|
|
|
|
|
.catchError((err) {
|
|
|
|
|
GifLoaderDialogUtils.hideDialog(context);
|
|
|
|
|
print(err);
|
|
|
|
|
AppToast.showErrorToast(message: err);
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// showLoader(bool isTrue) {
|
|
|
|
|
// setState(() {
|
|
|
|
|
// isLoading = isTrue;
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// showLoader(bool isTrue) {
|
|
|
|
|
// setState(() {
|
|
|
|
|
// isLoading = isTrue;
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|