diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 5465ce3..4432737 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -1,4 +1,6 @@ import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:auto_size_text/auto_size_text.dart'; @@ -365,7 +367,8 @@ extension DynamicTextStyleExtension on BuildContext { TextBaseline? textBaseline, FontStyle? fontStyle, bool isLanguageSwitcher = false}) { - final family = FontUtils.getFontFamilyForLanguage(true); + AppState appState = getIt.get(); + final family = appState.getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'; return TextStyle( fontFamily: family, fontSize: fontSize, diff --git a/lib/features/authentication/authentication_repo.dart b/lib/features/authentication/authentication_repo.dart index a02ef70..c2a49bf 100644 --- a/lib/features/authentication/authentication_repo.dart +++ b/lib/features/authentication/authentication_repo.dart @@ -6,6 +6,7 @@ import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; import 'package:hmg_patient_app_new/core/common_models/privilege/PrivilegeModel.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; import 'package:hmg_patient_app_new/features/authentication/models/request_models/check_activation_code_register_request_model.dart'; import 'package:hmg_patient_app_new/features/authentication/models/resp_models/select_device_by_imei.dart'; @@ -21,7 +22,7 @@ abstract class AuthenticationRepo { Future>> sendActivationCodeRepo({required dynamic sendActivationCodeReq, String? languageID, bool isRegister = false, bool isFormFamilyFile = false}); Future>> checkActivationCodeRepo( - {required dynamic newRequest, required String? activationCode, required bool isRegister, bool isFormFamilyFile = false, int? patientShareRequestID, int? responseID}); + {required dynamic newRequest, required String? activationCode, required bool isRegister, bool isFormFamilyFile = false, int? patientShareRequestID, int? responseID, String? familyFileTokenID}); Future>> checkIfUserAgreed({required dynamic commonAuthanticatedRequest}); @@ -176,14 +177,14 @@ class AuthenticationRepoImp implements AuthenticationRepo { } @override - Future>> checkActivationCodeRepo({ - required dynamic newRequest, // could be CheckActivationCodeReq or CheckActivationCodeRegisterReq - required String? activationCode, - required bool isRegister, - bool isFormFamilyFile = false, - int? patientShareRequestID, - int? responseID, - }) async { + Future>> checkActivationCodeRepo( + {required dynamic newRequest, // could be CheckActivationCodeReq or CheckActivationCodeRegisterReq + required String? activationCode, + required bool isRegister, + bool isFormFamilyFile = false, + int? patientShareRequestID, + int? responseID, + String? familyFileTokenID}) async { if (isRegister) { newRequest["activationCode"] = activationCode ?? "0000"; newRequest["isSilentLogin"] = activationCode != null ? false : true; @@ -197,11 +198,13 @@ class AuthenticationRepoImp implements AuthenticationRepo { } Map familyRequest = {}; if (isFormFamilyFile) { + AppState appState = getIt.get(); familyRequest = newRequest.toJson(); familyRequest['PatientShareRequestID'] = patientShareRequestID; familyRequest['ResponseID'] = responseID; familyRequest['Status'] = 3; - familyRequest["PatientID"] = newRequest["PatientID"]; + familyRequest["PatientID"] = appState.getAuthenticatedUser()!.patientId ?? 0; + familyRequest["LogInTokenID"] = familyFileTokenID; } final endpoint = isFormFamilyFile diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index a108835..8db44ab 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -29,6 +29,7 @@ import 'package:hmg_patient_app_new/features/authentication/models/resp_models/c import 'package:hmg_patient_app_new/features/authentication/models/resp_models/check_user_staus_nhic_response_model.dart'; import 'package:hmg_patient_app_new/features/authentication/models/resp_models/select_device_by_imei.dart'; import 'package:hmg_patient_app_new/features/medical_file/medical_file_repo.dart'; +import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/authentication/login.dart'; import 'package:hmg_patient_app_new/presentation/authentication/saved_login_screen.dart'; @@ -389,8 +390,10 @@ class AuthenticationViewModel extends ChangeNotifier { (failure) async => await _errorHandlerService.handleError(failure: failure), (apiResponse) async { int? patientShareRequestID = 0; + String? familyFileTokenID; if (isFormFamilyFile) { patientShareRequestID = apiResponse.data['PatientShareRequestID']; + familyFileTokenID = apiResponse.data['LogInTokenID']; } if (apiResponse.messageStatus == 2) { LoaderBottomSheet.hideLoader(); @@ -404,15 +407,15 @@ class AuthenticationViewModel extends ChangeNotifier { LoaderBottomSheet.hideLoader(); if (!isComingFromResendOTP) { navigateToOTPScreen( - otpTypeEnum: otpTypeEnum, - phoneNumber: phoneNumber, - isComingFromRegister: checkIsUserComingForRegister(request: payload), - payload: payload, - isFormFamilyFile: isFormFamilyFile, - isExcludedUser: isExcludedUser, - responseID: responseID, - patientShareRequestID: patientShareRequestID, - ); + otpTypeEnum: otpTypeEnum, + phoneNumber: phoneNumber, + isComingFromRegister: checkIsUserComingForRegister(request: payload), + payload: payload, + isFormFamilyFile: isFormFamilyFile, + isExcludedUser: isExcludedUser, + responseID: responseID, + patientShareRequestID: patientShareRequestID, + familyFileTokenID: familyFileTokenID); } } else { // TODO: Handle isSMSSent false @@ -438,7 +441,8 @@ class AuthenticationViewModel extends ChangeNotifier { Function()? onResendActivation, bool isFormFamilyFile = false, dynamic patientShareRequestID, - dynamic responseID}) async { + dynamic responseID, + String? familyFileTokenID}) async { bool isForRegister = (_appState.getUserRegistrationPayload.healthId != null || _appState.getUserRegistrationPayload.patientOutSa == true || _appState.getUserRegistrationPayload.patientOutSa == 1); final request = RequestUtils.getCommonRequestWelcome( @@ -510,7 +514,8 @@ class AuthenticationViewModel extends ChangeNotifier { isRegister: false, isFormFamilyFile: isFormFamilyFile, patientShareRequestID: patientShareRequestID, - responseID: responseID); + responseID: responseID, + familyFileTokenID: familyFileTokenID); resultEither.fold( (failure) async => await _errorHandlerService.handleError( @@ -543,6 +548,18 @@ class AuthenticationViewModel extends ChangeNotifier { // Navigator.popUntil(context, (route) => Utils.route(route, equalsTo: RegisterNew)); return; } else { + if (isFormFamilyFile) { + _dialogService.showCommonBottomSheetWithoutH( + message: "Family File Added Successfully", + onOkPressed: () { + LoaderBottomSheet.showLoader(); + MedicalFileViewModel medicalFileVM = GetIt.instance(); + medicalFileVM.getFamilyFiles(); + LoaderBottomSheet.hideLoader(); + _navigationService.popUntilNamed(AppRoutes.medicalFilePage); + }); + } + if (activation.list != null && activation.list!.isNotEmpty) { _appState.setAuthenticatedUser(activation.list!.first); _appState.setPrivilegeModelList(activation.list!.first.listPrivilege!); @@ -630,7 +647,8 @@ class AuthenticationViewModel extends ChangeNotifier { bool isFormFamilyFile = false, bool isExcludedUser = false, int? responseID, - int? patientShareRequestID}) async { + int? patientShareRequestID, + String? familyFileTokenID}) async { _navigationService.pushToOtpScreen( phoneNumber: phoneNumber, isFormFamilyFile: isFormFamilyFile, @@ -641,6 +659,7 @@ class AuthenticationViewModel extends ChangeNotifier { otpTypeEnum: otpTypeEnum, responseID: responseID, patientShareRequestID: patientShareRequestID, + familyFileTokenID: familyFileTokenID, onWrongActivationCode: (String? value) { onWrongActivationCode(message: value); }, diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index 67bf208..5a93216 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -4,6 +4,7 @@ import 'package:hmg_patient_app_new/presentation/authentication/register.dart'; import 'package:hmg_patient_app_new/presentation/authentication/register_step2.dart'; import 'package:hmg_patient_app_new/presentation/home/landing_page.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; +import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart'; import 'package:hmg_patient_app_new/splashPage.dart'; class AppRoutes { @@ -12,6 +13,7 @@ class AppRoutes { static const String register = '/register'; static const String registerStepTwo = '/registerStepTwo'; static const String landingScreen = '/landingScreen'; + static const String medicalFilePage = '/medicalFilePage'; static Map get routes => { initialRoute: (context) => SplashPage(), @@ -19,5 +21,6 @@ class AppRoutes { landingScreen: (context) => LandingNavigation(), register: (context) => RegisterNew(), registerStepTwo: (context) => RegisterNewStep2(), + medicalFilePage: (context) => MedicalFilePage(), }; }