From 6d8f1b2933a3b73bb0feb88f0e200a2ed4f766c2 Mon Sep 17 00:00:00 2001 From: Kshitij Pramod Ghongadi Date: Tue, 24 Sep 2024 23:06:55 +0530 Subject: [PATCH] TP-74032 | Journey Revamp Phase 1 | API Endpoint Changes (#11865) Co-authored-by: Prajjaval Verma --- .../Navi-Insurance/network/QuotePageApi.ts | 16 ++----- .../quote-offer-screen/QuoteOfferScreen.tsx | 9 ++-- App/common/constants/StringConstant.ts | 1 + App/common/interface/index.ts | 2 +- App/common/navigator/NavigationRouter.ts | 7 +++- App/common/utilities/CtaParamsUtils.ts | 18 +++++++- .../widget-actions/WidgetActionHandler.ts | 10 +++++ .../common/fragment/GiSurveyBottomSheet.kt | 6 +++ .../common/fragment/PolicyStatusFragment.kt | 2 + .../models/SurveyBottomSheetContentData.kt | 3 +- .../repository/PolicyStatusRepository.kt | 7 +++- .../common/viewmodel/PolicyStatusViewModel.kt | 23 ++++++++-- .../PostPurchaseFormBasedFragment.kt | 23 ++++++++-- .../vm/PostPurchaseFormFragmentVM.kt | 29 ++++++++++--- .../repo/PostPurchaseFormRepository.kt | 11 +++-- .../health/repository/PaymentRepository.kt | 2 + .../health/repository/QuoteRepository.kt | 5 ++- .../insurance/health/viewmodel/QuoteVM.kt | 16 ++++++- .../AadhaarVerificationRepository.kt | 13 ++++-- .../kyc/ui/GiAadhaarVerificationFragment.kt | 23 ++++++---- .../kyc/viewModel/AadhaarVerificationVM.kt | 20 ++++++--- .../data/MemberNameDobRepository.kt | 7 +++- .../data/MemberNameDobVM.kt | 4 +- .../ui/MemberNameDobFragment.kt | 17 +++++--- .../insurance/models/PaymentOrderDetail.kt | 3 +- .../models/request/AadhaarVerificationData.kt | 1 + .../insurance/models/request/AddonRequest.kt | 5 ++- .../models/request/FormNextPageRequest.kt | 1 + .../InitiateInstallmentPaymentRequest.kt | 1 + .../models/response/FormPageResponse.kt | 1 + .../response/PolicyIncompleteMemberDetails.kt | 1 + .../network/retrofit/RetrofitService.kt | 39 +++++++++++------ .../repository/PaymentReviewRepository.kt | 11 ++++- .../autopayoption/ui/PaymentReviewFragment.kt | 42 +++++++++++++++---- .../autopayoption/ui/PaymentStatusActivity.kt | 1 + .../viewmodel/HITurboCheckoutVM.kt | 2 + .../viewmodel/PaymentReviewVM.kt | 9 +++- .../pre/purchase/journey/FormWidgetRequest.kt | 1 + .../journey/PreQuoteJourneyPageResponse.kt | 3 ++ .../journey/PreQuoteJourneyRespository.kt | 28 +++++++++---- .../journey/ui/PreQuoteJourneyFragment.kt | 2 + .../journey/ui/PreQuoteJourneyViewModel.kt | 37 ++++++++++++---- .../fragments/PolicyAddonFragment.kt | 20 ++++++++- .../fragments/PolicyBenefitsFragment.kt | 5 ++- .../java/com/navi/insurance/util/Constants.kt | 2 +- .../navi/insurance/util/IntentConstants.kt | 1 + network/NetworkService.ts | 5 +++ network/payloads/request/QuoteOfferRequest.ts | 1 + 48 files changed, 381 insertions(+), 115 deletions(-) diff --git a/App/Container/Navi-Insurance/network/QuotePageApi.ts b/App/Container/Navi-Insurance/network/QuotePageApi.ts index 6dd9f7c73b..7d3b5330aa 100644 --- a/App/Container/Navi-Insurance/network/QuotePageApi.ts +++ b/App/Container/Navi-Insurance/network/QuotePageApi.ts @@ -3,22 +3,14 @@ import { Dispatch, SetStateAction } from "react"; import { getXTargetHeaderInfo } from "../../../../network/ApiClient"; import { GZIP } from "../../../../network/NetworkConstant"; import { get, patch, post } from "../../../../network/NetworkService"; -import { - ActionMetaData, - BaseActionTypes, -} from "../../../common/actions/GenericAction"; +import { ActionMetaData } from "../../../common/actions/GenericAction"; import { AnalyticsFlowNameConstant, AnalyticsMethodNameConstant, - AnalyticsModuleNameConstant, BASE_SCREEN, } from "../../../common/constants"; import { GI } from "../../../common/constants/NavigationHandlerConstants"; -import { - sendAsAnalyticsEvent, - sendAsGlobalErrorEvent, -} from "../../../common/hooks/useAnalyticsEvent"; -import { logToSentry } from "../../../common/hooks/useSentryLogging"; +import { sendAsAnalyticsEvent } from "../../../common/hooks/useAnalyticsEvent"; import { CtaData } from "../../../common/interface"; import { ScreenData } from "../../../common/interface/widgets/screenData/ScreenData"; import { ScreenState } from "../../../common/screen/BaseScreen"; @@ -27,10 +19,10 @@ import { handleResponseData, } from "../../../common/screen/ScreenActionHandler"; import { ScreenActionTypes } from "../../../common/screen/ScreenActionTypes"; -import { getErrorTypeFromStatusCode } from "../../../common/utilities/ErrorUtils"; export interface SumInsuredRequestData { sumInsured: string; planId?: string; + applicationId?: string | null; } export const createQuote = async ( @@ -105,7 +97,7 @@ export const getQuotePageData = async ( }, }; const url = `v3/quotes/${quoteId}`; - return get>(url, requestConfig) + return get>(url, requestConfig, screenMetaData.data) .then(response => { handleResponseData(setScreenData, response); }) diff --git a/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx b/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx index 65d9e0bd39..3e699a87d8 100644 --- a/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx +++ b/App/Container/Navi-Insurance/screen/quote-offer-screen/QuoteOfferScreen.tsx @@ -113,7 +113,8 @@ const QuoteOfferScreen = ({ }; }); - const { preQuoteId, quoteId, navigatorType } = extractCtaParameters(ctaData); + const { applicationId, preQuoteId, quoteId, navigatorType } = + extractCtaParameters(ctaData); const nativeEventListener = new NativeEventEmitter(); let reloadPageEventListener = {} as EmitterSubscription; @@ -163,8 +164,9 @@ const QuoteOfferScreen = ({ ? ScreenActionTypes.FETCH_QUOTE_V4 : ScreenActionTypes.FETCH_INSURANCE_QUOTE_PAGE_FROM_BACKEND; const data: QuoteOfferRequest = { - preQuoteId: preQuoteId ? preQuoteId : undefined, - quoteId: quoteId ? quoteId : undefined, + preQuoteId: preQuoteId, + quoteId: quoteId, + applicationId: applicationId, }; handleActions({ baseActionType: BaseActionTypes.SCREEN_ACTION, @@ -190,6 +192,7 @@ const QuoteOfferScreen = ({ const data: QuoteOfferRequest = { preQuoteId: preQuoteId ? preQuoteId : undefined, quoteId: quoteId ? quoteId : undefined, + applicationId: applicationId ? applicationId : undefined, }; handleActions({ baseActionType: BaseActionTypes.SCREEN_ACTION, diff --git a/App/common/constants/StringConstant.ts b/App/common/constants/StringConstant.ts index 265954f6e1..81da87c43a 100644 --- a/App/common/constants/StringConstant.ts +++ b/App/common/constants/StringConstant.ts @@ -42,6 +42,7 @@ export const QUOTE_APOLOGY_SUBTITLE = export const QUOTE_APOLOGY_BUTTON = "Buy new policy"; export const QUOTE_PATCH_FAIL_TOAST = "Failed. Try again"; export const QUOTE_ID = "quoteId"; +export const APPLICATION_ID = "applicationId"; export const BUILD_CONFIG_DETAILS = "BUILD_CONFIG_DETAILS"; export const SPACE_UNICODE = "\u00A0"; export const REACT_NATIVE = "rn"; diff --git a/App/common/interface/index.ts b/App/common/interface/index.ts index eb9c7a0684..c752e34e0d 100644 --- a/App/common/interface/index.ts +++ b/App/common/interface/index.ts @@ -51,6 +51,7 @@ export enum ParameterType { PRE_QUOTE_ID = "preQuoteId", QUOTE_ID = "quoteId", NAVIGATOR_TYPE = "RnNavigatorType", + APPLICATION_ID = "applicationId", } export enum CtaType { @@ -60,4 +61,3 @@ export enum CtaType { RN_NAVIGATOR = "RN_NAVIGATOR", GO_BACK = "GO_BACK", } - diff --git a/App/common/navigator/NavigationRouter.ts b/App/common/navigator/NavigationRouter.ts index b8840bcaf7..2ac3179e5e 100644 --- a/App/common/navigator/NavigationRouter.ts +++ b/App/common/navigator/NavigationRouter.ts @@ -49,10 +49,12 @@ export const extractCtaParameters = ( preQuoteId?: string | undefined | null; quoteId?: string | undefined | null; navigatorType?: string | undefined | null; + applicationId?: string | undefined | null; } => { let preQuoteId: string | undefined | null = undefined; let quoteId: string | undefined | null = undefined; let navigatorType: string | undefined | null = undefined; + let applicationId: string | undefined | null = undefined; ctaData?.parameters?.forEach((item: CtaParameter) => { switch (item.key) { @@ -65,12 +67,15 @@ export const extractCtaParameters = ( case ParameterType.NAVIGATOR_TYPE: navigatorType = item.value; break; + case ParameterType.APPLICATION_ID: + applicationId = item.value; + break; default: break; } }); - return { preQuoteId, quoteId, navigatorType }; + return { preQuoteId, quoteId, navigatorType, applicationId }; }; export const Router = { diff --git a/App/common/utilities/CtaParamsUtils.ts b/App/common/utilities/CtaParamsUtils.ts index e2b37beaf6..1ea979a7b6 100644 --- a/App/common/utilities/CtaParamsUtils.ts +++ b/App/common/utilities/CtaParamsUtils.ts @@ -1,4 +1,4 @@ -import { QUOTE_ID } from "../constants"; +import { APPLICATION_ID, QUOTE_ID } from "../constants"; import { CtaData } from "../interface"; import { ScreenMetaData } from "../interface/widgets/screenData/ScreenMetaData"; @@ -15,3 +15,19 @@ export const getQuoteIdFromScreenMetaData = ( ); return quoteObj?.value; }; + +export const getApplicationIdFromCta = (ctaData?: CtaData) => { + const quoteObj = ctaData?.parameters?.find( + item => item.key === APPLICATION_ID, + ); + return quoteObj?.value; +}; + +export const getApplicationFromScreenMetaData = ( + screenMetaData?: ScreenMetaData, +) => { + const quoteObj = screenMetaData?.screenProperties?.find( + item => item.key === APPLICATION_ID, + ); + return quoteObj?.value; +}; diff --git a/App/common/widgets/widget-actions/WidgetActionHandler.ts b/App/common/widgets/widget-actions/WidgetActionHandler.ts index 2a7494b188..e32de2cd1e 100644 --- a/App/common/widgets/widget-actions/WidgetActionHandler.ts +++ b/App/common/widgets/widget-actions/WidgetActionHandler.ts @@ -25,6 +25,8 @@ import { FinalPatchCallRequestBody } from "../../interface/widgets/widgetData/Fo import { NativeDeeplinkNavigatorModule } from "../../native-module/NativeModules"; import { ScreenState } from "../../screen/BaseScreen"; import { + getApplicationFromScreenMetaData, + getApplicationIdFromCta, getQuoteIdFromCta, getQuoteIdFromScreenMetaData, } from "../../utilities/CtaParamsUtils"; @@ -136,7 +138,11 @@ const WidgetActionHandler = { let quoteId = getQuoteIdFromCta(ctaData) ?? getQuoteIdFromScreenMetaData(screenData?.screenMetaData); + let applicationId = + getApplicationIdFromCta(ctaData) ?? + getApplicationFromScreenMetaData(screenData?.screenMetaData); const requestData: SumInsuredRequestData = widgetMetaData.data; + requestData.applicationId = applicationId; return updateSumInsuredData(requestData, quoteId!!) .then(response => {}) .catch(error => { @@ -155,12 +161,16 @@ const WidgetActionHandler = { let quoteId = getQuoteIdFromCta(ctaData) ?? getQuoteIdFromScreenMetaData(screenData?.screenMetaData); + let applicationId = + getApplicationIdFromCta(ctaData) ?? + getApplicationFromScreenMetaData(screenData?.screenMetaData); const requestData: SumInsuredRequestData = ( widgetMetaData?.data as FinalPatchCallRequestBody ).requestData; const nextPageCta: CtaData = ( widgetMetaData?.data as FinalPatchCallRequestBody ).nextPageCta; + requestData.applicationId = applicationId; return updateSumInsuredData(requestData, quoteId!!) .then(response => { handleResponseData(nextPageCta, setScreenData, screenData); diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GiSurveyBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GiSurveyBottomSheet.kt index a0007494fc..d8e9676e1c 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GiSurveyBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GiSurveyBottomSheet.kt @@ -63,6 +63,7 @@ class GiSurveyBottomSheet : BaseBottomSheet() { private val surveyVM by activityViewModels() private var applicationType: String? = null private var pageName: String? = null + private var applicationId: String? = null private val errorTracker = CommonNaviAnalytics.naviAnalytics.GiError() private var quoteId: String? = null private var policyId: String? = null @@ -79,6 +80,7 @@ class GiSurveyBottomSheet : BaseBottomSheet() { arguments?.getString(QUOTE_ID_EXTRA)?.let { quoteId = it } arguments?.getString(POLICY_ID_EXTRA)?.let { policyId = it } arguments?.getString(FLOW_IDENTIFIER)?.let { flowIdentifier = it } + arguments?.getString(ARG_APPLICATION_ID)?.let { applicationId = it } arguments?.getParcelable(SURVEY_BOTTOMSHEET_DATA)?.let { setFeedbackItemListData(it.pillItems) initUi(it) @@ -153,6 +155,7 @@ class GiSurveyBottomSheet : BaseBottomSheet() { surveyVM.sendSurveyFeedbackData( pageName.orEmpty(), SurveyFeedbackRequest( + applicationId = applicationId, action = SUBMIT_ACTION, applicationType = applicationType.orEmpty(), quoteId = quoteId.orEmpty(), @@ -180,6 +183,7 @@ class GiSurveyBottomSheet : BaseBottomSheet() { surveyVM.sendSurveyFeedbackData( pageName.orEmpty(), SurveyFeedbackRequest( + applicationId = applicationId, action = SKIP_ACTION, applicationType = applicationType.orEmpty(), quoteId = quoteId.orEmpty(), @@ -193,6 +197,7 @@ class GiSurveyBottomSheet : BaseBottomSheet() { surveyVM.sendSurveyFeedbackData( pageName.orEmpty(), SurveyFeedbackRequest( + applicationId = applicationId, action = INIT_ACTION, applicationType = applicationType.orEmpty(), quoteId = quoteId.orEmpty(), @@ -373,6 +378,7 @@ class GiSurveyBottomSheet : BaseBottomSheet() { surveyVM.sendSurveyFeedbackData( pageName.orEmpty(), SurveyFeedbackRequest( + applicationId = applicationId, action = EXIT_ACTION, applicationType = applicationType.orEmpty(), quoteId = quoteId.orEmpty(), diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/PolicyStatusFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/PolicyStatusFragment.kt index e0e54440ad..727ace9022 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/PolicyStatusFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/PolicyStatusFragment.kt @@ -45,6 +45,7 @@ import com.navi.insurance.models.request.AadhaarVerificationData import com.navi.insurance.models.request.FormNextPageRequest import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.APPLICATION_TYPE_EXTRA +import com.navi.insurance.util.ARG_APPLICATION_ID import com.navi.insurance.util.ASSET_DETAILS_EXTRA import com.navi.insurance.util.INITIAL_PAGE_UI import com.navi.insurance.util.PAGE_TYPE @@ -104,6 +105,7 @@ class PolicyStatusFragment : GiBaseFragment() { ?: FormNextPageRequest() viewModel.pageType = arguments?.getString(PAGE_TYPE).orEmpty() + viewModel.applicationId = arguments?.getString(ARG_APPLICATION_ID) applicationType = arguments?.getString(APPLICATION_TYPE_EXTRA) initialPageUI = arguments?.getString(INITIAL_PAGE_UI) parentActivity = activity as? InsuranceContainerActivity diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/models/SurveyBottomSheetContentData.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/models/SurveyBottomSheetContentData.kt index 9624589e54..0f3ce11d0d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/models/SurveyBottomSheetContentData.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/models/SurveyBottomSheetContentData.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2022-2023 by Navi Technologies Limited + * * Copyright © 2022-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -17,6 +17,7 @@ data class SurveyContentResponse( ) data class SurveyFeedbackRequest( + @SerializedName("applicationId") val applicationId: String? = null, @SerializedName("action") var action: String? = null, @SerializedName("applicationType") var applicationType: String? = null, @SerializedName("quoteId") val quoteId: String? = null, diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/repository/PolicyStatusRepository.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/repository/PolicyStatusRepository.kt index 3c38d38496..b36d26aa51 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/repository/PolicyStatusRepository.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/repository/PolicyStatusRepository.kt @@ -19,9 +19,12 @@ class PolicyStatusRepository @Inject constructor(private val retrofitService: Re suspend fun fetchCurrentPolicyStatus( quoteId: String?, - applicationType: String? = null + applicationType: String? = null, + applicationId: String? = null ): RepoResult = - apiResponseCallback(retrofitService.fetchPolicyStatusResponse(quoteId, applicationType)) + apiResponseCallback( + retrofitService.fetchPolicyStatusResponse(quoteId, applicationType, applicationId) + ) suspend fun generateQuoteID(quoteId: String?): RepoResult = apiResponseCallback(retrofitService.generateQuoteID(quoteId)) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/viewmodel/PolicyStatusViewModel.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/viewmodel/PolicyStatusViewModel.kt index 6a0750f4e9..bd2bd1297f 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/viewmodel/PolicyStatusViewModel.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/viewmodel/PolicyStatusViewModel.kt @@ -20,6 +20,7 @@ import com.navi.insurance.common.util.ActionHandler import com.navi.insurance.models.request.AadhaarVerificationData import com.navi.insurance.models.request.FormNextPageRequest import com.navi.insurance.models.request.FormTypedKeyData +import com.navi.insurance.models.response.FormMetaData import com.navi.insurance.network.ApiErrorTagType import com.navi.insurance.util.POST_PURCHASE_JOURNEY import com.navi.insurance.util.TRIAL_POLICY @@ -48,6 +49,7 @@ constructor( var requestBody: AadhaarVerificationData = AadhaarVerificationData() var assetDetails: FormNextPageRequest = FormNextPageRequest() var pageType: String = "" + var applicationId: String? = null private fun exceptionHandler(errorTag: String) = CoroutineExceptionHandler { _, exception -> viewModelScope.launch { @@ -71,9 +73,11 @@ constructor( private fun getFormRequestData( aadhaarVerificationData: AadhaarVerificationData, pageType: String?, - assetDetails: FormNextPageRequest? = null + assetDetails: FormNextPageRequest? = null, + applicationId: String? = null ): FormNextPageRequest { return FormNextPageRequest( + applicationId = applicationId, pageType = pageType.orEmpty(), data = listOf( @@ -81,7 +85,8 @@ constructor( attributes = aadhaarVerificationData, assetDetails = assetDetails, ) - ) + ), + formMetaData = FormMetaData(applicationId = applicationId) ) } @@ -103,11 +108,21 @@ constructor( repository.fetchPostPurchaseStatus( sourceType, formNextPageRequest = - getFormRequestData(requestBody, pageType, assetDetails) + getFormRequestData( + requestBody, + pageType, + assetDetails, + applicationId = applicationId + ) ) } else if (applicationType == TRIAL_POLICY) { repository.generateQuoteID(quoteId) - } else repository.fetchCurrentPolicyStatus(quoteId, applicationType) + } else + repository.fetchCurrentPolicyStatus( + quoteId, + applicationType, + applicationId = applicationId + ) if ( response.error.isNull() && response.errors.isNullOrEmpty() && diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/PostPurchaseFormBasedFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/PostPurchaseFormBasedFragment.kt index 519eb1fa36..e528e67aa2 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/PostPurchaseFormBasedFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/PostPurchaseFormBasedFragment.kt @@ -59,11 +59,13 @@ import com.navi.insurance.formbase.states.FormNextPageResponseState import com.navi.insurance.formbase.states.FormPageResponseState import com.navi.insurance.formbase.states.FormPreviousPageResponseState import com.navi.insurance.models.request.FormNextPageRequest +import com.navi.insurance.models.response.FormMetaData import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.network.ApiErrorTagType import com.navi.insurance.quoteredesign.fragments.KYCBottomSheetFragment import com.navi.insurance.sharedpref.NaviPreferenceManager import com.navi.insurance.util.APPLICATION_TYPE_EXTRA +import com.navi.insurance.util.ARG_APPLICATION_ID import com.navi.insurance.util.ASSET_DETAILS_EXTRA import com.navi.insurance.util.Constants.PARAMS_EXTRA import com.navi.insurance.util.EMPTY @@ -96,6 +98,7 @@ import kotlinx.coroutines.launch class PostPurchaseFormBasedFragment : GiBaseFragment(), ActionHandler.ActionOwner { private val viewModel by viewModels() private lateinit var binding: FormFragmentLayoutBinding + private var applicationId: String? = null private var referenceId: String? = null private var journeyKey: String? = null private var formAdapter: GiFormAdapter? = null @@ -134,6 +137,7 @@ class PostPurchaseFormBasedFragment : GiBaseFragment(), ActionHandler.ActionOwne requestPageType = it.getString(PAGE_TYPE) journeyKey = it.getString(JOURNEY_KEY_EXTRA) ?: "quotes" referenceId = it.getString(QUOTE_ID_EXTRA) + applicationId = it.getString(ARG_APPLICATION_ID) if (referenceId.isNullOrEmpty()) { referenceId = it.getString(POLICY_ID_EXTRA) } @@ -178,7 +182,12 @@ class PostPurchaseFormBasedFragment : GiBaseFragment(), ActionHandler.ActionOwne } else -> { viewLifecycleOwner.lifecycleScope.launch { - viewModel.fetchFormPageResponse(referenceId, journeyKey, requestPageType) + viewModel.fetchFormPageResponse( + referenceId, + journeyKey, + requestPageType, + applicationId = applicationId + ) } } } @@ -187,7 +196,14 @@ class PostPurchaseFormBasedFragment : GiBaseFragment(), ActionHandler.ActionOwne override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) viewLifecycleOwner.lifecycleScope.launchWhenStarted { - launch { viewModel.fetchFormPageResponse(referenceId, journeyKey, requestPageType) } + launch { + viewModel.fetchFormPageResponse( + referenceId, + journeyKey, + requestPageType, + applicationId + ) + } launch { viewModel.formResponseStateFlow.collect { setViewState(it) } } launch { viewModel.formNextPageStateFlow.collect { setNextPageViewState(it) } } @@ -496,7 +512,8 @@ class PostPurchaseFormBasedFragment : GiBaseFragment(), ActionHandler.ActionOwne referenceId, pageType, transitionKey, - journeyKey + journeyKey, + FormMetaData(applicationId = applicationId) ) } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/vm/PostPurchaseFormFragmentVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/vm/PostPurchaseFormFragmentVM.kt index 5cfa756773..8b8753bb56 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/vm/PostPurchaseFormFragmentVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/vm/PostPurchaseFormFragmentVM.kt @@ -38,9 +38,11 @@ import com.navi.insurance.formbase.states.FormPreviousPageResponseState import com.navi.insurance.models.request.FormNextPageRequest import com.navi.insurance.models.request.FormPreviousPageRequest import com.navi.insurance.models.request.FormTypedKeyData +import com.navi.insurance.models.response.FormMetaData import com.navi.insurance.models.response.FormPageResponse import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator.HOME import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.ARG_APPLICATION_ID import com.navi.insurance.util.ASSET_DETAILS_EXTRA import com.navi.insurance.util.Constants.POLICY_ACTIVATION_ERROR import com.navi.insurance.util.PAGE_SOURCE @@ -100,7 +102,8 @@ constructor( suspend fun fetchFormPageResponse( referenceId: String?, journeyKey: String?, - requestPageType: String? = null + requestPageType: String? = null, + applicationId: String? = null ) { if (referenceId.isNullOrEmpty()) { _formResponseStateFlow.emit(FormPageResponseState.Error) @@ -110,9 +113,13 @@ constructor( viewModelScope.launch(dispatcher.io + giExceptionHandler) { val response: RepoResult = if (requestPageType == preKycPage) { - formRepository.fetchPreKycPage() + formRepository.fetchPreKycPage(applicationId) } else { - formRepository.fetchFormWithReferenceId(referenceId, journeyKey.orEmpty()) + formRepository.fetchFormWithReferenceId( + referenceId, + journeyKey.orEmpty(), + applicationId = applicationId + ) } if (response.error == null && response.errors.isNullOrEmpty()) { _pageTypeFlow.emit(response.data?.metaData?.pageType) @@ -146,7 +153,8 @@ constructor( referenceId: String?, pageType: String?, transitionKey: String?, - journeyKey: String? + journeyKey: String?, + formMetaData: FormMetaData?, ) { if (formKeyData.isNull() || referenceId.isNull() || pageType.isNull()) { viewModelScope.launch { _formNextPageStateFlow.emit(FormNextPageResponseState.Error) } @@ -154,7 +162,12 @@ constructor( } viewModelScope.launch { val formNextPageRequestData = - FormNextPageRequest(pageType = pageType, data = formKeyData) + FormNextPageRequest( + applicationId = formMetaData?.applicationId, + pageType = pageType, + data = formKeyData, + formMetaData = formMetaData + ) _formNextPageStateFlow.emit(FormNextPageResponseState.Loading) val response = if (transitionKey != null) { @@ -361,14 +374,18 @@ constructor( ) val sourceType = cta.parameters?.firstOrNull { it.key == SOURCE_TYPE }?.value val pageSource = cta.parameters?.firstOrNull { it.key == PAGE_SOURCE }?.value + val applicationId = + cta.parameters?.firstOrNull { it.key == ARG_APPLICATION_ID }?.value val formNextPageRequest = FormNextPageRequest( + applicationId = applicationId, data = listOf( FormTypedKeyData( assetDetails = assetDetails, ) - ) + ), + formMetaData = FormMetaData(applicationId = applicationId) ) fetchPolicyCurrentStatus(sourceType, formNextPageRequest, pageSource) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/pre_purchase/repo/PostPurchaseFormRepository.kt b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/pre_purchase/repo/PostPurchaseFormRepository.kt index 1e3e170f59..550165fb7c 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/pre_purchase/repo/PostPurchaseFormRepository.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/pre_purchase/repo/PostPurchaseFormRepository.kt @@ -74,13 +74,16 @@ class PostPurchaseFormRepository @Inject constructor(private val retrofitService suspend fun fetchFormWithReferenceId( quoteId: String, - journeyKey: String + journeyKey: String, + applicationId: String? = null ): RepoResult { - return apiResponseCallback(retrofitService.fetchFormWithReferenceId(quoteId, journeyKey)) + return apiResponseCallback( + retrofitService.fetchFormWithReferenceId(quoteId, journeyKey, applicationId) + ) } - suspend fun fetchPreKycPage(): RepoResult { - return apiResponseCallback(retrofitService.fetchPreKycDetails()) + suspend fun fetchPreKycPage(applicationId: String? = null): RepoResult { + return apiResponseCallback(retrofitService.fetchPreKycDetails(applicationId)) } suspend fun postFormPageData(quoteId: String): RepoResult { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/repository/PaymentRepository.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/repository/PaymentRepository.kt index 0ad609dbb2..5e8dee529d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/repository/PaymentRepository.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/repository/PaymentRepository.kt @@ -67,6 +67,7 @@ class PaymentRepository @Inject constructor(private val retrofitService: Retrofi clientStatus: String?, pgClientStatus: String? = null, flowIdentifier: String?, + applicationId: String?, policyId: String? ) = apiResponseCallback( @@ -75,6 +76,7 @@ class PaymentRepository @Inject constructor(private val retrofitService: Retrofi clientStatus, pgClientStatus, flowIdentifier, + applicationId, policyId ) ) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/repository/QuoteRepository.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/repository/QuoteRepository.kt index 63264e6065..a30a3eecd4 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/repository/QuoteRepository.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/repository/QuoteRepository.kt @@ -91,10 +91,11 @@ class QuoteRepository @Inject constructor(private val retrofitService: RetrofitS quoteId: String, planId: String, tabId: String?, - flowName: String? + flowName: String?, + applicationId: String? = null ): RepoResult { return apiResponseCallback( - retrofitService.fetchBenefitDetails(quoteId, planId, tabId, flowName) + retrofitService.fetchBenefitDetails(quoteId, planId, tabId, flowName, applicationId) ) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/QuoteVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/QuoteVM.kt index 9b792546a6..cdc037dbe7 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/QuoteVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/QuoteVM.kt @@ -395,10 +395,22 @@ constructor(private val repository: QuoteRepository, actionHandler: ActionHandle } } - fun fetchBenefitsDetails(quoteId: String, planId: String, tabId: String?, flowName: String?) { + fun fetchBenefitsDetails( + quoteId: String, + planId: String, + tabId: String?, + flowName: String?, + applicationId: String? = null + ) { coroutineScope.launch { val response = - repository.fetchBenefitDetails(quoteId = quoteId, planId = planId, tabId, flowName) + repository.fetchBenefitDetails( + quoteId = quoteId, + planId = planId, + tabId, + flowName, + applicationId = applicationId + ) if (response.error == null && response.errors.isNullOrEmpty()) { _benefitResponse.value = response.data } else { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/kyc/repository/AadhaarVerificationRepository.kt b/android/navi-insurance/src/main/java/com/navi/insurance/kyc/repository/AadhaarVerificationRepository.kt index 97b6ef5300..8423f8cbab 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/kyc/repository/AadhaarVerificationRepository.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/kyc/repository/AadhaarVerificationRepository.kt @@ -21,8 +21,10 @@ import javax.inject.Inject class AadhaarVerificationRepository @Inject constructor(private val retrofitService: RetrofitService) : ResponseCallback() { - suspend fun fetchAadhaarInitResponse(): RepoResult { - return apiResponseCallback(retrofitService.fetchAadhaarInitResponse()) + suspend fun fetchAadhaarInitResponse( + applicationId: String? = null + ): RepoResult { + return apiResponseCallback(retrofitService.fetchAadhaarInitResponse(applicationId)) } suspend fun postAadhaarVerificationData( @@ -34,9 +36,12 @@ constructor(private val retrofitService: RetrofitService) : ResponseCallback() { } suspend fun fetchAadhaarPollingResponse( - kycReferenceId: String + kycReferenceId: String, + applicationId: String? = null ): RepoResult { - return apiResponseCallback(retrofitService.fetchAadhaarPollingResponse(kycReferenceId)) + return apiResponseCallback( + retrofitService.fetchAadhaarPollingResponse(kycReferenceId, applicationId) + ) } suspend fun doNextPageFormRequest( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/kyc/ui/GiAadhaarVerificationFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/kyc/ui/GiAadhaarVerificationFragment.kt index 90993f189d..c7d18fddfc 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/kyc/ui/GiAadhaarVerificationFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/kyc/ui/GiAadhaarVerificationFragment.kt @@ -47,6 +47,7 @@ import com.navi.insurance.models.response.AadhaarVerifyInitDetails import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.network.ApiConstants import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.ARG_APPLICATION_ID import com.navi.insurance.util.Constants import com.navi.insurance.util.JOURNEY_KEY_EXTRA import com.navi.insurance.util.TRUE @@ -67,6 +68,7 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener { private val viewModel by viewModels() private val aadhaarVerificationHelper by lazy { GiAadhaarVerificationHelper() } private val analyticsEventTracker = NaviInsuranceAnalytics.instance.KycVerificationScreen() + private var applicationId: String? = null override fun onCreateView( inflater: LayoutInflater, @@ -76,6 +78,7 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener { super.onCreateView(inflater, container, savedInstanceState) binding = FragmentAadhaarVerificationBinding.inflate(inflater, container, false) viewModel.okycFormEnabled = false + applicationId = arguments?.getString(ARG_APPLICATION_ID) return binding.root } @@ -96,21 +99,23 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener { pageType = arguments?.getString(PAGE_TYPE), transitionKey = arguments?.getString(TRANSITION_KEY), okycFormEnabled = true, - applicationId = arguments?.getString(APPLICATION_ID_KEY), + applicationId = arguments?.getString(ARG_APPLICATION_ID), providerType = arguments?.getString(PROVIDER_KEY), identifier = arguments?.getString(CUSTOMER_IDENTIFIER_KEY), authToken = arguments?.getString(AUTH_TOKEN_KEY) ) ) } else { - lifecycleScope.launchWhenStarted { viewModel.fetchAadhaarInitResponse() } + lifecycleScope.launchWhenStarted { + viewModel.fetchAadhaarInitResponse(applicationId = applicationId) + } } binding.errorView.setProperties( object : NaviErrorPageView.Callback { override fun onRetryClick(tag: String?) { when (tag) { ApiErrorTagType.AADHAAR_INIT_RESPONSE_ERROR.value -> { - viewModel.fetchAadhaarInitResponse() + viewModel.fetchAadhaarInitResponse(applicationId = applicationId) } ApiErrorTagType.AADHAAR_VERIFICATION_RESPONSE_ERROR.value -> { viewModel.aadhaarVerificationData.value?.let { aadhaarVerificationData @@ -120,7 +125,7 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener { } ApiErrorTagType.AADHAAR_POLLING_RESPONSE_ERROR.value -> { viewModel.kycReferenceId.value?.let { kycRefId -> - viewModel.fetchAadhaarPollingResponse(kycRefId) + viewModel.fetchAadhaarPollingResponse(kycRefId, applicationId) } } ApiErrorTagType.OKYC_VERIFICATION_FORM_FETCH_NEXT_ERROR.value -> { @@ -352,7 +357,7 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener { binding.loaderView.isVisible = true viewModel.pollingData.value?.let { pollingData -> binding.title.setTextFieldData(pollingData.pollingTitle) - viewModel.startPolling(pollingData, viewModel.kycReferenceId.value) + viewModel.startPolling(pollingData, viewModel.kycReferenceId.value, applicationId) } } @@ -408,6 +413,7 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener { } override fun onResult(error: DTException?, data: JSONObject?) { + applicationId = applicationId ?: arguments?.getString(ARG_APPLICATION_ID) var aadhaarVerificationData = AadhaarVerificationData() error?.let { if (it.errorCode == ApiConstants.AADHAAR_USER_CANCELLED) { @@ -426,7 +432,8 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener { error.errorCode, error.message, FirebaseStatusType.FAILURE, - AadhaarDetails("", "") + AadhaarDetails("", ""), + applicationId = applicationId, ) } } @@ -436,7 +443,8 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener { ApiConstants.API_SUCCESS_CODE, FirebaseStatusType.SUCCESS, FirebaseStatusType.SUCCESS, - AadhaarDetails(txnId = data?.optString("txnId")) + AadhaarDetails(txnId = data?.optString("txnId")), + applicationId = applicationId ) analyticsEventTracker.okycSuccess(screenName) } @@ -468,7 +476,6 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener { private const val AUTH_TOKEN_KEY = "authToken" private const val OKYC_FORM_ENABLED_KEY = "okycFormEnabled" private const val IS_NAVI_ONE_PROFILE_ENABLED = "isNaviOneProfileEnabled" - private const val APPLICATION_ID_KEY = "applicationId" private const val TRANSITION_KEY = "transition" } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/kyc/viewModel/AadhaarVerificationVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/kyc/viewModel/AadhaarVerificationVM.kt index a4bc6666ff..7334463554 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/kyc/viewModel/AadhaarVerificationVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/kyc/viewModel/AadhaarVerificationVM.kt @@ -128,12 +128,15 @@ constructor( ctaData = cta } - fun fetchAadhaarInitResponse() { + fun fetchAadhaarInitResponse(applicationId: String? = null) { viewModelScope.launch( coroutineExceptionHandler(ApiErrorTagType.AADHAAR_INIT_RESPONSE_ERROR.value) ) { _aadhaarVerificationInitResponseStateFlow.value = AadhaarInitResponseState.Loading - val response = aadhaarVerificationRepository.fetchAadhaarInitResponse() + val response = + aadhaarVerificationRepository.fetchAadhaarInitResponse( + applicationId = applicationId + ) if ( response.error == null && response.errors.isNullOrEmpty() && response.data != null ) { @@ -246,12 +249,16 @@ constructor( ) } - fun fetchAadhaarPollingResponse(kycReferenceId: String) { + fun fetchAadhaarPollingResponse(kycReferenceId: String, applicationId: String? = null) { viewModelScope.launch( coroutineExceptionHandler(ApiErrorTagType.AADHAAR_POLLING_RESPONSE_ERROR.value) ) { _aadhaarPollingResponseStateFlow.value = AadhaarPollingResponseState.Loading - val response = aadhaarVerificationRepository.fetchAadhaarPollingResponse(kycReferenceId) + val response = + aadhaarVerificationRepository.fetchAadhaarPollingResponse( + kycReferenceId, + applicationId = applicationId + ) if ( response.error == null && response.errors.isNullOrEmpty() && response.data != null ) { @@ -287,12 +294,13 @@ constructor( fun startPolling( pollingData: AadhaarVerificationResponse.PollingData, - kycReferenceId: String? + kycReferenceId: String?, + applicationId: String? ) { if (kycReferenceId != null) { viewModelScope.launch { delay(pollingData.pollingInterval ?: DEFAULT_POLLING_DURATION) - fetchAadhaarPollingResponse(kycReferenceId) + fetchAadhaarPollingResponse(kycReferenceId, applicationId = applicationId) } } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobRepository.kt b/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobRepository.kt index 3bdc9174af..5f78c931a1 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobRepository.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobRepository.kt @@ -18,8 +18,11 @@ import javax.inject.Inject class MemberNameDobRepository @Inject constructor(private val retrofitService: RetrofitService) : ResponseCallback() { - suspend fun fetchMemberNameDobDetails(quoteId: String? = null): RepoResult = - apiResponseCallback(retrofitService.fetchMemberNameDob(quoteId)) + suspend fun fetchMemberNameDobDetails( + quoteId: String? = null, + applicationId: String? = null + ): RepoResult = + apiResponseCallback(retrofitService.fetchMemberNameDob(quoteId, applicationId)) suspend fun getNextPageResponse( quoteId: String? = null, diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobVM.kt index d0f5bac6e8..7e5491d91c 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobVM.kt @@ -74,13 +74,13 @@ constructor( } } - fun fetchMemberNameDobResponse(quoteId: String? = null) { + fun fetchMemberNameDobResponse(quoteId: String? = null, applicationId: String? = null) { viewModelScope.launch( dispatcher.io + exceptionHandler(ApiErrorTagType.MEMBER_NAME_DOB_SCREEN_LOAD_ERROR.value) ) { _memberNameDobFlow.value = ResponseState.Loading - val response = repository.fetchMemberNameDobDetails(quoteId) + val response = repository.fetchMemberNameDobDetails(quoteId, applicationId) if ( response.error.isNull() && response.errors.isNullOrEmpty() && diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/ui/MemberNameDobFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/ui/MemberNameDobFragment.kt index 59a7ffee76..0852d594ac 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/ui/MemberNameDobFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/ui/MemberNameDobFragment.kt @@ -41,6 +41,7 @@ import com.navi.insurance.member_name_dob_details.data.MemberNameDobVM import com.navi.insurance.models.response.PolicyIncompleteMemberDetails import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.ARG_APPLICATION_ID import com.navi.insurance.util.Constants import com.navi.insurance.util.QUOTE_ID_EXTRA import com.navi.insurance.util.launchHelpCenter @@ -67,6 +68,7 @@ class MemberNameDobFragment : GiBaseFragment(), WidgetCallback { private var rvAdapter: NaviAdapter? = null private var footerData: NaviWidgetData? = null private var quoteId: String? = null + private var applicationId: String? = null private var paymentFlowIdentifier: String? = null private var applicationType: String? = null private var parentActivity: InsuranceContainerActivity? = null @@ -90,6 +92,7 @@ class MemberNameDobFragment : GiBaseFragment(), WidgetCallback { parentActivity = activity as? InsuranceContainerActivity pageBinding.landingPageRv.adapter = rvAdapter quoteId = arguments?.getString(QUOTE_ID_EXTRA) + applicationId = arguments?.getString(ARG_APPLICATION_ID) sendInitScreenEvent() containerActivityVM.hideKeyboardOnFocusChange(true) return pageBinding.root @@ -161,7 +164,7 @@ class MemberNameDobFragment : GiBaseFragment(), WidgetCallback { } } .launchIn(viewLifecycleOwner.lifecycleScope) - viewModel.fetchMemberNameDobResponse(quoteId) + viewModel.fetchMemberNameDobResponse(quoteId, applicationId) } private fun initErrorView() { @@ -169,7 +172,7 @@ class MemberNameDobFragment : GiBaseFragment(), WidgetCallback { object : NaviErrorPageView.Callback { override fun onRetryClick(tag: String?) { if (tag == ApiErrorTagType.MEMBER_NAME_DOB_SCREEN_LOAD_ERROR.value) { - viewModel.fetchMemberNameDobResponse(quoteId) + viewModel.fetchMemberNameDobResponse(quoteId, applicationId) } else if ( tag == ApiErrorTagType.MEMBER_NAME_DOB_SCREEN_NEXT_PAGE_ERROR.value ) { @@ -212,7 +215,7 @@ class MemberNameDobFragment : GiBaseFragment(), WidgetCallback { } } .launchIn(viewLifecycleOwner.lifecycleScope) - viewModel.fetchMemberNameDobResponse(quoteId) + viewModel.fetchMemberNameDobResponse(quoteId, applicationId) } private fun handleSuccessResponse() { @@ -310,7 +313,7 @@ class MemberNameDobFragment : GiBaseFragment(), WidgetCallback { callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { - viewModel.fetchMemberNameDobResponse(quoteId) + viewModel.fetchMemberNameDobResponse(quoteId, applicationId) } } ) @@ -336,7 +339,11 @@ class MemberNameDobFragment : GiBaseFragment(), WidgetCallback { } } } - val data = PolicyIncompleteMemberDetails(memberDetailList = requestList.toList()) + val data = + PolicyIncompleteMemberDetails( + memberDetailList = requestList.toList(), + applicationId = applicationId + ) viewModel.requestBody = data } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/models/PaymentOrderDetail.kt b/android/navi-insurance/src/main/java/com/navi/insurance/models/PaymentOrderDetail.kt index 2fc0800b20..ccb0414a2d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/models/PaymentOrderDetail.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/models/PaymentOrderDetail.kt @@ -38,7 +38,8 @@ data class TurboPaymentOrderDetail( @SerializedName("paymentSdkToken") val paymentSdkToken: String? = null, @SerializedName("pollingConfig") val pollingConfig: PollingConfig, @SerializedName("nextPageCta") val nextPageCta: CtaData? = null, - @SerializedName("apiFailureCta") val apiFailureCta: CtaData? = null + @SerializedName("apiFailureCta") val apiFailureCta: CtaData? = null, + @SerializedName("applicationId") val applicationId: String? = null ) : Parcelable { @Parcelize data class PollingConfig( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/models/request/AadhaarVerificationData.kt b/android/navi-insurance/src/main/java/com/navi/insurance/models/request/AadhaarVerificationData.kt index 1eca0ba584..b3e56baa4a 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/models/request/AadhaarVerificationData.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/models/request/AadhaarVerificationData.kt @@ -15,6 +15,7 @@ data class AadhaarVerificationData( @SerializedName("status") val status: String? = null, @SerializedName("aadhaarDetails") val details: AadhaarDetails? = null, @SerializedName("referenceId") var referenceId: String? = null, + @SerializedName("applicationId") val applicationId: String? = null, ) data class AadhaarDetails( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/models/request/AddonRequest.kt b/android/navi-insurance/src/main/java/com/navi/insurance/models/request/AddonRequest.kt index fbdf811d44..4ff83d42e5 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/models/request/AddonRequest.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/models/request/AddonRequest.kt @@ -9,7 +9,10 @@ package com.navi.insurance.models.request import com.google.gson.annotations.SerializedName -data class AddonRequest(@SerializedName("addons") var addons: List = listOf()) +data class AddonRequest( + @SerializedName("addons") var addons: List = listOf(), + @SerializedName("applicationId") val applicationId: String? = null, +) data class Addon( @SerializedName("coverId") var coverId: String?, diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/models/request/FormNextPageRequest.kt b/android/navi-insurance/src/main/java/com/navi/insurance/models/request/FormNextPageRequest.kt index 2e5c47e5f8..c622914f44 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/models/request/FormNextPageRequest.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/models/request/FormNextPageRequest.kt @@ -11,6 +11,7 @@ import com.google.gson.annotations.SerializedName import com.navi.insurance.models.response.FormMetaData data class FormNextPageRequest( + @SerializedName("applicationId") val applicationId: String? = null, @SerializedName("pageType") val pageType: String? = null, @SerializedName("data") val data: List? = null, @SerializedName("metadata") val formMetaData: FormMetaData? = null diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/models/request/InitiateInstallmentPaymentRequest.kt b/android/navi-insurance/src/main/java/com/navi/insurance/models/request/InitiateInstallmentPaymentRequest.kt index d0a76e9f85..3b2f7f288f 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/models/request/InitiateInstallmentPaymentRequest.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/models/request/InitiateInstallmentPaymentRequest.kt @@ -10,6 +10,7 @@ package com.navi.insurance.models.request import com.google.gson.annotations.SerializedName data class InitiateInstallmentPaymentRequest( + @SerializedName("applicationId") val applicationId: String? = null, @SerializedName("installmentNumber") val installmentNumber: Int?, @SerializedName("installmentDate") val installmentDate: String?, @SerializedName("source") val source: String = "MOBILE", diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/models/response/FormPageResponse.kt b/android/navi-insurance/src/main/java/com/navi/insurance/models/response/FormPageResponse.kt index 63d9d38189..33084a0cc9 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/models/response/FormPageResponse.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/models/response/FormPageResponse.kt @@ -23,6 +23,7 @@ data class FormPageResponse( ) data class FormMetaData( + @SerializedName("applicationId") val applicationId: String? = null, @SerializedName("preQuoteId") val preQuoteId: String? = null, @SerializedName("quoteId") val quoteId: String? = null, @SerializedName("policyId") val policyId: String? = null, diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/models/response/PolicyIncompleteMemberDetails.kt b/android/navi-insurance/src/main/java/com/navi/insurance/models/response/PolicyIncompleteMemberDetails.kt index e52eaa8d50..9abcea8ab1 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/models/response/PolicyIncompleteMemberDetails.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/models/response/PolicyIncompleteMemberDetails.kt @@ -10,6 +10,7 @@ package com.navi.insurance.models.response import com.google.gson.annotations.SerializedName data class PolicyIncompleteMemberDetails( + @SerializedName("applicationId") val applicationId: String? = null, @SerializedName("selfDetailsRequired") var selfDetailsRequired: Boolean? = null, @SerializedName("memberDetailList") var memberDetailList: List? ) { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/network/retrofit/RetrofitService.kt b/android/navi-insurance/src/main/java/com/navi/insurance/network/retrofit/RetrofitService.kt index a9bbe4056c..fdfd8f42f5 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/network/retrofit/RetrofitService.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/network/retrofit/RetrofitService.kt @@ -127,6 +127,7 @@ interface RetrofitService { @Query("clientStatus") clientStatus: String?, @Query("pgClientStatus") pgClientStatus: String? = null, @Query("flowIdentifier") flowIdentifier: String?, + @Query("applicationId") applicationId: String?, @Query("policyId") policyId: String?, ): Response> @@ -468,7 +469,8 @@ interface RetrofitService { @Path("quoteId") quoteId: String, @Path("planId") planId: String, @Query("tabId") tabId: String? = null, - @Query("applicationType") applicationType: String? + @Query("applicationType") applicationType: String?, + @Query("applicationId") applicationId: String? = null ): Response> @GET("/quotes/{quoteId}/plans/compare") @@ -895,11 +897,14 @@ interface RetrofitService { @GET("/journeys/{journeyKey}/{referenceId}") suspend fun fetchFormWithReferenceId( @Path("referenceId") referenceId: String, - @Path("journeyKey") journeyKey: String + @Path("journeyKey") journeyKey: String, + @Query("applicationId") applicationId: String? = null ): Response> @GET("/customer-kyc/pre-kyc") - suspend fun fetchPreKycDetails(): Response> + suspend fun fetchPreKycDetails( + @Query("applicationId") applicationId: String? = null + ): Response> @PATCH("/journeys/{journeyKey}/{quoteId}/{transitionKey}") suspend fun transitionFormPageWithQuoteId( @@ -1128,7 +1133,9 @@ interface RetrofitService { ): Response> @GET("/okyc/settings") - suspend fun fetchAadhaarInitResponse(): Response> + suspend fun fetchAadhaarInitResponse( + @Query("applicationId") applicationId: String? = null + ): Response> @POST("/okyc/verify") suspend fun postAadhaarVerificationData( @@ -1137,24 +1144,28 @@ interface RetrofitService { @GET("/okyc/{kycReferenceId}") suspend fun fetchAadhaarPollingResponse( - @Path("kycReferenceId") policyId: String? = null + @Path("kycReferenceId") policyId: String? = null, + @Query("applicationId") applicationId: String? = null ): Response> @GET("/quotes/{quoteId}/status") suspend fun fetchPolicyStatusResponse( @Path("quoteId") quoteId: String? = null, - @Query("applicationType") applicationType: String? = null + @Query("applicationType") applicationType: String? = null, + @Query("applicationId") applicationId: String? = null ): Response> @GET("/payment-screen") suspend fun fetchPAymentReviewInMR( @Query("id") id: String? = null, - @Query("paymentFlowIdentifier") paymentFlowIdentifier: String? = null + @Query("paymentFlowIdentifier") paymentFlowIdentifier: String? = null, + @Query("applicationId") applicationId: String? = null ): Response> @GET("/quotes/{quoteId}/member-identity-details") suspend fun fetchMemberNameDob( - @Path("quoteId") quoteId: String? = null + @Path("quoteId") quoteId: String? = null, + @Query("applicationId") applicationId: String? = null ): Response> @PATCH("/quotes/{quoteId}/member-identity-details") @@ -1208,23 +1219,27 @@ interface RetrofitService { @GET("/pre-quotes/{preQuoteId}") suspend fun fetchFormPageWithPreQuoteId( @Path("preQuoteId") preQuoteId: String, - @Query("applicationType") applicationType: String + @Query("applicationType") applicationType: String, + @Query("applicationId") applicationId: String? = null ): Response> @POST("/pre-quotes") suspend fun fetchPreQuoteFormWithApplicationType( - @Query("applicationType") applicationType: String + @Query("applicationType") applicationType: String, + @Body formNextPageRequest: FormWidgetRequest, ): Response> @GET("/pre-quotes") suspend fun fetchPreQuoteJourney( - @Query("applicationType") applicationType: String + @Query("applicationType") applicationType: String, + @Query("applicationId") applicationId: String? = null ): Response> @POST("/quotes/{quoteId}/pages/{pageType}") suspend fun fetchFormPageWithQuoteId( @Path("quoteId") quoteId: String, - @Path("pageType") pageType: String + @Path("pageType") pageType: String, + @Body formNextPageRequest: FormWidgetRequest, ): Response> @GET("/hospital/search") diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/repository/PaymentReviewRepository.kt b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/repository/PaymentReviewRepository.kt index 32a360a155..b76e5a89e0 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/repository/PaymentReviewRepository.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/repository/PaymentReviewRepository.kt @@ -18,7 +18,14 @@ class PaymentReviewRepository @Inject constructor(private val retrofitService: R suspend fun fetchPaymentReviewInMR( id: String? = null, - paymentFlowIdentifier: String? + paymentFlowIdentifier: String?, + applicationId: String? = null ): RepoResult = - apiResponseCallback(retrofitService.fetchPAymentReviewInMR(id = id, paymentFlowIdentifier)) + apiResponseCallback( + retrofitService.fetchPAymentReviewInMR( + id = id, + paymentFlowIdentifier, + applicationId = applicationId + ) + ) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentReviewFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentReviewFragment.kt index d029a97102..e3fbe23f00 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentReviewFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentReviewFragment.kt @@ -87,6 +87,7 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { private var id: String? = null private var paymentFlowIdentifier: String? = null private var applicationType: String? = null + private var applicationId: String? = null private var eventName: String? = null private var parentActivity: InsuranceContainerActivity? = null private val naviCheckoutVM by viewModels() @@ -138,6 +139,7 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { ?: run { activity?.intent?.getStringExtra(EVENT_NAME_EXTRA) } sendInitScreenEvent() paymentFlowIdentifier = arguments?.getString(PAYMENT_FLOW_IDENTIFIER) + applicationId = arguments?.getString(ARG_APPLICATION_ID) parentActivity = activity as? InsuranceContainerActivity binding.landingPageRv.adapter = rvAdapter return binding.root @@ -164,7 +166,7 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { object : NaviErrorPageView.Callback { override fun onRetryClick(tag: String?) { if (tag == ApiErrorTagType.BENEFIT_EXPLAINER_DETAILS.value) { - viewModel.fetchPaymentReview(id, paymentFlowIdentifier) + viewModel.fetchPaymentReview(id, paymentFlowIdentifier, applicationId) } } } @@ -231,7 +233,7 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { } } .launchIn(viewLifecycleOwner.lifecycleScope) - viewModel.fetchPaymentReview(id, paymentFlowIdentifier) + viewModel.fetchPaymentReview(id, paymentFlowIdentifier, applicationId) } private fun handleSuccessResponse() { @@ -275,14 +277,22 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { .toBoolean() .not() ) { - policyId = getParameterFromCta(it, Constants.POLICY_ID) + policyId = + getParameterFromCta(it, Constants.POLICY_ID) + ?: getParameterFromCta(it, ARG_APPLICATION_ID) applicationType = getParameterFromCta(it, Constants.APPLICATION_TYPE) val request = InitiateInstallmentPaymentRequest( + applicationId = getParameterFromCta(it, ARG_APPLICATION_ID), installmentNumber = getParameterFromCta(it, Constants.INSTALMENT_NUMBER) ?.toInt(), - paymentType = getParameterFromCta(it, Constants.PAYMENT_TYPE), + paymentType = + getParameterFromCta(it, Constants.PAYMENT_TYPE) + ?: getParameterFromCta( + it, + Constants.PAYMENT_SCHEDULE_TYPE + ), installmentDate = getParameterFromCta(it, Constants.INSTALMENT_DATE), clientSuggestedPaymentProvider = null, @@ -298,7 +308,11 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { - viewModel.fetchPaymentReview(id, paymentFlowIdentifier) + viewModel.fetchPaymentReview( + id, + paymentFlowIdentifier, + applicationId + ) } } ) @@ -314,7 +328,11 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { - viewModel.fetchPaymentReview(id, paymentFlowIdentifier) + viewModel.fetchPaymentReview( + id, + paymentFlowIdentifier, + applicationId + ) } } ) @@ -390,7 +408,11 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { - viewModel.fetchPaymentReview(id, paymentFlowIdentifier) + viewModel.fetchPaymentReview( + id, + paymentFlowIdentifier, + applicationId + ) } } ) @@ -403,7 +425,11 @@ class PaymentReviewFragment : GiBaseFragment(), WidgetCallback { callbackHandler = object : RequestToCallbackHandler { override fun onCallbackRaised() { - viewModel.fetchPaymentReview(id, paymentFlowIdentifier) + viewModel.fetchPaymentReview( + id, + paymentFlowIdentifier, + applicationId + ) } } ) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentStatusActivity.kt b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentStatusActivity.kt index e075ddd07a..d1642b096c 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentStatusActivity.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/ui/PaymentStatusActivity.kt @@ -90,6 +90,7 @@ class PaymentStatusActivity : GiBaseActivity() { pgClientStatus = null, flowIdentifier = intent?.getStringExtra(PAYMENT_FLOW_IDENTIFIER), pollingConfig = turboPaymentOrderDetail?.pollingConfig, + applicationId = turboPaymentOrderDetail?.applicationId, policyId = intent?.getStringExtra(Constants.POLICY_ID) ) lifecycleScope.launch { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/viewmodel/HITurboCheckoutVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/viewmodel/HITurboCheckoutVM.kt index 862c54ee2b..9f4da5e5ed 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/viewmodel/HITurboCheckoutVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/viewmodel/HITurboCheckoutVM.kt @@ -70,6 +70,7 @@ open class HITurboCheckoutVM @Inject constructor(actionHandler: ActionHandler) : pgClientStatus: String? = null, flowIdentifier: String? = null, pollingConfig: TurboPaymentOrderDetail.PollingConfig? = null, + applicationId: String? = null, policyId: String? ) { _paymentStatus.value = PaymentInitState.Loading @@ -91,6 +92,7 @@ open class HITurboCheckoutVM @Inject constructor(actionHandler: ActionHandler) : clientStatus, pgClientStatus, flowIdentifier, + applicationId, policyId ) if ( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/viewmodel/PaymentReviewVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/viewmodel/PaymentReviewVM.kt index 3b194efded..2a4998b45d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/viewmodel/PaymentReviewVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/paymentreview/autopayoption/viewmodel/PaymentReviewVM.kt @@ -61,12 +61,17 @@ constructor( } } - fun fetchPaymentReview(id: String?, paymentFlowIdentifier: String?) { + fun fetchPaymentReview( + id: String?, + paymentFlowIdentifier: String?, + applicationId: String? = null + ) { viewModelScope.launch( dispatcher.io + exceptionHandler(ApiErrorTagType.PAYMENT_REVIEW_SCREEN_LOAD_ERROR.value) ) { _paymentRequestFlow.value = ResponseState.Loading - val response = repository.fetchPaymentReviewInMR(id, paymentFlowIdentifier) + val response = + repository.fetchPaymentReviewInMR(id, paymentFlowIdentifier, applicationId) if ( response.error.isNull() && response.errors.isNullOrEmpty() && diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/FormWidgetRequest.kt b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/FormWidgetRequest.kt index 144b0bd701..795e4a03e7 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/FormWidgetRequest.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/FormWidgetRequest.kt @@ -10,6 +10,7 @@ package com.navi.insurance.pre.purchase.journey import com.google.gson.annotations.SerializedName data class FormWidgetRequest( + @SerializedName("applicationId") val applicationId: String? = null, @SerializedName("pageType") val pageType: String? = null, @SerializedName("data") val data: List? = null, @SerializedName("metadata") val metadata: PreQuoteMetaData? = null diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyPageResponse.kt b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyPageResponse.kt index f5916cdc08..1aead1cada 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyPageResponse.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyPageResponse.kt @@ -25,6 +25,7 @@ data class PreQuoteJourneyPageResponse( ) data class PreQuoteMetaData( + @SerializedName("applicationId") val applicationId: String? = null, @SerializedName("preQuoteId") val preQuoteId: String? = null, @SerializedName("quoteId") val quoteId: String? = null, @SerializedName("policyId") val policyId: String? = null, @@ -48,6 +49,8 @@ data class PreQuoteJourneyState( val isLoadingNextPage: Boolean = false ) +data class PreQuoteRequestBody(@SerializedName("applicationId") val applicationId: String? = null) + data class PreQuoteNextPageRequest( @SerializedName("pageType") val pageType: String? = null, @SerializedName("data") val data: List? = null, diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyRespository.kt b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyRespository.kt index a121865a56..c3268c8f89 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyRespository.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyRespository.kt @@ -17,34 +17,44 @@ class PreQuoteJourneyRespository @Inject constructor(private val apiService: Ret suspend fun fetchFormPageDataWithPreQuoteId( preQuoteId: String, - applicationType: String + applicationType: String, + applicationId: String? = null ): RepoResult { return apiResponseCallback( - apiService.fetchFormPageWithPreQuoteId(preQuoteId, applicationType) + apiService.fetchFormPageWithPreQuoteId(preQuoteId, applicationType, applicationId) ) } suspend fun fetchFormPageDataWithQuoteId( quoteId: String, - pageType: String + pageType: String, + formRequest: FormWidgetRequest, ): RepoResult { - return apiResponseCallback(apiService.fetchFormPageWithQuoteId(quoteId, pageType)) + return apiResponseCallback( + apiService.fetchFormPageWithQuoteId(quoteId, pageType, formRequest) + ) } - suspend fun postFormPageData(applicationType: String): RepoResult { - return apiResponseCallback(apiService.fetchPreQuoteFormWithApplicationType(applicationType)) + suspend fun postFormPageData( + applicationType: String, + requestBody: FormWidgetRequest, + ): RepoResult { + return apiResponseCallback( + apiService.fetchPreQuoteFormWithApplicationType(applicationType, requestBody) + ) } suspend fun fetchFormPageData( - applicationType: String + applicationType: String, + applicationId: String? = null ): RepoResult { - return apiResponseCallback(apiService.fetchPreQuoteJourney(applicationType)) + return apiResponseCallback(apiService.fetchPreQuoteJourney(applicationType, applicationId)) } suspend fun makeNextPageFormRequest( formRequest: FormWidgetRequest, preQuoteId: String, - transitionName: String + transitionName: String, ): RepoResult { return apiResponseCallback( apiService.nextPagePreQuote( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyFragment.kt index 6d17f186bc..a4999039c1 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyFragment.kt @@ -83,6 +83,7 @@ import com.navi.insurance.pre.purchase.journey.WidgetKey import com.navi.insurance.pre.purchase.journey.composables.ShowLoaderScreen import com.navi.insurance.pre.purchase.journey.factory.ComposableWidgetFactory import com.navi.insurance.quoteredesign.fragments.KYCBottomSheetFragment +import com.navi.insurance.util.ARG_APPLICATION_ID import com.navi.insurance.util.ARG_APPLICATION_TYPE import com.navi.insurance.util.ARG_PRE_QUOTE_ID import com.navi.insurance.util.ApiConstants @@ -126,6 +127,7 @@ class PreQuoteJourneyFragment() : GiBaseFragment(), WidgetCallback, NewBottomShe viewModel.updateApplicationType( arguments?.getString(ARG_APPLICATION_TYPE) ?: ApiConstants.FRESH_POLICY ) + viewModel.updateApplicationId(arguments?.getString(ARG_APPLICATION_ID)) view = NaviErrorPageView(requireContext()) val composeView = ComposeView(requireContext()).apply { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyViewModel.kt b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyViewModel.kt index d27c937cff..3641874b33 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyViewModel.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyViewModel.kt @@ -34,6 +34,7 @@ import com.navi.insurance.pre.purchase.journey.PreQuoteMetaData import com.navi.insurance.pre.purchase.journey.PreQuotePatchData import com.navi.insurance.pre.purchase.journey.PreQuotePatchResponse import com.navi.insurance.util.APPLICATION_TYPE_EXTRA +import com.navi.insurance.util.ARG_APPLICATION_ID import com.navi.insurance.util.Constants import com.navi.insurance.util.Constants.DELAY_1000 import com.navi.insurance.util.PRE_QUOTE_ID_EXTRA @@ -97,6 +98,7 @@ constructor( private var currentPageMetaData: PreQuoteMetaData? = null private var preQuoteId: String? = null private var applicationType: String? = null + private var applicationId: String? = null private var requestPageType: String? = null private var quoteId: String? = null private var transitionName: String? = null @@ -140,12 +142,18 @@ constructor( response = repository.fetchFormPageDataWithPreQuoteId( preQuoteId.orEmpty(), - applicationType = applicationType.orEmpty() + applicationType = applicationType.orEmpty(), + applicationId = applicationId ) } else { - response = repository.fetchFormPageData(applicationType.orEmpty()) + response = + repository.fetchFormPageData(applicationType.orEmpty(), applicationId) if (response.data.isNull()) { - response = repository.postFormPageData(applicationType.orEmpty()) + response = + repository.postFormPageData( + applicationType.orEmpty(), + FormWidgetRequest(applicationId) + ) } } } @@ -163,6 +171,7 @@ constructor( ) currentPageMetaData = this.metaData updatePreQuoteId(this.metaData?.preQuoteId.orEmpty()) + updateApplicationId(this.metaData?.applicationId.orEmpty()) } } else { _preQuoteJourneyFlow.value = @@ -189,7 +198,8 @@ constructor( response = repository.fetchFormPageDataWithQuoteId( quoteId.orEmpty(), - requestPageType.orEmpty() + requestPageType.orEmpty(), + FormWidgetRequest(applicationId) ) if (response?.data?.cta.isNotNull()) { val bundle = Bundle() @@ -198,6 +208,8 @@ constructor( ctaData.parameters?.forEach { lineItem -> if (lineItem.key == PRE_QUOTE_ID_EXTRA) { updatePreQuoteId(lineItem.value) + } else if (lineItem.key == ARG_APPLICATION_ID) { + updateApplicationId(lineItem.value) } } ctaData.parameters?.forEach { lineItem -> @@ -281,12 +293,17 @@ constructor( response = repository.fetchFormPageDataWithPreQuoteId( preQuoteId.orEmpty(), - applicationType = applicationType.orEmpty() + applicationType = applicationType.orEmpty(), + applicationId = applicationId ) } else { - response = repository.fetchFormPageData(applicationType.orEmpty()) + response = repository.fetchFormPageData(applicationType.orEmpty(), applicationId) if (response.data.isNull()) { - response = repository.postFormPageData(applicationType.orEmpty()) + response = + repository.postFormPageData( + applicationType.orEmpty(), + FormWidgetRequest(applicationId) + ) } } if ( @@ -303,6 +320,7 @@ constructor( hasErrorOccurred = false ) currentPageMetaData = this.metaData + updateApplicationId(this.metaData?.applicationId.orEmpty()) updatePreQuoteId(this.metaData?.preQuoteId.orEmpty()) } _showOverLay.value = false @@ -451,9 +469,14 @@ constructor( this.applicationType = applicationType } + fun updateApplicationId(applicationId: String?) { + this.applicationId = applicationId + } + fun updatePatchRequestData(patchRequestData: PreQuotePatchData?) { this.patchRequestData = FormWidgetRequest( + applicationId = applicationId, pageType = currentPageMetaData?.pageType, metadata = currentPageMetaData, data = patchRequestData?.data diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyAddonFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyAddonFragment.kt index 781bfd2536..f2b77dfa13 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyAddonFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyAddonFragment.kt @@ -59,6 +59,7 @@ class PolicyAddonFragment : BaseFragment(), WidgetCallback, View.OnClickListener private val sharedViewModel by lazy { ViewModelProvider(requireActivity()).get(QuoteVM::class.java) } + private var applicationId: String? = null private var listener: FragmentCallbackListener? = null private var ADD_ONS = "ADD_ONS" private val FIRST_ITEM = 0 @@ -79,12 +80,26 @@ class PolicyAddonFragment : BaseFragment(), WidgetCallback, View.OnClickListener startShimmerLoading() initObservers() initListeners() + getApplicationId() fetchAddons() return binding.root } - private val fetchAddons = { fetchAddonsData(AddonRequest()) } + private fun getApplicationId() { + applicationId = activity?.intent?.getStringExtra(ARG_APPLICATION_ID) + if (applicationId.isNullOrEmpty()) { + arguments?.getParcelable(Constants.PARAMS_EXTRA)?.let { ctaData -> + ctaData.parameters?.forEach { lineItem -> + when (lineItem.key) { + ARG_APPLICATION_ID -> applicationId = lineItem.value + } + } + } + } + } + + private val fetchAddons = { fetchAddonsData(AddonRequest(applicationId = applicationId)) } private fun fetchAddonsData(addonRequest: AddonRequest) { var quoteId: String? = activity?.intent?.getStringExtra(QUOTE_ID_EXTRA) @@ -93,6 +108,7 @@ class PolicyAddonFragment : BaseFragment(), WidgetCallback, View.OnClickListener ctaData.parameters?.forEach { lineItem -> when (lineItem.key) { QUOTE_ID_EXTRA -> quoteId = lineItem.value ?: "" + ARG_APPLICATION_ID -> applicationId = lineItem.value } } } @@ -245,7 +261,7 @@ class PolicyAddonFragment : BaseFragment(), WidgetCallback, View.OnClickListener if (!quoteId.isNullOrEmpty()) { sharedViewModel.fetchAddOnDetails( quoteId!!, - AddonRequest(listOf(Addon(planId, isOpted))), + AddonRequest(listOf(Addon(planId, isOpted)), applicationId = applicationId), activity?.intent?.extras?.getString(APPLICATION_TYPE_EXTRA) ) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyBenefitsFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyBenefitsFragment.kt index fd899d923b..c24e4ae806 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyBenefitsFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/PolicyBenefitsFragment.kt @@ -136,7 +136,10 @@ class PolicyBenefitsFragment : BaseFragment(), WidgetCallback, View.OnClickListe planId!!, tabId, activity?.intent?.extras?.getString(APPLICATION_TYPE_EXTRA) - ?: arguments?.getString(APPLICATION_TYPE_EXTRA) + ?: arguments?.getString(APPLICATION_TYPE_EXTRA), + applicationId = + activity?.intent?.extras?.getString(ARG_APPLICATION_ID) + ?: arguments?.getString(ARG_APPLICATION_ID) ) } else if (!benefitsType.isNullOrEmpty()) { sharedViewModel.fetchBenefitsUsingType( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/util/Constants.kt b/android/navi-insurance/src/main/java/com/navi/insurance/util/Constants.kt index 03795d77d7..bb84697037 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/util/Constants.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/util/Constants.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2019-2023 by Navi Technologies Limited + * * Copyright © 2019-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/util/IntentConstants.kt b/android/navi-insurance/src/main/java/com/navi/insurance/util/IntentConstants.kt index 80b273c648..705e7672d9 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/util/IntentConstants.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/util/IntentConstants.kt @@ -14,6 +14,7 @@ const val ERROR_MESSAGE = "errorMessage" const val RESULT_USER_CANCELLED = "userCancelled" const val QUOTE_ID_EXTRA = "quoteId" const val ARG_PRE_QUOTE_ID = "preQuoteId" +const val ARG_APPLICATION_ID = "applicationId" const val ARG_APPLICATION_TYPE = "applicationType" const val PAGE_TYPE = "pageType" const val POLICY_ID_EXTRA = "policyId" diff --git a/network/NetworkService.ts b/network/NetworkService.ts index 99ecaa084d..8a8e33b2f6 100644 --- a/network/NetworkService.ts +++ b/network/NetworkService.ts @@ -14,6 +14,7 @@ function newAbortSignal(timeoutMs: number): AbortSignal { export const get = async ( url: string, config?: AxiosRequestConfig, + params?: Record, ): Promise => { try { let requestConfig: AxiosRequestConfig = config || {}; @@ -30,6 +31,10 @@ export const get = async ( addBundleVersionToHeader(axiosInstance); + if (params) { + requestConfig.params = params; + } + const response = await axiosInstance.get(baseUrl + url, requestConfig); return handleSuccess(response); } catch (error) { diff --git a/network/payloads/request/QuoteOfferRequest.ts b/network/payloads/request/QuoteOfferRequest.ts index 74298adf1b..089b8c6645 100644 --- a/network/payloads/request/QuoteOfferRequest.ts +++ b/network/payloads/request/QuoteOfferRequest.ts @@ -9,6 +9,7 @@ interface QuoteOfferRequest { preQuoteId?: string | null; policyToBeCopied?: string; applicationType?: string; + applicationId?: string | null; } interface Term {