diff --git a/app/build.gradle b/app/build.gradle index 7cb9e11..33494e8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,8 +50,8 @@ dependencies { implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.1' testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.4' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' // Architectural Components implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 245ae96..8bcec28 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,7 +28,7 @@ android:label="@string/appName" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/Theme.NiveshSDK" + android:theme="@style/Theme.NiveshFDSDK" tools:targetApi="31"> , private val NumberOfTabs: Int) : FragmentPagerAdapter(manager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { +class SectionsPagerAdapter(manager: FragmentManager,private val fragments: Array) : FragmentPagerAdapter(manager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { private val titles = ArrayList() override fun getItem(position: Int): Fragment = fragments[position] - override fun getCount(): Int = NumberOfTabs + override fun getCount(): Int = fragments.size override fun getPageTitle(position: Int): CharSequence = titles[position] diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt index 2c7c967..f426d2a 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt @@ -52,13 +52,13 @@ interface ApiInterface { @POST("FinaliseFD") suspend fun finaliseFD( - @Body requestBody: RequestBody, + @Body requestBody: FinalizeFDRequest, @Header("token") token: String ): Response @POST("FinaliseKYC") suspend fun finaliseKYC( - @Body requestBody: RequestBody, + @Body requestBody: FinalizeKYCRequest, @Header("token") token: String ): Response diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FinaliseFD.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FinaliseFD.kt new file mode 100644 index 0000000..b487f60 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FinaliseFD.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class FinaliseFD( + var FDProvider: String? = "", + var NiveshClientCode: String? = "", + var UniqueId: String? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDRequest.kt new file mode 100644 index 0000000..e77b6bf --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDRequest.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class FinalizeFDRequest( + var FinaliseFD: FinaliseFD? = null +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDResponse.kt new file mode 100644 index 0000000..ea2554c --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeFDResponse.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class FinalizeFDResponse( + val Response: ResponseXXXXXXXXXXXXXXXX +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeKYCRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeKYCRequest.kt new file mode 100644 index 0000000..cb1e51e --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FinalizeKYCRequest.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class FinalizeKYCRequest( + var FDProvider: String? = "", + var NiveshClientCode: String? = "", + var UniqueId: String? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXXXXXX.kt new file mode 100644 index 0000000..c16ac00 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXXXXXX.kt @@ -0,0 +1,9 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXXXXXXXXXXXXX( + val Errors: List, + val Message: String, + val Status: String, + val StatusCode: Int, + val UniqueId: String +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt index 80514ed..23eef56 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt @@ -4,18 +4,22 @@ import com.nivesh.production.bajajfd.interfaces.ApiInterface import com.nivesh.production.bajajfd.model.* class MainRepository constructor(private val apiInterface: ApiInterface) { - suspend fun getRatesResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) - - suspend fun getCodesResponse(requestBody: GetCodeRequest, token: String) = - apiInterface.getCodes(requestBody, token) + // MainActivity suspend fun getStepsCountResponse(requestBody: FDStepsCountRequest, token: String) = apiInterface.getFDStepsCount(requestBody, token) suspend fun getClientDetailsResponse(getClientDetails: getClientDetailsRequest, token: String) = apiInterface.getClientDetails(getClientDetails, token) + + // Step One + suspend fun getRatesResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) + + suspend fun getCodesResponse(requestBody: GetCodeRequest, token: String) = + apiInterface.getCodes(requestBody, token) + suspend fun createCalculateFDMaturityAmount( requestBody: GetMaturityAmountRequest, token: String @@ -23,30 +27,10 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { apiInterface.getCalculateFDMaturityAmount(requestBody, token) + // Step Two suspend fun createFDKYCResponse(createFDRequest: CreateFDRequest, token: String) = apiInterface.createFDApp(createFDRequest, token) - suspend fun documentsUploadResponse(getRatesRequest: DocumentUpload, token: String) = - apiInterface.documentsUpload(getRatesRequest, token) - - suspend fun saveFDOtherDataResponse(getRatesRequest: SaveFDOtherDataRequest, token: String) = - apiInterface.saveFDOtherData(getRatesRequest, token) - - suspend fun getFDDetailsResponse(getRatesRequest: GetFDDetailsRequest, token: String) = - apiInterface.getFDDetails(getRatesRequest, token) - - suspend fun updateFDPaymentStatusResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) - - suspend fun finaliseFDResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) - - suspend fun finaliseKYCResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) - - suspend fun paymentReQueryResponse(getRatesRequest: PaymentReQueryRequest, token: String) = - apiInterface.paymentReQuery(getRatesRequest, token) - suspend fun panCheck(panCheck: PanCheckRequest, token: String) = apiInterface.panCheckApi(panCheck, token) @@ -86,13 +70,41 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun payModeCheck(getCodeRequest: GetCodeRequest, token: String) = apiInterface.payModeApi(getCodeRequest, token) + suspend fun bankValidationApiRequest(bankValidationApiRequest: BankValidationApiRequest, token: String) = + apiInterface.bankValidationApi(bankValidationApiRequest, token) + + + + // Step Three + suspend fun documentsUploadResponse(getRatesRequest: DocumentUpload, token: String) = + apiInterface.documentsUpload(getRatesRequest, token) + + + suspend fun saveFDOtherDataResponse(getRatesRequest: SaveFDOtherDataRequest, token: String) = + apiInterface.saveFDOtherData(getRatesRequest, token) + + suspend fun getFDDetailsResponse(getRatesRequest: GetFDDetailsRequest, token: String) = + apiInterface.getFDDetails(getRatesRequest, token) + + suspend fun updateFDPaymentStatusResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) + + + // Step 4 suspend fun customerListCheck(getCodeRequest: GetCodeRequest, token: String) = apiInterface.customerListApi(getCodeRequest, token) suspend fun checkFDKYCRequest(checkFDKYCRequest: CheckFDKYCRequest, token: String) = apiInterface.checkFDKYC(checkFDKYCRequest, token) - suspend fun bankValidationApiRequest(bankValidationApiRequest: BankValidationApiRequest, token: String) = - apiInterface.bankValidationApi(bankValidationApiRequest, token) + // Step 5 + suspend fun finaliseFDResponse(getRatesRequest: FinalizeFDRequest, token: String) = + apiInterface.finaliseFD(getRatesRequest, token) + + suspend fun finaliseKYCResponse(getRatesRequest: FinalizeKYCRequest, token: String) = + apiInterface.finaliseKYC(getRatesRequest, token) + + suspend fun paymentReQueryResponse(getRatesRequest: PaymentReQueryRequest, token: String) = + apiInterface.paymentReQuery(getRatesRequest, token) } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt index 8bd7fe8..195284e 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt @@ -6,6 +6,7 @@ import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.os.Bundle import android.util.Log +import android.view.View import android.view.WindowManager import android.webkit.WebView import android.webkit.WebViewClient @@ -29,6 +30,9 @@ import com.nivesh.production.bajajfd.util.Common.Companion.getDate import com.nivesh.production.bajajfd.util.Common.Companion.selectedShape import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation import com.nivesh.production.bajajfd.util.Constants.Companion.token +import com.nivesh.production.bajajfd.util.ProgressUtil +import com.nivesh.production.bajajfd.util.ProgressUtil.hideLoading +import com.nivesh.production.bajajfd.util.ProgressUtil.showLoading import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.* @@ -53,7 +57,7 @@ class BajajFdMainActivity : BaseActivity() { var nomineeGuardianDetails: NomineeGuardianDetails = NomineeGuardianDetails() var getClientDetailsResponse: getClientDetailsResponse = getClientDetailsResponse() var uniqueId: String = "" - private var stepCount: Int = 0 + var stepCount: Int = 0 private lateinit var sectionsPagerAdapter: SectionsPagerAdapter private lateinit var fragments: Array var dialogWebView: Dialog? = null @@ -106,6 +110,9 @@ class BajajFdMainActivity : BaseActivity() { when (code) { 200 -> { stepCount = stepsCountResponse.Response.StepsCount + if (stepCount == 3) { + binding.llStep4.visibility = View.GONE + } getClientDetailsApi(stepsCountResponse.Response.StepsCount) } 650 -> "" @@ -159,6 +166,7 @@ class BajajFdMainActivity : BaseActivity() { userRequest.deviceInfo = deviceInfo getClientDetailsRequest.UserRequest = userRequest Log.e("getClientDetail ", " Request -->" + Gson().toJson(getClientDetailsRequest)) + showLoading(this@BajajFdMainActivity) viewModel.getClientDetails(getClientDetailsRequest, token, this) viewModel.getClientDetailsMutableData.observe(this) { response -> when (response) { @@ -189,7 +197,7 @@ class BajajFdMainActivity : BaseActivity() { } } is Resource.Loading -> { - + hideLoading() } is Resource.DataError -> { @@ -201,7 +209,7 @@ class BajajFdMainActivity : BaseActivity() { private fun setViewPager(stepsCount: Int) { // steps setting - setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape()) + setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape(), stepsCount) if (stepCount == 3) { fragments = arrayOf( @@ -221,15 +229,15 @@ class BajajFdMainActivity : BaseActivity() { } // set viewPager - sectionsPagerAdapter = SectionsPagerAdapter(supportFragmentManager, fragments, stepsCount) + sectionsPagerAdapter = SectionsPagerAdapter(supportFragmentManager, fragments) val viewPager: DisableAdapter = binding.viewPager viewPager.adapter = sectionsPagerAdapter viewPager.setPagingEnabled(false) - // if (sectionsPagerAdapter.count > 1) { - viewPager.offscreenPageLimit = stepCount - 1 - // } else { - // viewPager.offscreenPageLimit = 1 - // } + if (sectionsPagerAdapter.count > 1) { + viewPager.offscreenPageLimit = stepCount + } else { + viewPager.offscreenPageLimit = 1 + } viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, @@ -245,7 +253,8 @@ class BajajFdMainActivity : BaseActivity() { defaultShape(), defaultShape(), defaultShape(), - defaultShape() + defaultShape(), + stepsCount ) } 1 -> { @@ -253,7 +262,8 @@ class BajajFdMainActivity : BaseActivity() { selectedShape(), defaultShape(), defaultShape(), - defaultShape() + defaultShape(), + stepsCount ) } 2 -> { @@ -261,7 +271,8 @@ class BajajFdMainActivity : BaseActivity() { selectedShape(), selectedShape(), defaultShape(), - defaultShape() + defaultShape(), + stepsCount ) } 3 -> { @@ -269,7 +280,8 @@ class BajajFdMainActivity : BaseActivity() { selectedShape(), selectedShape(), selectedShape(), - defaultShape() + defaultShape(), + stepsCount ) } 4 -> { @@ -277,7 +289,8 @@ class BajajFdMainActivity : BaseActivity() { selectedShape(), selectedShape(), selectedShape(), - selectedShape() + selectedShape(), + stepsCount ) } } @@ -352,12 +365,16 @@ class BajajFdMainActivity : BaseActivity() { drawable: Drawable?, drawable1: Drawable?, drawable2: Drawable?, - drawable3: Drawable? + drawable3: Drawable?, + stepsCount: Int ) { binding.stepOne.background = drawable binding.stepTwo.background = drawable1 binding.stepThree.background = drawable2 - binding.stepFour.background = drawable3 + if (stepsCount == 4) { + binding.stepFour.background = drawable3 + } + } // step 1 response @@ -430,6 +447,7 @@ class BajajFdMainActivity : BaseActivity() { paymentReQueryRequest.UniqueId = uniqueId paymentReQueryRequest.NiveshClientCode = getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + ProgressUtil.showLoading(this@BajajFdMainActivity) viewModel.getPaymentReQuery(paymentReQueryRequest, token, this) viewModel.getPaymentReQueryMutableData.observe(this) { response -> when (response) { @@ -460,7 +478,7 @@ class BajajFdMainActivity : BaseActivity() { } } is Resource.Loading -> { - + hideLoading() } is Resource.DataError -> { diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt index bd77401..224961c 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt @@ -1,13 +1,20 @@ package com.nivesh.production.bajajfd.ui.fragment import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment +import com.google.gson.Gson import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFiveBinding -import com.nivesh.production.bajajfd.model.PaymentReQueryResponse +import com.nivesh.production.bajajfd.model.* +import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.util.Common +import com.nivesh.production.bajajfd.util.Constants +import com.nivesh.production.bajajfd.util.Resource class StepFiveBajajFDFragment : Fragment() { @@ -18,32 +25,147 @@ class StepFiveBajajFDFragment : Fragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - binding.apply { - _binding = FragmentBajajfdStepFiveBinding.inflate(inflater, container, false) - } + + _binding = FragmentBajajfdStepFiveBinding.inflate(inflater, container, false) return binding.root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + binding.tvCongrats.text = "" + binding.tvSuccessMessage.text = "" + binding.btnViewOrder.setOnClickListener { + + } + } + fun getData(paymentReQueryResponse: PaymentReQueryResponse) { if (paymentReQueryResponse.Response.StatusCode == 200) { - binding.tvCongrats.text = getString(R.string.congratulations) - binding.tvSuccessMessage.text = paymentReQueryResponse.Response.Message + if (paymentReQueryResponse.Response.Message.isNotEmpty()) { + val arrOfStr: List = paymentReQueryResponse.Response.Message.split(" ", limit = 2) + binding.tvCongrats.text = arrOfStr[0] + binding.tvCongrats.setTextColor( + ContextCompat.getColor( + activity as BajajFdMainActivity, + R.color.green + ) + ) + binding.tvSuccessMessage.text = arrOfStr[1] + } }else{ - binding.tvCongrats.text = getString(R.string.sorry) - binding.tvSuccessMessage.text = paymentReQueryResponse.Response.Message + if (paymentReQueryResponse.Response.Message.isNotEmpty()) { + val arrOfStr: List = paymentReQueryResponse.Response.Message.split(" ", limit = 2) + binding.tvCongrats.text = arrOfStr[0] + binding.tvCongrats.setTextColor( + ContextCompat.getColor( + activity as BajajFdMainActivity, + R.color.red + ) + ) + binding.tvSuccessMessage.text = arrOfStr[1] + } } + finalizeFDApi() + finalizeKYCApi() } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) + private fun finalizeFDApi() { + val finalizeFDRequest = FinalizeFDRequest() + val finaliseFD = FinaliseFD() + finaliseFD.FDProvider = getString(R.string.bajaj) + finaliseFD.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + finaliseFD.UniqueId = (activity as BajajFdMainActivity).uniqueId + finalizeFDRequest.FinaliseFD = finaliseFD - binding.tvCongrats.text = "" - binding.tvSuccessMessage.text = "" - binding.btnViewOrder.setOnClickListener { + (activity as BajajFdMainActivity).viewModel.finaliseFD( + finalizeFDRequest, Constants.token, activity as BajajFdMainActivity + ) + (activity as BajajFdMainActivity).viewModel.getFinalizeFDMutableData.observe(viewLifecycleOwner){ response -> + when (response) { + is Resource.Success -> { + Log.e("finalizeKYC ", " response-->${response.data.toString()}") + val finalizeFDResponse: FinalizeFDResponse = + Gson().fromJson(response.data?.toString(), FinalizeFDResponse::class.java) + finalizeFDResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + + } + 650 -> "" + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + finalizeFDResponse.Response.Errors[0].ErrorMessage + ) + } + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) + } + } + is Resource.Loading -> { + } + is Resource.DataError -> { + + } + } } } + private fun finalizeKYCApi() { + val finalizeKYCRequest = FinalizeKYCRequest() + finalizeKYCRequest.FDProvider = getString(R.string.bajaj) + finalizeKYCRequest.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + finalizeKYCRequest.UniqueId = (activity as BajajFdMainActivity).uniqueId + (activity as BajajFdMainActivity).viewModel.finaliseKYC( + finalizeKYCRequest, Constants.token, activity as BajajFdMainActivity + ) + (activity as BajajFdMainActivity).viewModel.getFinalizeKYCMutableData.observe(viewLifecycleOwner){ response -> + when (response) { + is Resource.Success -> { + Log.e("finalizeKYC ", " response-->${response.data.toString()}") + val finalizeFDResponse: FinalizeFDResponse = + Gson().fromJson(response.data?.toString(), FinalizeFDResponse::class.java) + finalizeFDResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + + } + 650 -> "" + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + finalizeFDResponse.Response.Errors[0].ErrorMessage + ) + } + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) + } + } + is Resource.Loading -> { + + } + is Resource.DataError -> { + + } + } + } + + } + + + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt index 16cb88e..c307c54 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt @@ -18,6 +18,7 @@ import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation import com.nivesh.production.bajajfd.util.Constants.Companion.token +import com.nivesh.production.bajajfd.util.ProgressUtil import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.MyObseravble @@ -64,35 +65,29 @@ class StepFourBajajFDFragment : Fragment() { } binding.btnNext.setOnClickListener { - if ((activity as BajajFdMainActivity).loginRole == 5) { - selectedList = "" - for (getCodes in listOfCustomer) { - if (getCodes.isSelected) { - selectedList = if (selectedList.isEmpty()) { - getCodes.Value - } else { - selectedList.plus(",").plus(getCodes.Value) - } + selectedList = "" + for (getCodes in listOfCustomer) { + if (getCodes.isSelected) { + selectedList = if (selectedList.isEmpty()) { + getCodes.Value + } else { + selectedList.plus(",").plus(getCodes.Value) } } - if (binding.checkBox.isChecked && selectedList.isNotEmpty()) { - val saveFDOtherDataRequest = SaveFDOtherDataRequest() - saveFDOtherDataRequest.FDProvider = getString(R.string.bajaj) - saveFDOtherDataRequest.UniqueId = (activity as BajajFdMainActivity).uniqueId - saveFDOtherDataRequest.Values = selectedList - saveFDOtherDataRequest.NiveshClientCode = - (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE - // bajajFDInterface.stepFourApi(saveFDOtherDataRequest, payUrl, Value) - saveFDOtherData(saveFDOtherDataRequest, payUrl, value) - } else { - showDialogValidation( - activity as BajajFdMainActivity, - resources.getString(R.string.validTermsConditions) - ) - } - } else { - // go to view order } + if (validated()) { + if ((activity as BajajFdMainActivity).loginRole == 5) { + val saveFDOtherDataRequest = SaveFDOtherDataRequest() + saveFDOtherDataRequest.FDProvider = getString(R.string.bajaj) + saveFDOtherDataRequest.UniqueId = (activity as BajajFdMainActivity).uniqueId + saveFDOtherDataRequest.Values = selectedList + saveFDOtherDataRequest.NiveshClientCode = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + saveFDOtherData(saveFDOtherDataRequest, payUrl, value) + } else { + // go to view order + } + } } @@ -100,11 +95,34 @@ class StepFourBajajFDFragment : Fragment() { binding.btnBack.setOnClickListener { - (activity as BajajFdMainActivity).binding.viewPager.currentItem = 2 + if ((activity as BajajFdMainActivity).stepCount == 4) { + (activity as BajajFdMainActivity).binding.viewPager.currentItem = 2 + } else { + (activity as BajajFdMainActivity).binding.viewPager.currentItem = 1 + } + } + } + + private fun validated(): Boolean { + if (selectedList.isEmpty()) { + showDialogValidation( + activity as BajajFdMainActivity, + getString(R.string.validTermsCondition) + ) + return false + } else if (!binding.checkBox.isChecked) { + showDialogValidation( + activity as BajajFdMainActivity, + resources.getString(R.string.validTermsConditions) + ) + return false + } else { + return true } } private fun saveFDOtherData(data: SaveFDOtherDataRequest, payUrl: String, value: String) { + ProgressUtil.showLoading(activity as BajajFdMainActivity) (activity as BajajFdMainActivity).viewModel.saveFDOtherData( data, token, @@ -141,7 +159,7 @@ class StepFourBajajFDFragment : Fragment() { } } is Resource.Loading -> { - + ProgressUtil.hideLoading() } is Resource.DataError -> { @@ -223,6 +241,7 @@ class StepFourBajajFDFragment : Fragment() { getFDDetailsRequest.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE getFDDetailsRequest.UniqueId = (activity as BajajFdMainActivity).uniqueId + ProgressUtil.showLoading(activity as BajajFdMainActivity) (activity as BajajFdMainActivity).viewModel.getFDDetails( getFDDetailsRequest, token, @@ -272,7 +291,7 @@ class StepFourBajajFDFragment : Fragment() { } } is Resource.Loading -> { - + ProgressUtil.hideLoading() } is Resource.DataError -> { diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt index 9d541df..614e7b4 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt @@ -4,7 +4,6 @@ import android.Manifest import android.annotation.SuppressLint import android.app.Activity import android.content.DialogInterface -import android.content.Intent import android.content.pm.PackageManager import android.database.Cursor import android.graphics.Bitmap @@ -13,7 +12,6 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.OpenableColumns -import android.provider.Settings import android.util.Base64 import android.util.Log import android.view.LayoutInflater @@ -92,8 +90,11 @@ class StepThreeBajajFDFragment : Fragment() { if (isGranted) { takeImage() } else { - showDialogWithTwoButtons((activity as BajajFdMainActivity), getString(R.string.cameraPermission), getString( - R.string.permissionRequired)) + showDialogWithTwoButtons( + (activity as BajajFdMainActivity), getString(R.string.cameraPermission), getString( + R.string.permissionRequired + ) + ) } } @@ -103,8 +104,11 @@ class StepThreeBajajFDFragment : Fragment() { if (!permission.containsValue(false)) { selectImageIntent?.launch("image/*") } else { - showDialogWithTwoButtons((activity as BajajFdMainActivity), getString(R.string.galleryPermission), getString( - R.string.permissionsRequired)) + showDialogWithTwoButtons( + (activity as BajajFdMainActivity), getString(R.string.galleryPermission), getString( + R.string.permissionsRequired + ) + ) } } diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt index 78b01b2..b0ca9e2 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt @@ -43,6 +43,7 @@ import com.nivesh.production.bajajfd.util.Common.Companion.isValidPan import com.nivesh.production.bajajfd.util.Common.Companion.removeError import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation import com.nivesh.production.bajajfd.util.Constants.Companion.token +import com.nivesh.production.bajajfd.util.ProgressUtil import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.MyObseravble import java.util.* @@ -731,6 +732,7 @@ class StepTwoBajajFDFragment : Fragment() { } private fun createFDApi(data: CreateFDRequest) { + ProgressUtil.showLoading(activity as BajajFdMainActivity) (activity as BajajFdMainActivity).viewModel.createFDApi(data, token, activity as BajajFdMainActivity) (activity as BajajFdMainActivity).viewModel.getFDResponseMutableData.observe(viewLifecycleOwner) { response -> when (response) { @@ -765,7 +767,7 @@ class StepTwoBajajFDFragment : Fragment() { } } is Resource.Loading -> { - + ProgressUtil.hideLoading() } is Resource.DataError -> { @@ -890,6 +892,7 @@ class StepTwoBajajFDFragment : Fragment() { bankValidationApiRequest.PhoneNo = phoneNumber bankValidationApiRequest.RoleId = loginRole bankValidationApiRequest.BankNo = 1 + ProgressUtil.showLoading(activity as BajajFdMainActivity) (activity as BajajFdMainActivity).viewModel.bankValidationApi( bankValidationApiRequest, token, @@ -957,7 +960,7 @@ class StepTwoBajajFDFragment : Fragment() { } } is Resource.Loading -> { - + ProgressUtil.hideLoading() } is Resource.DataError -> { @@ -1724,6 +1727,7 @@ class StepTwoBajajFDFragment : Fragment() { } private fun apiForEligibleBankList() { + ProgressUtil.showLoading(activity as BajajFdMainActivity) (activity as BajajFdMainActivity).viewModel.bankListApi(token,getString(R.string.language), activity as BajajFdMainActivity) (activity as BajajFdMainActivity).viewModel.getFDBankListMutableData.observe(viewLifecycleOwner) { response -> when (response) { @@ -1758,7 +1762,7 @@ class StepTwoBajajFDFragment : Fragment() { } } is Resource.Loading -> { - + ProgressUtil.hideLoading() } is Resource.DataError -> { @@ -1769,7 +1773,6 @@ class StepTwoBajajFDFragment : Fragment() { private fun refreshToken() { - } private fun dialogForBankList(bankList: List) { diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/ProgressUtil.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/ProgressUtil.kt new file mode 100644 index 0000000..c6db944 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/ProgressUtil.kt @@ -0,0 +1,50 @@ +package com.nivesh.production.bajajfd.util + +import android.annotation.SuppressLint +import android.app.AlertDialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.util.Log +import android.view.Window +import android.widget.ProgressBar + +@SuppressLint("StaticFieldLeak") +object ProgressUtil{ + + private lateinit var dialogBuilder: AlertDialog.Builder + private lateinit var alertDialog: AlertDialog + private lateinit var pDialog: ProgressBar + + + fun showLoading(ctx: Context){ + // instantiating the lateInit objects + dialogBuilder= AlertDialog.Builder(ctx) + pDialog= ProgressBar(ctx) + + // setting up the dialog + dialogBuilder.setCancelable(false) + dialogBuilder.setView(pDialog) + alertDialog=dialogBuilder.create() + + // magic of transparent background goes here + alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE) + // setting the alertDialog's BackgroundDrawable as the color resource of any color with 1% opacity + alertDialog.window?.setBackgroundDrawable(ColorDrawable(Color.parseColor("#00141414"))) + + // finally displaying the Alertdialog containing the ProgressBar + alertDialog.show() + + } + + + fun hideLoading(){ + try { + if(alertDialog.isShowing){ + alertDialog.dismiss() + } + } catch (e: UninitializedPropertyAccessException) { + Log.e("TAG","AlertDialog UninitializedPropertyAccessException") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt index db8d788..eacca4b 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt @@ -358,21 +358,23 @@ open class BajajFDViewModel(private val mainRepository: MainRepository) : ViewMo } } - fun finaliseFD(getRatesRequest: GetRatesRequest, token: String, + val getFinalizeFDMutableData: MutableLiveData> = MutableLiveData() + fun finaliseFD(finalizeFDRequest: FinalizeFDRequest, token: String, activity: Activity) = viewModelScope.launch(handleError(activity)) { if (Common.isNetworkAvailable(activity)) { - getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.finaliseFDResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleResponse(response)) + getFinalizeFDMutableData.postValue(Resource.Loading()) + val response = mainRepository.finaliseFDResponse(finalizeFDRequest, token) + getFinalizeFDMutableData.postValue(handleResponse(response)) } } - fun finaliseKYC(getRatesRequest: GetRatesRequest, token: String, + val getFinalizeKYCMutableData: MutableLiveData> = MutableLiveData() + fun finaliseKYC(getRatesRequest: FinalizeKYCRequest, token: String, activity: Activity) = viewModelScope.launch(handleError(activity)) { if (Common.isNetworkAvailable(activity)) { - getRatesMutableData.postValue(Resource.Loading()) + getFinalizeKYCMutableData.postValue(Resource.Loading()) val response = mainRepository.finaliseKYCResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleResponse(response)) + getFinalizeKYCMutableData.postValue(handleResponse(response)) } } diff --git a/app/src/main/res/layout/activity_bajaj_fd.xml b/app/src/main/res/layout/activity_bajaj_fd.xml index fbfbeaa..c890513 100644 --- a/app/src/main/res/layout/activity_bajaj_fd.xml +++ b/app/src/main/res/layout/activity_bajaj_fd.xml @@ -12,33 +12,33 @@ android:background="@color/white"> + android:layout_height="wrap_content" + android:background="@color/red" + android:orientation="horizontal"> + android:gravity="center" + android:padding="@dimen/margin_10" + android:src="@drawable/svg_back" /> + android:textAppearance="@style/TextAppearance.Widget.AppCompat.Toolbar.Title" + android:textColor="@color/white" + android:textSize="@dimen/text_size_14" /> @@ -47,9 +47,9 @@ android:id="@+id/llSteps" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/greyColor4" android:gravity="center" android:orientation="horizontal" - android:background="@color/greyColor4" android:paddingTop="@dimen/margin_10" android:paddingBottom="@dimen/margin_10"> @@ -112,36 +112,43 @@ android:textColor="@color/black" android:textSize="@dimen/text_size_12" /> - - - - - + android:orientation="horizontal"> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bajajfd_step_five.xml b/app/src/main/res/layout/fragment_bajajfd_step_five.xml index e8017e7..9acdd82 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_five.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_five.xml @@ -85,26 +85,24 @@ style="@style/semiBoldStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="12dp" + android:layout_marginTop="@dimen/margin_12" android:textColor="@color/black" android:textSize="@dimen/text_size_17" android:text="" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.437" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 0be7cc0..506a7f2 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -1,5 +1,5 @@ - NiveshSDK + NiveshFDSDK Bajaj App nivesh @@ -225,11 +225,9 @@ View Order - Congratulations Your transaction is successful. You will receive fixed deposit certificate\nwithin 3 working days on email Download Invoice - Sorry! Your transaction is unsuccessful. Sorry for the inconvenience please try again later Retry @@ -252,6 +250,7 @@ You Need to Give Permission of Gallery for uploading Image Permission Required ! Permission\'s Required ! + diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index e5a7f0c..103d5f1 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -1,6 +1,6 @@ -