Conflicts:
	lib/client/base_app_client.dart
pull/197/head
Elham Rababah 4 years ago
commit 74d315b887

@ -61,8 +61,9 @@ class BaseAppClient {
body['SessionID'] = SESSION_ID;
body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP;
body['PatientOutSA'] = 0; // PATIENT_OUT_SA;
body['VidaAuthTokenID'] =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMDAyIiwianRpIjoiOGUxMWI1ZGItNTE5Mi00NmIzLWIzMDAtNDMwYjZmNDI4YWExIiwiZW1haWwiOiIiLCJpZCI6IjEwMDIiLCJOYW1lIjoiVEVNUCAtIERPQ1RPUiIsIkVtcGxveWVlSWQiOiI0NzA5IiwiRmFjaWxpdHlHcm91cElkIjoiMDEwMjY2IiwiRmFjaWxpdHlJZCI6IjE1IiwiUGhhcmFtY3lGYWNpbGl0eUlkIjoiNTUiLCJJU19QSEFSTUFDWV9DT05ORUNURUQiOiJUcnVlIiwiRG9jdG9ySWQiOiI0NzA5IiwiU0VTU0lPTklEIjoiMjE1OTU3MjgiLCJDbGluaWNJZCI6IjEiLCJyb2xlIjpbIkRPQ1RPUlMiLCJIRUFEIERPQ1RPUlMiLCJBRE1JTklTVFJBVE9SUyIsIlJFQ0VQVElPTklTVCIsIkVSIE5VUlNFIiwiRVIgUkVDRVBUSU9OSVNUIiwiUEhBUk1BQ1kgQUNDT1VOVCBTVEFGRiIsIlBIQVJNQUNZIE5VUlNFIiwiSU5QQVRJRU5UIFBIQVJNQUNJU1QiLCJBRE1JU1NJT04gU1RBRkYiLCJBUFBST1ZBTCBTVEFGRiIsIkNPTlNFTlQgIiwiTUVESUNBTCBSRVBPUlQgLSBTSUNLIExFQVZFIE1BTkFHRVIiXSwibmJmIjoxNjA4ODE0MDcyLCJleHAiOjE2MDk2NzgwNzIsImlhdCI6MTYwODgxNDA3Mn0.u23f3ifrNMQrK0ReTZWs9olaZCEYuf06ZZZJsBWJ5LI";
body['VidaAuthTokenID'] = await sharedPref.getString(VIDA_AUTH_TOKEN_ID);
body['VidaRefreshTokenID'] = await sharedPref.getString(VIDA_REFRESH_TOKEN_ID);
print("URL : $url");
print("Body : ${json.encode(body)}");

@ -73,8 +73,16 @@ const SELECT_DEVICE_IMEI =
const SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE =
'Services/Sentry.svc/REST/DoctorApplication_SendActivationCodebyOTPNotificationType';
const SEND_ACTIVATION_CODE_FOR_DOCTOR_APP =
'Services/DoctorApplication.svc/REST/SendActivationCodeForDoctorApp';
const MEMBER_CHECK_ACTIVATION_CODE_NEW =
'Services/Sentry.svc/REST/MemberCheckActivationCode_New';
const CHECK_ACTIVATION_CODE_FOR_DOCTOR_APP =
'Services/DoctorApplication.svc/REST/CheckActivationCodeForDoctorApp';
const GET_DOC_PROFILES = 'Services/Doctors.svc/REST/GetDocProfiles';
const TRANSFERT_TO_ADMIN = 'LiveCareApi/DoctorApp/TransferToAdmin';
const END_CALL = 'LiveCareApi/DoctorApp/EndCall';

@ -1,8 +1,9 @@
final TOKEN = 'token';
final PROJECT_ID = 'projectID';
//===========amjad============
final VIDA_AUTH_TOKEN_ID = 'VidaAuthTokenID';
final VIDA_REFRESH_TOKEN_ID = 'VidaRefreshTokenID';
final LOGIN_TOKEN_ID = 'LogInToken';
final DOCTOR_ID = 'doctorID';
//=======================
final SLECTED_PATIENT_TYPE = 'slectedPatientType';
final APP_Language = 'language';
final DOCTOR_PROFILE = 'doctorProfile';

@ -1,4 +1,6 @@
import 'package:doctor_app_flutter/client/base_app_client.dart';
import 'package:doctor_app_flutter/models/auth/activation_Code_req_model.dart';
import 'package:doctor_app_flutter/models/auth/check_activation_code_request_model.dart';
import 'package:doctor_app_flutter/models/doctor/clinic_model.dart';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
@ -119,6 +121,22 @@ class AuthViewModel with ChangeNotifier {
}
}
Future sendActivationCodeForDoctorApp(ActivationCodeModel activationCodeModel) async {
try {
var localRes;
await baseAppClient.post(SEND_ACTIVATION_CODE_FOR_DOCTOR_APP,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
}, onFailure: (String error, int statusCode) {
throw error;
}, body: activationCodeModel.toJson());
return Future.value(localRes);
} catch (error) {
print(error);
throw error;
}
}
Future<dynamic> memberCheckActivationCodeNew(activationCodeModel) async {
try {
dynamic localRes;
@ -141,6 +159,29 @@ class AuthViewModel with ChangeNotifier {
}
}
Future<dynamic> checkActivationCodeForDoctorApp(CheckActivationCodeRequestModel checkActivationCodeRequestModel) async {
try {
dynamic localRes;
await baseAppClient.post(CHECK_ACTIVATION_CODE_FOR_DOCTOR_APP,
onSuccess: (dynamic response, int statusCode) {
localRes = response;
selectedClinicName =
ClinicModel.fromJson(response['List_DoctorsClinic'][0]).clinicName;
response['List_DoctorsClinic'].forEach((v) {
doctorsClinicList.add(new ClinicModel.fromJson(v));
});
}, onFailure: (String error, int statusCode) {
throw error;
}, body: checkActivationCodeRequestModel.toJson());
return Future.value(localRes);
} catch (error) {
print(error);
throw error;
}
}
/*
*@author: Elham Rababah
*@Date:17/5/2020

@ -69,7 +69,7 @@ class ProjectViewModel with ChangeNotifier {
sharedPref.setString(APP_Language, 'ar');
} else if (lan != "ar" && currentLanguage != lan) {
_appLocale = Locale("en");
_isArabic = false;
_isArabic = false;
currentLanguage = 'en';
sharedPref.setString(APP_Language, 'en');
}

@ -0,0 +1,48 @@
class ActivationCodeModel {
String mobileNumber;
String zipCode;
int channel;
int languageID;
double versionID;
int memberID;
String password;
int facilityId;
String generalid;
ActivationCodeModel(
{this.mobileNumber,
this.zipCode,
this.channel,
this.languageID,
this.versionID,
this.memberID,
this.password,
this.facilityId,
this.generalid});
ActivationCodeModel.fromJson(Map<String, dynamic> json) {
mobileNumber = json['MobileNumber'];
zipCode = json['ZipCode'];
channel = json['Channel'];
languageID = json['LanguageID'];
versionID = json['VersionID'];
memberID = json['MemberID'];
password = json['Password'];
facilityId = json['facilityId'];
generalid = json['generalid'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['MobileNumber'] = this.mobileNumber;
data['ZipCode'] = this.zipCode;
data['Channel'] = this.channel;
data['LanguageID'] = this.languageID;
data['VersionID'] = this.versionID;
data['MemberID'] = this.memberID;
data['Password'] = this.password;
data['facilityId'] = this.facilityId;
data['generalid'] = this.generalid;
return data;
}
}

@ -0,0 +1,64 @@
class CheckActivationCodeRequestModel {
String mobileNumber;
String zipCode;
int doctorID;
String iPAdress;
int channel;
int languageID;
int projectID;
double versionID;
String generalid;
String logInTokenID;
String activationCode;
String vidaAuthTokenID;
String vidaRefreshTokenID;
CheckActivationCodeRequestModel(
{this.mobileNumber,
this.zipCode,
this.doctorID,
this.iPAdress,
this.channel,
this.languageID,
this.projectID,
this.versionID,
this.generalid,
this.logInTokenID,
this.activationCode,
this.vidaAuthTokenID,
this.vidaRefreshTokenID});
CheckActivationCodeRequestModel.fromJson(Map<String, dynamic> json) {
mobileNumber = json['MobileNumber'];
zipCode = json['ZipCode'];
doctorID = json['DoctorID'];
iPAdress = json['IPAdress'];
channel = json['Channel'];
languageID = json['LanguageID'];
projectID = json['ProjectID'];
versionID = json['VersionID'];
generalid = json['generalid'];
logInTokenID = json['LogInTokenID'];
activationCode = json['activationCode'];
vidaAuthTokenID = json['VidaAuthTokenID'];
vidaRefreshTokenID = json['VidaRefreshTokenID'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['MobileNumber'] = this.mobileNumber;
data['ZipCode'] = this.zipCode;
data['DoctorID'] = this.doctorID;
data['IPAdress'] = this.iPAdress;
data['Channel'] = this.channel;
data['LanguageID'] = this.languageID;
data['ProjectID'] = this.projectID;
data['VersionID'] = this.versionID;
data['generalid'] = this.generalid;
data['LogInTokenID'] = this.logInTokenID;
data['activationCode'] = this.activationCode;
data['VidaAuthTokenID'] = this.vidaAuthTokenID;
data['VidaRefreshTokenID'] = this.vidaRefreshTokenID;
return data;
}
}

@ -13,9 +13,13 @@ import '../../widgets/auth/verification_methods.dart';
*@desc: Verification Methods screen
*/
class VerificationMethodsScreen extends StatefulWidget {
const VerificationMethodsScreen({Key key, this.password}) : super(key: key);
@override
_VerificationMethodsScreenState createState() =>
_VerificationMethodsScreenState();
final password;
}
class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
@ -47,6 +51,7 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
children: <Widget>[
AuthHeader(loginType.verificationMethods),
VerificationMethods(
password: widget.password,
changeLoadingStata: changeLoadingStata,
),
],

@ -1,4 +1,5 @@
import 'package:doctor_app_flutter/lookups/hospital_lookup.dart';
import 'package:doctor_app_flutter/screens/auth/verification_methods_screen.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
@ -224,10 +225,6 @@ class _LoginFormState extends State<LoginForm> {
login(context, AuthViewModel authProv, Function changeLoadingStata) {
FocusScopeNode currentFocus = FocusScope.of(context);
// if (!currentFocus.hasPrimaryFocus) {
// currentFocus.unfocus();
// }
changeLoadingStata(true);
if (loginFormKey.currentState.validate()) {
loginFormKey.currentState.save();
@ -240,14 +237,11 @@ class _LoginFormState extends State<LoginForm> {
saveObjToString(LOGGED_IN_USER, res);
sharedPref.setString(TOKEN, res['LogInTokenID']);
print("token" + res['LogInTokenID']);
Navigator.of(context).pushReplacementNamed(VERIFICATION_METHODS);
Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (BuildContext context) => VerificationMethodsScreen(password: userInfo.password,)));
} else {
// handel error
// widget.showCenterShortLoadingToast("watting");
helpers.showErrorToast(res['ErrorEndUserMessage']);
}
// Navigator.of(context).pushNamed(HOME);
}).catchError((err) {
print('$err');
changeLoadingStata(false);
@ -279,7 +273,8 @@ class _LoginFormState extends State<LoginForm> {
if (res['MessageStatus'] == 1) {
setSharedPref('platformImei', _platformImei);
saveObjToString(LOGGED_IN_USER, preRes);
Navigator.of(context).pushNamed(VERIFICATION_METHODS);
Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (BuildContext context) => VerificationMethodsScreen(password: userInfo.password,)));
// save imei on shared preferance
} else {
// handel error

@ -1,6 +1,7 @@
import 'dart:async';
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/auth/check_activation_code_request_model.dart';
import 'package:doctor_app_flutter/models/doctor/clinic_model.dart';
import 'package:doctor_app_flutter/models/doctor/doctor_profile_model.dart';
import 'package:doctor_app_flutter/models/doctor/profile_req_Model.dart';
@ -362,8 +363,17 @@ class _VerifyAccountState extends State<VerifyAccount> {
"IsLoginForDoctorApp": true,
"IsSilentLogIN": false
};
CheckActivationCodeRequestModel checkActivationCodeForDoctorApp = new CheckActivationCodeRequestModel(
zipCode: _loggedUser['ZipCode'],
mobileNumber: _loggedUser['MobileNumber'],
projectID: await sharedPref.getInt(PROJECT_ID),
logInTokenID: await sharedPref.getString(LOGIN_TOKEN_ID),
activationCode: activationCode,
generalid: "Cs2020@2016\$2958"
);
authProv.memberCheckActivationCodeNew(model).then((res) async{
authProv.checkActivationCodeForDoctorApp(checkActivationCodeForDoctorApp)
.then((res) async {
if (res['MessageStatus'] == 1) {
sharedPref.setString(TOKEN, res['AuthenticationTokenID']);
if (res['List_DoctorProfile'] != null) {
@ -371,7 +381,7 @@ class _VerifyAccountState extends State<VerifyAccount> {
res['List_DoctorProfile'][0], changeLoadingStata);
} else {
ClinicModel clinic =
ClinicModel.fromJson(res['List_DoctorsClinic'][0]);
ClinicModel.fromJson(res['List_DoctorsClinic'][0]);
getDocProfiles(clinic, changeLoadingStata);
}
} else {

@ -1,6 +1,9 @@
import 'dart:io' show Platform;
import 'package:doctor_app_flutter/config/shared_pref_kay.dart';
import 'package:doctor_app_flutter/models/auth/activation_Code_req_model.dart';
import 'package:doctor_app_flutter/screens/auth/verification_methods_screen.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:provider/provider.dart';
@ -11,7 +14,6 @@ import '../../routes.dart';
import '../../util/dr_app_shared_pref.dart';
import '../../util/helpers.dart';
import '../../widgets/shared/dr_app_circular_progress_Indeicator.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
DrAppSharedPreferances sharedPref = new DrAppSharedPreferances();
Helpers helpers = Helpers();
@ -24,8 +26,11 @@ Helpers helpers = Helpers();
*@desc: Verification Methods widget
*/
class VerificationMethods extends StatefulWidget {
VerificationMethods({this.changeLoadingStata});
VerificationMethods({this.changeLoadingStata, this.password});
final password;
final Function changeLoadingStata;
@override
_VerificationMethodsState createState() => _VerificationMethodsState();
}
@ -262,45 +267,63 @@ class _VerificationMethodsState extends State<VerificationMethods> {
*@return:
*@desc: send Activation Code By Otp Notification Type
*/
sendActivationCodeByOtpNotificationType(oTPSendType, AuthViewModel authProv) {
sendActivationCodeByOtpNotificationType(oTPSendType, AuthViewModel authProv) async {
// TODO : build enum for verfication method
if (oTPSendType == 1 || oTPSendType == 2) {
widget.changeLoadingStata(true);
int projectID = await sharedPref.getInt(PROJECT_ID);
ActivationCodeModel activationCodeModel = ActivationCodeModel(
facilityId: projectID,
generalid: "Cs2020@2016\$2958",
memberID: _loggedUser['List_MemberInformation'][0]['MemberID'],
zipCode: _loggedUser['ZipCode'],
mobileNumber: _loggedUser['MobileNumber'],
password: widget.password);
Map<String, dynamic> model = {
"LogInTokenID": _loggedUser['LogInTokenID'],
"Channel": 9,
"MobileNumber": _loggedUser['MobileNumber'],
"IPAdress": "11.11.11.11",
"LanguageID": 2,
"ProjectID": 15, //TODO : this should become daynamci
"ZipCode": _loggedUser['ZipCode'],
"UserName": _loggedUser['List_MemberInformation'][0]['MemberID'],
"OTP_SendType": oTPSendType
};
authProv.sendActivationCodeByOtpNotificationType(model).then((res) {
widget.changeLoadingStata(false);
if (res['MessageStatus'] == 1) {
Navigator.of(context).pushReplacementNamed(VERIFY_ACCOUNT,
arguments: {'model': model});
} else {
print(res['ErrorEndUserMessage']);
helpers.showErrorToast(res['ErrorEndUserMessage']);
}
}).catchError((err) {
print('$err');
widget.changeLoadingStata(false);
try {
authProv
.sendActivationCodeForDoctorApp(activationCodeModel)
.then((res) {
widget.changeLoadingStata(false);
if (res['MessageStatus'] == 1) {
print("VerificationCode : "+ res["VerificationCode"]);
sharedPref.setString(VIDA_AUTH_TOKEN_ID, res["VidaAuthTokenID"]);
sharedPref.setString(VIDA_REFRESH_TOKEN_ID, res["VidaRefreshTokenID"]);
sharedPref.setString(LOGIN_TOKEN_ID, res["LogInTokenID"]);
Navigator.of(context).pushReplacementNamed(VERIFY_ACCOUNT,
arguments: {'model': model});
} else {
print(res['ErrorEndUserMessage']);
helpers.showErrorToast(res['ErrorEndUserMessage']);
}
})
.catchError((err) {
print('$err');
widget.changeLoadingStata(false);
helpers.showErrorToast();
});
} catch (e) {}
helpers.showErrorToast();
});
} else {
// TODO route to this page with parameters to inicate we should present 2 option
if (Platform.isAndroid && oTPSendType == 3) {
helpers.showErrorToast('Your device not support this feature');
} else {
Navigator.of(context).pushNamed(VERIFICATION_METHODS,
arguments: {'verificationMethod': oTPSendType});
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) =>
VerificationMethodsScreen(password: widget.password,)));
// Navigator.of(context).pushNamed(VERIFICATION_METHODS,
// arguments: {'verificationMethod': oTPSendType});
}
}
}

Loading…
Cancel
Save