import 'package:doctor_app_flutter/client/base_app_client.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/util/dr_app_shared_pref.dart'; import 'package:flutter/cupertino.dart'; import '../models/doctor/user_model.dart'; const LOGIN_URL = 'Services/Sentry.svc/REST/MemberLogIN_New'; const INSERT_DEVICE_IMEI = 'Services/Sentry.svc/REST/DoctorApplication_INSERTDeviceIMEI'; const SELECT_DEVICE_IMEI = 'Services/Sentry.svc/REST/DoctorApplication_SELECTDeviceIMEIbyIMEI'; const SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE = 'Services/Sentry.svc/REST/DoctorApplication_SendActivationCodebyOTPNotificationType'; const MEMBER_CHECK_ACTIVATION_CODE_NEW = 'Services/Sentry.svc/REST/MemberCheckActivationCode_New'; const GET_DOC_PROFILES = 'Services/Doctors.svc/REST/GetDocProfiles'; const GET_CLINICS_FOR_DOCTOR = 'Services/DoctorApplication.svc/REST/GetClinicsForDoctor'; DrAppSharedPreferances sharedPref = new DrAppSharedPreferances(); enum APP_STATUS { LOADING, UNAUTHENTICATED, AUTHENTICATED } class AuthProvider with ChangeNotifier { List doctorsClinicList = []; String selectedClinicName; bool isLogin = false; bool isLoading = true; AuthProvider() { getUserAuthentication(); } void getUserAuthentication() async { Map profile = await sharedPref.getObj(DOCTOR_PROFILE); if (profile != null) { isLoading = false; isLogin = true; } else { isLoading = false; isLogin = false; } notifyListeners(); } APP_STATUS get stutas { if (isLoading) { return APP_STATUS.LOADING; } else { if (this.isLogin) { return APP_STATUS.AUTHENTICATED; } else { return APP_STATUS.UNAUTHENTICATED; } } } Future login(UserModel userInfo) async { try { dynamic localRes; await BaseAppClient.post(LOGIN_URL, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { throw error; }, body: { "UserID": userInfo.UserID, "Password": userInfo.Password, "ProjectID": userInfo.ProjectID, "LanguageID": userInfo.LanguageID, "IPAdress": userInfo.IPAdress, "VersionID": userInfo.VersionID, "Channel": userInfo.Channel, "SessionID": userInfo.SessionID }); return Future.value(localRes); } catch (error) { print(error); throw error; } } Future insertDeviceImei(imei) async { try { dynamic localRes; await BaseAppClient.post(INSERT_DEVICE_IMEI, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { throw error; }, body: imei); return Future.value(localRes); } catch (error) { print(error); throw error; } } Future selectDeviceImei(imei) async { try { dynamic localRes; await BaseAppClient.post(SELECT_DEVICE_IMEI, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { throw error; }, body: imei); return Future.value(localRes); } catch (error) { print(error); throw error; } } Future sendActivationCodeByOtpNotificationType(activationCodeModel) async { try { var localRes; await BaseAppClient.post(SEND_ACTIVATION_CODE_BY_OTP_NOTIFICATION_TYPE, onSuccess: (dynamic response, int statusCode) { localRes = response; }, onFailure: (String error, int statusCode) { throw error; }, body: activationCodeModel); return Future.value(localRes); } catch (error) { print(error); throw error; } } Future memberCheckActivationCodeNew(activationCodeModel) async { try { dynamic localRes; await BaseAppClient.post(MEMBER_CHECK_ACTIVATION_CODE_NEW, onSuccess: (dynamic response, int statusCode) { localRes = response; selectedClinicName = ClinicModel.fromJson(response['List_DoctorsClinic'][0]).clinicName; notifyListeners(); response['List_DoctorsClinic'].forEach((v) { doctorsClinicList.add(new ClinicModel.fromJson(v)); }); }, onFailure: (String error, int statusCode) { throw error; }, body: activationCodeModel); return Future.value(localRes); } catch (error) { print(error); throw error; } } /* *@author: Elham Rababah *@Date:17/5/2020 *@param: docInfo *@return:Future *@desc: getDocProfiles */ Future getDocProfiles(docInfo) async { try { dynamic localRes; await BaseAppClient.post(GET_DOC_PROFILES, onSuccess: (dynamic response, int statusCode) { localRes = response; //ClinicDescription selectedClinicName = response['DoctorProfileList'][0]['ClinicDescription']; }, onFailure: (String error, int statusCode) { throw error; }, body: docInfo); notifyListeners(); return Future.value(localRes); } catch (error) { print(error); throw error; } } }