diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/DisableAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/DisableAdapter.kt new file mode 100644 index 0000000..d900477 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/DisableAdapter.kt @@ -0,0 +1,24 @@ +package com.nivesh.production.bajajfd.adapter + +import android.annotation.SuppressLint +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import androidx.viewpager.widget.ViewPager + + +class DisableAdapter (context: Context, attrs: AttributeSet) : ViewPager(context, attrs) { + private var isPagingEnabled = true // change this value for enable and disable the viewpager swipe + + @SuppressLint("ClickableViewAccessibility") + override fun onTouchEvent(event: MotionEvent?): Boolean { + return this.isPagingEnabled && super.onTouchEvent(event) + } + + override fun onInterceptTouchEvent(event: MotionEvent?): Boolean { + return this.isPagingEnabled && super.onInterceptTouchEvent(event) + } + + fun setPagingEnabled(b: Boolean) { isPagingEnabled = b + } +} diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt index 44ac534..9bf3033 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt @@ -5,10 +5,12 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentPagerAdapter import androidx.fragment.app.FragmentStatePagerAdapter +import androidx.viewpager2.adapter.FragmentStateAdapter -abstract class SmartFragmentStatePagerAdapter(fragmentManager: FragmentManager) : FragmentStatePagerAdapter(fragmentManager) { - val registeredFragments = SparseArray() +abstract class SmartFragmentStatePagerAdapter(fragmentManager: FragmentManager) : FragmentPagerAdapter(fragmentManager) { + private val registeredFragments = SparseArray() override fun instantiateItem(container: ViewGroup, position: Int): Any { val fragment = super.instantiateItem(container, position) as Fragment @@ -16,12 +18,6 @@ abstract class SmartFragmentStatePagerAdapter(fragmentManager: FragmentManager) return fragment } - // Unregister when the item is inactive - override fun destroyItem(container: View, position: Int, `object`: Any) { - registeredFragments.remove(position) - super.destroyItem(container, position, `object`) - } - // Returns the fragment for the position (if instantiated) fun getRegisteredFragment(position: Int): Fragment? { return registeredFragments[position] diff --git a/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt b/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt index a3ef03a..a537cf0 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt @@ -1,22 +1,20 @@ package com.nivesh.production.bajajfd.api -import android.content.Context -import android.net.ConnectivityManager import com.nivesh.production.bajajfd.BajajApplication -import com.nivesh.production.bajajfd.api.ApiClient.Companion.isNetworkAvailablee import com.nivesh.production.bajajfd.interfaces.ApiInterface import com.nivesh.production.bajajfd.util.Constants.Companion.BASE_URL -import okhttp3.Interceptor import okhttp3.OkHttpClient -import okhttp3.Response import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory -import java.io.IOException +import java.security.KeyStore +import java.util.* import java.util.concurrent.TimeUnit +import javax.net.ssl.* class ApiClient { val context = BajajApplication.appContext + companion object { private val client by lazy { //lazy means we only initialize this here once @@ -25,8 +23,24 @@ class ApiClient { logging.setLevel(HttpLoggingInterceptor.Level.BODY) //see the body of response //create client for retrofit + + val trustManagerFactory: TrustManagerFactory = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()) + trustManagerFactory.init(null as KeyStore?) + val trustManagers: Array = trustManagerFactory.getTrustManagers() + check(!(trustManagers.size != 1 || trustManagers[0] !is X509TrustManager)) { + "Unexpected default trust managers:" + Arrays.toString( + trustManagers + ) + } + val trustManager: X509TrustManager = trustManagers[0] as X509TrustManager + val sslContext = SSLContext.getInstance("SSL") + sslContext.init(null, arrayOf(trustManager), null) + val sslSocketFactory: SSLSocketFactory = sslContext.socketFactory + val client = OkHttpClient.Builder() - .addInterceptor(ConnectVerifierInterceptor()) + .addInterceptor(logging) + .sslSocketFactory(sslSocketFactory, trustManager) .retryOnConnectionFailure(true) .callTimeout(2, TimeUnit.MINUTES) .connectTimeout(20, TimeUnit.SECONDS) @@ -43,24 +57,10 @@ class ApiClient { val getApiClient: ApiInterface by lazy { client.create(ApiInterface::class.java) } - fun isNetworkAvailablee(): Boolean { - val connectivityManager = - BajajApplication.appContext?.getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager - return connectivityManager?.activeNetworkInfo?.isConnected == true - } } } -class ConnectVerifierInterceptor : Interceptor { - override fun intercept(chain: Interceptor.Chain): okhttp3.Response { -// if (!isNetworkAvailablee()) { -// throw IOException("No Network Available!") -// } - val request = chain.request() - return chain.proceed(request) - } -} 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 dc65119..c253c17 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 @@ -34,7 +34,7 @@ interface ApiInterface { @POST("WebApi_Bajaj/api/SaveFDOtherData") suspend fun saveFDOtherData( - @Body requestBody: RequestBody, + @Body requestBody: SaveFDOtherDataRequest, @Header("token") token: String ): Response diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt index d827306..5d988c5 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt @@ -1,11 +1,12 @@ package com.nivesh.production.bajajfd.interfaces +import com.nivesh.production.bajajfd.model.CreateFDApplicationResponse import com.nivesh.production.bajajfd.model.CreateFDRequest import com.nivesh.production.bajajfd.model.SaveFDOtherDataRequest interface BajajFDInterface { fun stepOneApi(data: String?) - fun stepTwoApi(data: CreateFDRequest) - fun stepThreeApi(data: CreateFDRequest) - fun stepFourApi(data: SaveFDOtherDataRequest) + fun stepTwoApi(data: CreateFDApplicationResponse) + fun stepThreeApi(data: CreateFDApplicationResponse) + fun stepFourApi( payUrl: String, value: String) } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt index e976e20..13fecab 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt @@ -3,6 +3,6 @@ package com.nivesh.production.bajajfd.interfaces import com.nivesh.production.bajajfd.model.CreateFDApplicationResponse interface SendData { - fun sendDataFragment(message: CreateFDApplicationResponse, currentItem: Int) - + fun sendDataFragment(message: CreateFDApplicationResponse) + fun sendDataFragmentStepFour(message: CreateFDApplicationResponse) } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXXX.kt new file mode 100644 index 0000000..d140607 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXXX.kt @@ -0,0 +1,8 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXXXXXXXXXXXX( + val Errors: List, + val Message: String, + val Status: String, + val StatusCode: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/SaveFDOtherDataResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/SaveFDOtherDataResponse.kt new file mode 100644 index 0000000..d1cd6f4 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/SaveFDOtherDataResponse.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class SaveFDOtherDataResponse( + val Response: ResponseXXXXXXXXXXXXX +) \ 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 8550104..0b1ba2c 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 @@ -29,8 +29,8 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun documentsUploadResponse(getRatesRequest: DocumentUpload, token: String) = apiInterface.documentsUpload(getRatesRequest, token) - suspend fun saveFDOtherDataResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) + suspend fun saveFDOtherDataResponse(getRatesRequest: SaveFDOtherDataRequest, token: String) = + apiInterface.saveFDOtherData(getRatesRequest, token) suspend fun getFDDetailsResponse(getRatesRequest: GetFDDetailsRequest, token: String) = apiInterface.getFDDetails(getRatesRequest, token) 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 d02c903..0f5b8b0 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 @@ -1,14 +1,22 @@ package com.nivesh.production.bajajfd.ui.activity +import android.annotation.SuppressLint +import android.app.Dialog +import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.os.Bundle import android.util.Log +import android.view.WindowManager +import android.webkit.WebView +import android.webkit.WebViewClient +import android.widget.TextView import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.google.gson.Gson +import com.nivesh.production.bajajfd.R +import com.nivesh.production.bajajfd.adapter.DisableAdapter import com.nivesh.production.bajajfd.adapter.SectionsPagerAdapter -import com.nivesh.production.bajajfd.api.ApiCallback import com.nivesh.production.bajajfd.api.ApiClient import com.nivesh.production.bajajfd.databinding.ActivityBajajFdBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface @@ -30,24 +38,24 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface { lateinit var binding: ActivityBajajFdBinding private lateinit var viewModel: BajajFDViewModel - lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel - lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel - lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel - lateinit var stepFourBajajFDViewModel: StepFourBajajFDViewModel - lateinit var stepFiveBajajFDViewModel: StepFiveBajajFDViewModel - - var createFDRequest: CreateFDRequest - var createFDApplicantRequest: CreateFDApplicationRequest - var applicantDetails: ApplicantDetails - var fdInvestmentDetails: FDInvestmentDetails - var applicantRelationDetails: ApplicantRelationDetails - var fdBankDetails: FdBankDetails - var nomineeDetails: NomineeDetails - var nomineeGuardianDetails: NomineeGuardianDetails - var getClientDetailsResponse: getClientDetailsResponse + private val stepOneBajajFDFragment = StepOneBajajFDFragment() + private val stepTwoBajajFDFragment = StepTwoBajajFDFragment() + private val stepThreeBajajFDFragment = StepThreeBajajFDFragment() + private val stepFourBajajFDFragment = StepFourBajajFDFragment() + private val stepFiveBajajFDFragment = StepFiveBajajFDFragment() + + var createFDRequest: CreateFDRequest = CreateFDRequest() + var createFDApplicantRequest: CreateFDApplicationRequest = CreateFDApplicationRequest() + var applicantDetails: ApplicantDetails = ApplicantDetails() + var fdInvestmentDetails: FDInvestmentDetails = FDInvestmentDetails() + var applicantRelationDetails: ApplicantRelationDetails = ApplicantRelationDetails() + var fdBankDetails: FdBankDetails = FdBankDetails() + var nomineeDetails: NomineeDetails = NomineeDetails() + var nomineeGuardianDetails: NomineeGuardianDetails = NomineeGuardianDetails() + var getClientDetailsResponse: getClientDetailsResponse = getClientDetailsResponse() private var stepCount: Int = 0 - private lateinit var sectionsPagerAdapter : SectionsPagerAdapter + private lateinit var sectionsPagerAdapter: SectionsPagerAdapter private lateinit var fragments: Array override fun onCreate(savedInstanceState: Bundle?) { @@ -55,19 +63,6 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface { init() } - init { - getClientDetailsResponse = getClientDetailsResponse() - createFDRequest = CreateFDRequest() - createFDApplicantRequest = CreateFDApplicationRequest() - - fdInvestmentDetails = FDInvestmentDetails() - applicantDetails = ApplicantDetails() - applicantRelationDetails = ApplicantRelationDetails() - fdBankDetails = FdBankDetails() - nomineeDetails = NomineeDetails() - nomineeGuardianDetails = NomineeGuardianDetails() - } - private fun init() { binding = ActivityBajajFdBinding.inflate(layoutInflater) @@ -78,26 +73,6 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface { this, FDModelProviderFactory(MainRepository(ApiClient.getApiClient)) )[BajajFDViewModel::class.java] - stepOneBajajFDViewModel = ViewModelProvider( - this, - StepOneModelProviderFactory(MainRepository(ApiClient.getApiClient)) - )[StepOneBajajFDViewModel::class.java] - stepTwoBajajFDViewModel = ViewModelProvider( - this, - StepTwoModelProviderFactory(MainRepository(ApiClient.getApiClient)) - )[StepTwoBajajFDViewModel::class.java] - stepThreeBajajFDViewModel = ViewModelProvider( - this, - StepThreeModelProviderFactory(MainRepository(ApiClient.getApiClient)) - )[StepThreeBajajFDViewModel::class.java] - stepFourBajajFDViewModel = ViewModelProvider( - this, - StepFourModelProviderFactory(MainRepository(ApiClient.getApiClient)) - )[StepFourBajajFDViewModel::class.java] - stepFiveBajajFDViewModel = ViewModelProvider( - this, - StepFiveModelProviderFactory(MainRepository(ApiClient.getApiClient)) - )[StepFiveBajajFDViewModel::class.java] if (Common.isNetworkAvailable(this)) { getStepsCountApi() @@ -109,56 +84,54 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface { } private fun getStepsCountApi() { - if (Common.isNetworkAvailable(this)) { - val fdStepsCount = FDStepsCountRequest() - fdStepsCount.FDProvider = getString(com.nivesh.production.bajajfd.R.string.bajaj) - fdStepsCount.NiveshClientCode = "8872" - viewModel.getStepsCount(fdStepsCount, token) - viewModel.getStepsCountMutableData.observe(this) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val stepsCountResponse: StepsCountResponse = - Gson().fromJson( - response.data?.toString(), - StepsCountResponse::class.java - ) - stepsCountResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - stepCount = stepsCountResponse.Response.StepsCount - getClientDetailsApi(stepsCountResponse.Response.StepsCount) - } - 650 -> refreshToken(fdStepsCount) - else -> { - showDialogValidation( - this@BajajFdMainActivity, - stepsCountResponse.Response.Errors[0].ErrorMessage - ) - } - } - } - } - is Resource.Error -> { - response.message?.let { message -> - showDialogValidation(this@BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - - } - is Resource.DataError -> { - - } - } - } - } + if (Common.isNetworkAvailable(this)) { + val fdStepsCount = FDStepsCountRequest() + fdStepsCount.FDProvider = getString(R.string.bajaj) + fdStepsCount.NiveshClientCode = "8872" + viewModel.getStepsCount(fdStepsCount, token, this) + viewModel.getStepsCountMutableData.observe(this) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val stepsCountResponse: StepsCountResponse = + Gson().fromJson( + response.data?.toString(), + StepsCountResponse::class.java + ) + stepsCountResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + stepCount = stepsCountResponse.Response.StepsCount + getClientDetailsApi(stepsCountResponse.Response.StepsCount) + } + 650 -> refreshToken(fdStepsCount) + else -> { + showDialogValidation( + this@BajajFdMainActivity, + stepsCountResponse.Response.Errors[0].ErrorMessage + ) + } + } + } + } + is Resource.Error -> { + response.message?.let { message -> + showDialogValidation(this@BajajFdMainActivity, message) + } + } + is Resource.Loading -> { + + } + is Resource.DataError -> { + + } + } + } + } } private fun refreshToken(fdStepsCount: FDStepsCountRequest) { - if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { - } } @@ -166,20 +139,20 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface { if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { val getClientDetailsRequest = getClientDetailsRequest() getClientDetailsRequest.client_code = "8872" - getClientDetailsRequest.AppOrWeb = getString(com.nivesh.production.bajajfd.R.string.app) + getClientDetailsRequest.AppOrWeb = getString(R.string.app) getClientDetailsRequest.sub_broker_code = "1038" val userRequest = UserRequest() userRequest.UID = 19060 userRequest.IPAddress = "" - userRequest.Source = getString(com.nivesh.production.bajajfd.R.string.source) - userRequest.AppOrWeb = getString(com.nivesh.production.bajajfd.R.string.app) + userRequest.Source = getString(R.string.source) + userRequest.AppOrWeb = getString(R.string.app) userRequest.LoggedInRoleId = 5 val deviceInfo = DeviceInfo() deviceInfo.device_id = "" deviceInfo.device_id_for_UMSId = "" - deviceInfo.device_type = getString(com.nivesh.production.bajajfd.R.string.app) + deviceInfo.device_type = getString(R.string.app) deviceInfo.device_model = "" deviceInfo.device_token = "" deviceInfo.device_name = "" @@ -188,11 +161,10 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface { userRequest.deviceInfo = deviceInfo getClientDetailsRequest.UserRequest = userRequest Log.e("getClientDetailRequest", "-->" + Gson().toJson(getClientDetailsRequest)) - viewModel.getClientDetails(getClientDetailsRequest, token) + viewModel.getClientDetails(getClientDetailsRequest, token, this) viewModel.getClientDetailsMutableData.observe(this) { response -> when (response) { - is Resource.Success - -> { + is Resource.Success -> { Log.e("response", "-->$response") getClientDetailsResponse = Gson().fromJson( @@ -220,7 +192,8 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface { } is Resource.Loading -> { - }is Resource.DataError -> { + } + is Resource.DataError -> { } } @@ -229,37 +202,32 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface { } - - - private fun setViewPager(stepsCount: Int) { // steps setting setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape()) if (stepCount == 3) { fragments = arrayOf( - StepOneBajajFDFragment.getInstance(this), - StepTwoBajajFDFragment.getInstance(this), - StepFourBajajFDFragment.getInstance(this), - StepFiveBajajFDFragment.getInstance(this) + stepOneBajajFDFragment, + stepTwoBajajFDFragment, + stepFourBajajFDFragment, + stepFiveBajajFDFragment ) } else if (stepCount == 4) { fragments = arrayOf( - StepOneBajajFDFragment.getInstance(this), - StepTwoBajajFDFragment.getInstance(this), - StepThreeBajajFDFragment.getInstance(this), - StepFourBajajFDFragment.getInstance(this), - StepFiveBajajFDFragment.getInstance(this) + stepOneBajajFDFragment, + stepTwoBajajFDFragment, + stepThreeBajajFDFragment, + stepFourBajajFDFragment, + stepFiveBajajFDFragment ) } // set viewPager - sectionsPagerAdapter = - SectionsPagerAdapter(supportFragmentManager, fragments, stepsCount) - val viewPager: ViewPager = binding.viewPager - + sectionsPagerAdapter = SectionsPagerAdapter(supportFragmentManager, fragments, stepsCount) + val viewPager: DisableAdapter = binding.viewPager + viewPager.setPagingEnabled(false) viewPager.adapter = sectionsPagerAdapter - viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrolled( position: Int, @@ -334,8 +302,8 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface { getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PAN checkFDKYCRequest.NiveshClientCode = getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE.toString() - stepOneBajajFDViewModel.checkFDKYC(checkFDKYCRequest, token) - stepOneBajajFDViewModel.getFDKYCMutableData.observe(this) { response -> + viewModel.checkFDKYC(checkFDKYCRequest, token, this) + viewModel.getFDKYCMutableData.observe(this) { response -> when (response) { is Resource.Success -> { Log.e("response", "-->$response") @@ -400,85 +368,65 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface { } // step 2 response - override fun stepTwoApi(data: CreateFDRequest) { - Log.e("stepTwoApi", " response ---> $data") - // if (stepCount == 4) { - // go to step 3 image Upload - // binding.viewPager.currentItem = 2 - // } else { - // call create fd api bypass step 3 - createFDApi(data, 2, "2") - // } + override fun stepTwoApi(data: CreateFDApplicationResponse) { + Log.e("stepTwoApi", " response ---> " + Gson().toJson(data)) + binding.viewPager.currentItem = 2 + stepThreeBajajFDFragment.displayReceivedData(data) } // step 3 response - override fun stepThreeApi(data: CreateFDRequest) { - Log.e("stepThreeApi", " response ---> $data") + override fun stepThreeApi(data: CreateFDApplicationResponse) { + Log.e("stepThreeApi", " response --->" + Gson().toJson(data)) // call create fd api - createFDApi(data, 3, "3") + binding.viewPager.currentItem = 3 + stepFourBajajFDFragment.displayReceivedData(data) } // step 4 response - override fun stepFourApi(data: SaveFDOtherDataRequest) { - Log.e("stepFourApi", " response ---> $data") - // binding.viewPager.currentItem = 4 - + override fun stepFourApi(payUrl: String, value: String) { + paymentDialog(payUrl, value) } - private fun createFDApi(data: CreateFDRequest, currentItem: Int, step: String) { - if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { - - viewModel.createFDApi(data, token) - viewModel.getFDResponseMutableData.observe(this) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val createFDApplicationResponse: CreateFDApplicationResponse = - Gson().fromJson( - response.data?.toString(), - CreateFDApplicationResponse::class.java - ) - createFDApplicationResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - binding.viewPager.currentItem = currentItem - if (step == "2"){ - val stepThreeBajajFDFragment: StepThreeBajajFDFragment = - sectionsPagerAdapter.getRegisteredFragment(currentItem) as StepThreeBajajFDFragment - stepThreeBajajFDFragment.displayReceivedData(createFDApplicationResponse) - } - else{ - val stepFourFDFragment: StepFourBajajFDFragment = - sectionsPagerAdapter.getRegisteredFragment(currentItem) as StepFourBajajFDFragment - stepFourFDFragment.displayReceivedData(createFDApplicationResponse) - } - } - // 650 -> refreshToken() - else -> { - showDialogValidation( - this@BajajFdMainActivity, - createFDApplicationResponse.Response.Errors[0].ErrorMessage - ) - } - } - } - } - - is Resource.Error -> { - response.message?.let { message -> - showDialogValidation(this@BajajFdMainActivity, message) - } - } - is Resource.Loading -> { + @SuppressLint("SetJavaScriptEnabled") + fun paymentDialog(payUrl: String, value: String) { + Log.e("payUrl", "-->$payUrl") + Log.e("value", "-->$value") + val dialogWebView = Dialog(this@BajajFdMainActivity) + dialogWebView.setContentView(R.layout.row_fd_pay) + dialogWebView.setCancelable(true) + + val tvCancel = dialogWebView.findViewById(R.id.tvCancel) + tvCancel.setOnClickListener { + dialogWebView.dismiss() + } - } + val lp = WindowManager.LayoutParams() + lp.copyFrom(dialogWebView.window?.attributes) + lp.width = WindowManager.LayoutParams.MATCH_PARENT + lp.height = WindowManager.LayoutParams.MATCH_PARENT + dialogWebView.window?.attributes = lp + val wVPay = dialogWebView.findViewById(R.id.wVPay) + wVPay.webViewClient = MyWebViewClient() + wVPay.settings.javaScriptEnabled = true + wVPay.settings.domStorageEnabled = true + wVPay.loadUrl(payUrl) + dialogWebView.show() + } - is Resource.DataError -> { + class MyWebViewClient : WebViewClient() { + override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) { + super.onPageStarted(view, url, favicon) + Log.e("onPageStarted", "-->$url") + if (url.isNotEmpty() && url.contains("CustomerPaymentResponse")) { - } - } } } + + override fun onPageFinished(view: WebView, url: String) { + super.onPageFinished(view, url) + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BaseActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BaseActivity.kt index 0d3d811..fc035c6 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BaseActivity.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BaseActivity.kt @@ -6,6 +6,7 @@ import androidx.appcompat.app.AppCompatActivity open class BaseActivity : AppCompatActivity() { private lateinit var mActivity: Activity + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mActivity = this diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/BaseFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/BaseFragment.kt index 4295636..e485989 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/BaseFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/BaseFragment.kt @@ -7,6 +7,9 @@ import com.nivesh.production.bajajfd.ui.activity.BaseActivity open class BaseFragment : Fragment() { protected var mActivity: BaseActivity? = null + + + override fun onAttach(context: Context) { super.onAttach(context) if (context is BaseActivity) { @@ -18,4 +21,16 @@ open class BaseFragment : Fragment() { } } + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + } + + override fun onStart() { + super.onStart() + } + + override fun onStop() { + super.onStop() + } + } 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 654ce7d..ad8f74f 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 @@ -6,32 +6,32 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import com.nivesh.production.bajajfd.api.ApiClient import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFiveBinding +import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.ui.providerfactory.StepFiveModelProviderFactory import com.nivesh.production.bajajfd.viewModel.StepFiveBajajFDViewModel class StepFiveBajajFDFragment : Fragment() { - private lateinit var stepFourViewModel: StepFiveBajajFDViewModel + private lateinit var stepFiveBajajFDViewModel: StepFiveBajajFDViewModel private var _binding: FragmentBajajfdStepFiveBinding? = null private val binding get() = _binding!! private lateinit var bajajFDInterface: BajajFDInterface companion object { fun getInstance(fdInterface: BajajFDInterface): StepFiveBajajFDFragment { - val stepFourFragment = StepFiveBajajFDFragment() - stepFourFragment.setApi(fdInterface) - return stepFourFragment + val stepFiveFragment = StepFiveBajajFDFragment() + stepFiveFragment.setApi(fdInterface) + return stepFiveFragment } } - private fun setApi(bajajFDInterfaces: BajajFDInterface) { + fun setApi(bajajFDInterfaces: BajajFDInterface) { bajajFDInterface = bajajFDInterfaces } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -53,6 +53,14 @@ class StepFiveBajajFDFragment : Fragment() { return root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + stepFiveBajajFDViewModel = ViewModelProvider( + this, + StepFiveModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[StepFiveBajajFDViewModel::class.java] + } + 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 cadf277..6237cc2 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 @@ -5,17 +5,21 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.google.gson.Gson import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.adapter.CustomerListAdapter +import com.nivesh.production.bajajfd.api.ApiClient import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFourBinding -import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.model.* +import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.ui.providerfactory.StepFourModelProviderFactory import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation import com.nivesh.production.bajajfd.util.Constants +import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepFourBajajFDViewModel @@ -26,21 +30,9 @@ class StepFourBajajFDFragment : BaseFragment() { private val binding get() = _binding!! private lateinit var listOfCustomer: MutableList private var selectedList: String = "" - private var uniqueId: String? = "" - - private lateinit var bajajFDInterface: BajajFDInterface - - companion object { - fun getInstance(fdInterface: BajajFDInterface): StepFourBajajFDFragment { - val stepThreeFragment = StepFourBajajFDFragment() - stepThreeFragment.setApi(fdInterface) - return stepThreeFragment - } - } - - private fun setApi(bajajFDInterfaces: BajajFDInterface) { - bajajFDInterface = bajajFDInterfaces - } + private var uniqueId: String = "" + private var payUrl: String = "" + private var value: String = "" override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -48,9 +40,15 @@ class StepFourBajajFDFragment : BaseFragment() { ): View { _binding = FragmentBajajfdStepFourBinding.inflate(inflater, container, false) - val root = binding.root + return binding.root + } - stepFourBajajFDViewModel = (activity as BajajFdMainActivity).stepFourBajajFDViewModel + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + stepFourBajajFDViewModel = ViewModelProvider( + this, + StepFourModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[StepFourBajajFDViewModel::class.java] binding.checkBox.setOnCheckedChangeListener { _, _ -> @@ -75,7 +73,8 @@ class StepFourBajajFDFragment : BaseFragment() { saveFDOtherDataRequest.Values = selectedList saveFDOtherDataRequest.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE - bajajFDInterface.stepFourApi(saveFDOtherDataRequest) + // bajajFDInterface.stepFourApi(saveFDOtherDataRequest, payUrl, Value) + saveFDOtherData(saveFDOtherDataRequest, payUrl, value) } else { showDialogValidation( activity as BajajFdMainActivity, @@ -87,15 +86,53 @@ class StepFourBajajFDFragment : BaseFragment() { binding.btnBack.setOnClickListener { (activity as BajajFdMainActivity).binding.viewPager.currentItem = 2 } - return root + } + + private fun saveFDOtherData(data: SaveFDOtherDataRequest, payUrl: String, value: String) { + stepFourBajajFDViewModel.saveFDOtherData(data, token, activity as BajajFdMainActivity) + stepFourBajajFDViewModel.getFDOtherMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->" + response.data.toString()) + val saveFDOtherDataResponse: SaveFDOtherDataResponse = + Gson().fromJson( + response.data?.toString(), + SaveFDOtherDataResponse::class.java + ) + saveFDOtherDataResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + (activity as BajajFdMainActivity).stepFourApi(payUrl, value) + // paymentDialog(payUrl, value) + } + // 650 -> refreshToken() + else -> { + showDialogValidation( + activity as BajajFdMainActivity, + saveFDOtherDataResponse.Response.Errors[0].ErrorMessage + ) + } + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + showDialogValidation(activity as BajajFdMainActivity, message) + } + } + is Resource.Loading -> { + + } + is Resource.DataError -> { + + } + } + } } fun displayReceivedData(createFDApplicationResponse: CreateFDApplicationResponse) { - Log.e( - "createFDApplication", - "Response-->" + createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId - ) uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId getFDDetailsApi(createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId) customerListApi() @@ -103,53 +140,55 @@ class StepFourBajajFDFragment : BaseFragment() { private fun customerListApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.customerCategory) - getCodeRequest.Language = getString(R.string.language) - getCodeRequest.InputValue = "" - stepFourBajajFDViewModel.paymentModeApi(getCodeRequest, Constants.token) - stepFourBajajFDViewModel.getPaymentModeMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - if (getCodeResponse.Response.GetCodesList.isNotEmpty()) { - listOfCustomer = getCodeResponse.Response.GetCodesList - setUpRecyclerView(listOfCustomer) - } - } - // 650 -> refreshToken() - else -> { - showDialogValidation( - activity as BajajFdMainActivity, - getCodeResponse.Response.Message - ) + + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.customerCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepFourBajajFDViewModel.paymentModeApi( + getCodeRequest, + Constants.token, + activity as BajajFdMainActivity + ) + stepFourBajajFDViewModel.getPaymentModeMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + if (getCodeResponse.Response.GetCodesList.isNotEmpty()) { + listOfCustomer = getCodeResponse.Response.GetCodesList + setUpRecyclerView(listOfCustomer) } } + // 650 -> refreshToken() + else -> { + showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Message + ) + } } } + } - is Resource.Error -> { - response.message?.let { message -> - showDialogValidation(activity as BajajFdMainActivity, message) - } + is Resource.Error -> { + response.message?.let { message -> + showDialogValidation(activity as BajajFdMainActivity, message) } - is Resource.Loading -> { + } + is Resource.Loading -> { - }is Resource.DataError -> { + } + is Resource.DataError -> { - } } } - } - } private fun setUpRecyclerView(getCustomerList: MutableList) { @@ -158,8 +197,6 @@ class StepFourBajajFDFragment : BaseFragment() { val customerListAdapter = CustomerListAdapter(getCustomerList) binding.rvTerms.adapter = customerListAdapter - - } private fun getFDDetailsApi(uniqueId: String) { @@ -169,7 +206,11 @@ class StepFourBajajFDFragment : BaseFragment() { getFDDetailsRequest.NiveshClientCode = (mActivity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE getFDDetailsRequest.UniqueId = uniqueId - stepFourBajajFDViewModel.getFDDetails(getFDDetailsRequest, Constants.token) + stepFourBajajFDViewModel.getFDDetails( + getFDDetailsRequest, + Constants.token, + activity as BajajFdMainActivity + ) stepFourBajajFDViewModel.getFDDetailsMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { @@ -192,12 +233,14 @@ class StepFourBajajFDFragment : BaseFragment() { binding.tvRateOfInterest.text = getFDDetailsResponse.Response.FDDataResponse.RateOfInterest.toString() .plus(" % p.a.") + payUrl = getFDDetailsResponse.Response.FDDataResponse.PaymentUrl + value = getFDDetailsResponse.Response.FDDataResponse.Value } // 650 -> refreshToken() else -> { showDialogValidation( activity as BajajFdMainActivity, - getFDDetailsResponse.Response.Message + getFDDetailsResponse.Response.Errors[0].ErrorMessage ) } } @@ -212,7 +255,6 @@ class StepFourBajajFDFragment : BaseFragment() { is Resource.Loading -> { } - is Resource.DataError -> { } diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt index 6b6e87f..634e7a0 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt @@ -12,17 +12,19 @@ import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.RadioButton -import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView.LayoutManager import com.google.gson.Gson import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.adapter.HorizontalRecyclerViewAdapter +import com.nivesh.production.bajajfd.api.ApiClient import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepOneBinding -import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.model.* +import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.ui.providerfactory.StepOneModelProviderFactory import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common.Companion.commonErrorMethod import com.nivesh.production.bajajfd.util.Common.Companion.removeError @@ -35,7 +37,6 @@ class StepOneBajajFDFragment : BaseFragment() { private var _binding: FragmentBajajfdStepOneBinding? = null private val binding get() = _binding!! - private lateinit var bajajFDInterface: BajajFDInterface private lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel private lateinit var rgMaturity: RadioButton private lateinit var listOfTenure: MutableList @@ -47,25 +48,19 @@ class StepOneBajajFDFragment : BaseFragment() { private var tenure: Int = 0 private var interest: Double = 0.0 - companion object { - fun getInstance(fdInterface: BajajFDInterface): StepOneBajajFDFragment { - val stepStartFragment = StepOneBajajFDFragment() - stepStartFragment.setApi(fdInterface) - return stepStartFragment - } - } - - private fun setApi(bajajFDInterfaces: BajajFDInterface) { - bajajFDInterface = bajajFDInterfaces - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { _binding = FragmentBajajfdStepOneBinding.inflate(inflater, container, false) - val root = binding.root + return binding.root + } - stepOneBajajFDViewModel = (activity as BajajFdMainActivity).stepOneBajajFDViewModel + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + stepOneBajajFDViewModel = ViewModelProvider( + this, + StepOneModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[StepOneBajajFDViewModel::class.java] listOfTenure = ArrayList() binding.edtAmount.filters = arrayOf(InputFilter.LengthFilter(8)) // upto 1 Cr @@ -160,16 +155,21 @@ class StepOneBajajFDFragment : BaseFragment() { (activity as BajajFdMainActivity).fdInvestmentDetails.CustomerType = "" (activity as BajajFdMainActivity).fdInvestmentDetails.CKYCNumber = "" - (activity as BajajFdMainActivity).createFDApplicantRequest.FDInvestmentDetails = (activity as BajajFdMainActivity).fdInvestmentDetails - Log.e("Maturity", "-->" + rgMaturity.text) - bajajFDInterface.stepOneApi("stepOneResponse") + (activity as BajajFdMainActivity).createFDApplicantRequest.FDInvestmentDetails = + (activity as BajajFdMainActivity).fdInvestmentDetails + Log.e( + "StepOneData", + "-->" + Gson().toJson((activity as BajajFdMainActivity).fdInvestmentDetails) + ) + + // bajajFDInterface.stepOneApi("stepOneResponse") + (activity as BajajFdMainActivity).stepOneApi("stepOneResponse") } } minAmountApi() interestPayoutApi() - return root } private fun interestPayoutApi() { @@ -178,7 +178,7 @@ class StepOneBajajFDFragment : BaseFragment() { getCodeRequest.Category = getString(R.string.category) getCodeRequest.Language = getString(R.string.language) getCodeRequest.InputValue = "" - stepOneBajajFDViewModel.getCode(getCodeRequest, token) + stepOneBajajFDViewModel.getCode(getCodeRequest, token, activity as BajajFdMainActivity) stepOneBajajFDViewModel.getCodeMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { @@ -223,10 +223,10 @@ class StepOneBajajFDFragment : BaseFragment() { } is Resource.Loading -> { - }is Resource.DataError -> { - } + is Resource.DataError -> { + } } } } @@ -237,7 +237,7 @@ class StepOneBajajFDFragment : BaseFragment() { getCodeRequest.Category = getString(R.string.minAmountCategory) getCodeRequest.Language = getString(R.string.language) getCodeRequest.InputValue = "" - stepOneBajajFDViewModel.getMinAmount(getCodeRequest, token) + stepOneBajajFDViewModel.getMinAmount(getCodeRequest, token, activity as BajajFdMainActivity) stepOneBajajFDViewModel.getMinAmountMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { @@ -274,7 +274,6 @@ class StepOneBajajFDFragment : BaseFragment() { is Resource.Loading -> { } - is Resource.DataError -> { } @@ -288,7 +287,7 @@ class StepOneBajajFDFragment : BaseFragment() { getCodeRequest.Category = getString(R.string.MaxAmountCategory) getCodeRequest.Language = getString(R.string.language) getCodeRequest.InputValue = "" - stepOneBajajFDViewModel.getMaxAmount(getCodeRequest, token) + stepOneBajajFDViewModel.getMaxAmount(getCodeRequest, token, activity as BajajFdMainActivity) stepOneBajajFDViewModel.getMaxAmountMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { @@ -322,8 +321,6 @@ class StepOneBajajFDFragment : BaseFragment() { is Resource.DataError -> { } - - } } } @@ -348,54 +345,58 @@ class StepOneBajajFDFragment : BaseFragment() { } private fun maturityAmountApi(tenure: Int, interest: Double) { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - if (binding.edtAmount.text.toString().length >= 4 && interest != 0.0 && tenure != 0) { - val maturityAmountRequest = GetMaturityAmountRequest() - maturityAmountRequest.FDProvider = getString(R.string.bajaj) - maturityAmountRequest.FDAmount = binding.edtAmount.text.toString().toInt() - maturityAmountRequest.Frequency = binding.spInterestPayout.text.toString() - maturityAmountRequest.Tenure = tenure - maturityAmountRequest.Interest = interest - stepOneBajajFDViewModel.getMaturityAmount(maturityAmountRequest) - stepOneBajajFDViewModel.getMaturityAmountMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - val getMaturityAmountResponse = - Gson().fromJson( - response.data?.toString(), - GetCalculateMaturityAmountResponse::class.java - ) - getMaturityAmountResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - binding.tvMaturityAmount.text = - getString(R.string.rs).plus(" ").plus( - getMaturityAmountResponse.Response.MaturityAmount.toString() - ) - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( - activity as BajajFdMainActivity, - getMaturityAmountResponse.Response.Errors[0].ErrorMessage + if (binding.edtAmount.text.toString().length >= 4 && interest != 0.0 && tenure != 0 && binding.spInterestPayout.text.toString() + .isNotEmpty() + ) { + val maturityAmountRequest = GetMaturityAmountRequest() + maturityAmountRequest.FDProvider = getString(R.string.bajaj) + maturityAmountRequest.FDAmount = binding.edtAmount.text.toString().toInt() + maturityAmountRequest.Frequency = binding.spInterestPayout.text.toString() + maturityAmountRequest.Tenure = tenure + maturityAmountRequest.Interest = interest + stepOneBajajFDViewModel.getMaturityAmount( + maturityAmountRequest, + activity as BajajFdMainActivity + ) + stepOneBajajFDViewModel.getMaturityAmountMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + val getMaturityAmountResponse = + Gson().fromJson( + response.data?.toString(), + GetCalculateMaturityAmountResponse::class.java + ) + getMaturityAmountResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + binding.tvMaturityAmount.text = + getString(R.string.rs).plus(" ").plus( + getMaturityAmountResponse.Response.MaturityAmount.toString() ) - } + } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getMaturityAmountResponse.Response.Errors[0].ErrorMessage + ) } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation( + activity as BajajFdMainActivity, + message + ) } + } + is Resource.Loading -> { - is Resource.DataError -> { - - } + } + is Resource.DataError -> { } } @@ -444,81 +445,78 @@ class StepOneBajajFDFragment : BaseFragment() { } private fun getRatesApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getRatesRequest = GetRatesRequest() - getRatesRequest.fdProvider = getString(R.string.bajaj) - getRatesRequest.frequency = binding.spInterestPayout.text.toString() - if (binding.swSeniorCitizen.isChecked) { - getRatesRequest.type = getString(R.string.seniorCitizen) - } else { - getRatesRequest.type = getString(R.string.nonSeniorCitizen) - } - stepOneBajajFDViewModel.getRates(getRatesRequest, token) - stepOneBajajFDViewModel.getRatesMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - val getRatesResponse: GetRatesResponse = - Gson().fromJson(response.data?.toString(), GetRatesResponse::class.java) - getRatesResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - if (listOfTenure.isNotEmpty()) { - listOfTenure.clear() - } - listOfTenure = getRatesResponse.Response.ROIDatalist - // Tenure - if (listOfTenure.isNotEmpty()) { - listOfTenure.sortWith { lhs: ROIDataList, rhs: ROIDataList -> - rhs.Tenure.compareTo( - lhs.Tenure - ) - } - binding.ORLayout.visibility = View.VISIBLE - val tenureAdapter = - ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - listOfTenure - ) - binding.spTenure.setAdapter(tenureAdapter) - - binding.spTenure.setText( - tenureAdapter.getItem(0)?.Tenure.plus( - " Months | " - ).plus(tenureAdapter.getItem(0)?.ROI).plus(" %"), false + val getRatesRequest = GetRatesRequest() + getRatesRequest.fdProvider = getString(R.string.bajaj) + getRatesRequest.frequency = binding.spInterestPayout.text.toString() + if (binding.swSeniorCitizen.isChecked) { + getRatesRequest.type = getString(R.string.seniorCitizen) + } else { + getRatesRequest.type = getString(R.string.nonSeniorCitizen) + } + stepOneBajajFDViewModel.getRates(getRatesRequest, token, activity as BajajFdMainActivity) + stepOneBajajFDViewModel.getRatesMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + val getRatesResponse: GetRatesResponse = + Gson().fromJson(response.data?.toString(), GetRatesResponse::class.java) + getRatesResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + if (listOfTenure.isNotEmpty()) { + listOfTenure.clear() + } + listOfTenure = getRatesResponse.Response.ROIDatalist + // Tenure + if (listOfTenure.isNotEmpty()) { + listOfTenure.sortWith { lhs: ROIDataList, rhs: ROIDataList -> + rhs.Tenure.compareTo( + lhs.Tenure ) - tenure = tenureAdapter.getItem(0)?.Tenure.toString().toInt() - interest = tenureAdapter.getItem(0)?.ROI ?: 0.0 - binding.tvROI.text = - tenureAdapter.getItem(0)?.ROI.toString().plus(" %") - setUpRecyclerView() - } else { - binding.ORLayout.visibility = View.GONE } - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( - activity as BajajFdMainActivity, - getRatesResponse.Response.Errors[0].ErrorMessage + binding.ORLayout.visibility = View.VISIBLE + val tenureAdapter = + ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfTenure + ) + binding.spTenure.setAdapter(tenureAdapter) + + binding.spTenure.setText( + tenureAdapter.getItem(0)?.Tenure.plus( + " Months | " + ).plus(tenureAdapter.getItem(0)?.ROI).plus(" %"), false ) + tenure = tenureAdapter.getItem(0)?.Tenure.toString().toInt() + interest = tenureAdapter.getItem(0)?.ROI ?: 0.0 + binding.tvROI.text = + tenureAdapter.getItem(0)?.ROI.toString().plus(" %") + setUpRecyclerView() + } else { + binding.ORLayout.visibility = View.GONE } } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getRatesResponse.Response.Errors[0].ErrorMessage + ) + } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } + } + is Resource.Loading -> { - is Resource.DataError -> { + } + 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 6f6e658..6950612 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 @@ -6,36 +6,30 @@ import android.app.ActionBar.LayoutParams import android.app.Dialog import android.content.pm.PackageManager import android.database.Cursor -import android.graphics.Bitmap import android.net.Uri import android.os.Bundle -import android.provider.MediaStore import android.provider.OpenableColumns -import android.text.Editable import android.util.Base64 import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.AdapterView -import android.widget.ArrayAdapter -import android.widget.ImageView -import android.widget.TextView -import android.widget.Toast +import android.widget.* import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts -import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.core.content.FileProvider -import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.google.gson.Gson import com.nivesh.production.bajajfd.BuildConfig import com.nivesh.production.bajajfd.R +import com.nivesh.production.bajajfd.api.ApiClient import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepThreeBinding -import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.model.* +import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.ui.providerfactory.StepThreeModelProviderFactory import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Constants import com.nivesh.production.bajajfd.util.Resource @@ -52,39 +46,19 @@ class StepThreeBajajFDFragment : BaseFragment() { private val binding get() = _binding!! private lateinit var listOfDocType: List - private lateinit var bajajFDInterface: BajajFDInterface private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel - private var uniqueId: String? = "" - private lateinit var dialog: Dialog - private var front: String = "" - companion object { - fun getInstance(fdInterface: BajajFDInterface): StepThreeBajajFDFragment { - val stepTwoFragment = StepThreeBajajFDFragment() - stepTwoFragment.setApi(fdInterface) - return stepTwoFragment - } - } - - private fun setApi(bajajFDInterfaces: BajajFDInterface) { - bajajFDInterface = bajajFDInterfaces - } - - private val selectImageIntent = registerForActivityResult(ActivityResultContracts.GetContent()) - { uri -> - val bitmap: Bitmap = MediaStore.Images.Media.getBitmap(context?.contentResolver, uri) - binding.iv.setImageBitmap(bitmap) - } + private lateinit var dialog: Dialog + private var takeImageResult: ActivityResultLauncher? = null + private var selectImageIntent: ActivityResultLauncher? = null + private val mapImage: HashMap = HashMap() - private val takeImageResult = - registerForActivityResult(ActivityResultContracts.TakePicture()) { isSuccess -> - if (isSuccess) { - latestTmpUri?.let { uri -> -// binding.iv.setImageURI(uri) - uploadDocument(uri) - } - } - } + private var front: String = "" + private var fileExt: String? = "" + private var uniqueId: String? = "" + private var selectedImage: String? = "" + private var checkPANUploadFile: Boolean? = false + private var checkPhotoUploadFile: Boolean? = false private val requestPermission = registerForActivityResult( ActivityResultContracts.RequestPermission() @@ -103,22 +77,71 @@ class StepThreeBajajFDFragment : BaseFragment() { ): View { _binding = FragmentBajajfdStepThreeBinding.inflate(inflater, container, false) - val root = binding.root - stepThreeBajajFDViewModel = (activity as BajajFdMainActivity).stepThreeBajajFDViewModel + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + stepThreeBajajFDViewModel = ViewModelProvider( + this, + StepThreeModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[StepThreeBajajFDViewModel::class.java] + + selectImageIntent = registerForActivityResult(ActivityResultContracts.GetContent()) + { uri: Uri? -> + if (uri != null) { + uploadDocument(uri) + } + } + + takeImageResult = + registerForActivityResult(ActivityResultContracts.TakePicture()) { isSuccess -> + if (isSuccess) { + latestTmpUri?.let { uri -> + uploadDocument(uri) + } + } + } binding.btnNext.setOnClickListener { if (validate()) { - // uploadDocApi() - // - bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest) + var uploadPosition = 0 + for (entry in mapImage.iterator()) { + uploadPosition++ + if (entry.key.contains("Main ")) { + uploadDocApi(entry.key.replace("Main ", ""), entry.value, uploadPosition) + } else { + uploadDocApi(entry.key, entry.value, uploadPosition) + } + } } } binding.btnBack.setOnClickListener { (activity as BajajFdMainActivity).binding.viewPager.currentItem = 1 } + binding.btnPANUpload.setOnClickListener { + checkPANUploadFile = true + checkPhotoUploadFile = false + selectImage("PAN") + } + + binding.btnPhotoUpload.setOnClickListener { + checkPhotoUploadFile = true + checkPANUploadFile = false + selectImage("Photograph") + } + binding.btnAadhaarFrontUpload.setOnClickListener { - selectImage() + checkPANUploadFile = false + checkPhotoUploadFile = false + selectImage(binding.spDocType.text.toString()) + } + + binding.btnAadhaarBackUpload.setOnClickListener { + checkPANUploadFile = false + checkPhotoUploadFile = false + selectImage(binding.spDocType.text.toString()) } binding.spDocType.onItemClickListener = @@ -135,26 +158,23 @@ class StepThreeBajajFDFragment : BaseFragment() { } docTypeApi() - return root } @SuppressLint("Range") fun getFileName(uri: Uri): String { - var result: String? = null + var result = "" if (uri.scheme == "content") { val cursor: Cursor = - requireActivity().getContentResolver().query(uri, null, null, null, null)!! - try { - if (cursor != null && cursor.moveToFirst()) { - result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)) + requireActivity().contentResolver.query(uri, null, null, null, null)!! + cursor.use { cursor1 -> + if (cursor1.moveToFirst()) { + result = cursor1.getString(cursor1.getColumnIndex(OpenableColumns.DISPLAY_NAME)) } - } finally { - cursor.close() } } - if (result == null) { - result = uri.path - val cut = result!!.lastIndexOf('/') + if (result.isEmpty()) { + result = uri.path!! + val cut = result.lastIndexOf('/') if (cut != -1) { result = result.substring(cut + 1) } @@ -162,7 +182,8 @@ class StepThreeBajajFDFragment : BaseFragment() { return result } - private fun selectImage() { + private fun selectImage(fileType: String) { + selectedImage = fileType dialog = Dialog(activity as BajajFdMainActivity) dialog.setContentView(R.layout.camera_gallery_layout) val ivCut: ImageView = dialog.findViewById(R.id.ivCut) @@ -175,55 +196,31 @@ class StepThreeBajajFDFragment : BaseFragment() { tvGallery.setOnClickListener { dialog.cancel() - when { - ContextCompat.checkSelfPermission( - activity as BajajFdMainActivity, + val permission = ContextCompat.checkSelfPermission( + activity as BajajFdMainActivity, + Manifest.permission.READ_EXTERNAL_STORAGE + ) + if (permission == PackageManager.PERMISSION_GRANTED) { + selectImageIntent?.launch("image/*") + } else { + requestPermission.launch( Manifest.permission.READ_EXTERNAL_STORAGE - ) == PackageManager.PERMISSION_GRANTED -> { - selectImageIntent.launch("image/*") - } - - ActivityCompat.shouldShowRequestPermissionRationale( - activity as BajajFdMainActivity, - Manifest.permission.READ_EXTERNAL_STORAGE - ) -> { - requestPermission.launch( - Manifest.permission.READ_EXTERNAL_STORAGE - ) - } - - else -> { - requestPermission.launch( - Manifest.permission.READ_EXTERNAL_STORAGE - ) - } + ) } } tvCamera.setOnClickListener { dialog.cancel() - when { - ContextCompat.checkSelfPermission( - activity as BajajFdMainActivity, + val permission = ContextCompat.checkSelfPermission( + activity as BajajFdMainActivity, + Manifest.permission.CAMERA + ) + if (permission == PackageManager.PERMISSION_GRANTED) { + takeImage() + } else { + requestPermission.launch( Manifest.permission.CAMERA - ) == PackageManager.PERMISSION_GRANTED -> { - takeImage() - } - - ActivityCompat.shouldShowRequestPermissionRationale( - activity as BajajFdMainActivity, - Manifest.permission.CAMERA - ) -> { - requestPermission.launch( - Manifest.permission.CAMERA - ) - } - - else -> { - requestPermission.launch( - Manifest.permission.CAMERA - ) - } + ) } } @@ -231,13 +228,6 @@ class StepThreeBajajFDFragment : BaseFragment() { dialog.window?.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT) } - private fun checkCameraStoragePermission( - permission: String, - selectImageIntent: ActivityResultLauncher - ) { - TODO("Not yet implemented") - } - private fun setOtherUploadLayout(itemName: String) { binding.tvAadhaarFront.text = itemName.plus(" Front *") if (binding.tvAadhaarBack.visibility == View.VISIBLE) binding.tvAadhaarBack.visibility = @@ -258,16 +248,14 @@ class StepThreeBajajFDFragment : BaseFragment() { } private fun uploadDocument(uri: Uri) { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val documentUpload = DocumentUpload() - val value: Editable? = binding.spDocType.text - val file_dir:File = requireActivity().cacheDir - val file_ex = File(file_dir.toString().plus("/").plus(getFileName(uri))) - var file_path: File? = uri.path?.let { File(it) } - encodedFileToBase64(file_ex) - - Log.e("check_data_front", value.toString()+"\n"+front) -// documentUpload.DocumentType = + val fileDir: File = requireActivity().cacheDir + val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri))) + fileExt = fileExtension.extension + encodedFileToBase64(fileExtension) + if (checkPANUploadFile == true || checkPhotoUploadFile == true) { + mapImage["Main ".plus(selectedImage)] = front + } else { + selectedImage?.let { mapImage.put(it, front) } } } @@ -283,7 +271,7 @@ class StepThreeBajajFDFragment : BaseFragment() { } @Throws(IOException::class) - private fun loadFile(file: File): ByteArray? { + private fun loadFile(file: File): ByteArray { val inputStream: InputStream = FileInputStream(file) val length = file.length() val bytes = ByteArray(length.toInt()) @@ -301,94 +289,95 @@ class StepThreeBajajFDFragment : BaseFragment() { return bytes } - private fun uploadDocApi(){ - if(Common.isNetworkAvailable((activity as BajajFdMainActivity))){ - val du = DocumentUpload() - du.Description = "PAN" - du.DocumentType = "PAN" - du.FDProvider = getString(R.string.bajaj) - du.ImageEncodeToBase64 = front //"data:image/png;base64" - du.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE - du.UniqueId = uniqueId - stepThreeBajajFDViewModel.documentsUpload(du,Constants.token) - stepThreeBajajFDViewModel.getDocumentUploadMutableData.observe(viewLifecycleOwner){ response -> - when (response){ - is Resource.Success ->{ - Log.e("response", "-->$response") - val getUploadResponse: UploadResponse = - Gson().fromJson(response.data?.toString(),UploadResponse::class.java) - getUploadResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - Log.e("check_upload_res",response.message.toString()) - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( - activity as BajajFdMainActivity, - getUploadResponse.Response.Message - ) + private fun uploadDocApi(key: String, imageBase64: String, uploadPosition: Int) { + val du = DocumentUpload() + du.Description = key + du.DocumentType = key + du.FDProvider = getString(R.string.bajaj) + du.ImageEncodeToBase64 = + "data:image/" + "." + fileExt + ";base64,".plus(imageBase64) //"data:image/png;base64" + du.NiveshClientCode = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + du.UniqueId = uniqueId + stepThreeBajajFDViewModel.documentsUpload( + du, + Constants.token, + activity as BajajFdMainActivity + ) + stepThreeBajajFDViewModel.getDocumentUploadMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("UploadImage", "Response-->" + response.data.toString()) + val getUploadResponse: UploadResponse = + Gson().fromJson(response.data?.toString(), UploadResponse::class.java) + getUploadResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + Log.e("check_upload_res", response.message.toString()) + if (uploadPosition == mapImage.size) { + Toast.makeText( + requireActivity(), + "".plus(mapImage.size.toString() + " Last Image Uploaded ") + + uploadPosition, + Toast.LENGTH_LONG + ).show() + // bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest) + createFDApi((activity as BajajFdMainActivity).createFDRequest) } } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getUploadResponse.Response.Message + ) + } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } + } + is Resource.Loading -> { - is Resource.DataError -> { - - } } + is Resource.DataError -> { + } } - } } - private fun docTypeApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.docType) - getCodeRequest.Language = getString(R.string.language) - getCodeRequest.InputValue = "" - stepThreeBajajFDViewModel.titleApi(getCodeRequest, Constants.token) - stepThreeBajajFDViewModel.getTitleMutableData.observe(viewLifecycleOwner) { response -> + private fun createFDApi(data: CreateFDRequest) { + stepThreeBajajFDViewModel.createFDApi( + data, + Constants.token, + activity as BajajFdMainActivity + ) + stepThreeBajajFDViewModel.getFDResponseMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { - Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> + Log.e("createFDApi", "response--> " + response.data.toString()) + val createFDApplicationResponse: CreateFDApplicationResponse = + Gson().fromJson( + response.data?.toString(), + CreateFDApplicationResponse::class.java + ) + createFDApplicationResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - listOfDocType = getCodeResponse.Response.GetCodesList - if (listOfDocType.isNotEmpty()) { - val adapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - listOfDocType - ) - binding.spDocType.setAdapter(adapter) - binding.spDocType.setText( - adapter.getItem(0)?.Value, - false - ) - setOtherUploadLayout(listOfDocType[0].Value) - } + (activity as BajajFdMainActivity).stepThreeApi( + createFDApplicationResponse + ) } // 650 -> refreshToken() else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getCodeResponse.Response.Message + createFDApplicationResponse.Response.Errors[0].ErrorMessage ) } } @@ -408,6 +397,69 @@ class StepThreeBajajFDFragment : BaseFragment() { } } } + } + + + private fun docTypeApi() { + + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.docType) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepThreeBajajFDViewModel.titleApi( + getCodeRequest, + Constants.token, + activity as BajajFdMainActivity + ) + stepThreeBajajFDViewModel.getTitleMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + listOfDocType = getCodeResponse.Response.GetCodesList + if (listOfDocType.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfDocType + ) + binding.spDocType.setAdapter(adapter) + binding.spDocType.setText( + adapter.getItem(0)?.Value, + false + ) + setOtherUploadLayout(listOfDocType[0].Value) + } + } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Message + ) + } + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) + } + } + is Resource.Loading -> { + + } + + is Resource.DataError -> { + + } + } } } @@ -420,7 +472,7 @@ class StepThreeBajajFDFragment : BaseFragment() { lifecycleScope.launchWhenStarted { getTmpFileUri().let { uri -> latestTmpUri = uri - takeImageResult.launch(uri) + takeImageResult?.launch(uri) } } } @@ -446,6 +498,7 @@ class StepThreeBajajFDFragment : BaseFragment() { } fun displayReceivedData(createFDApplicationResponse: CreateFDApplicationResponse) { - uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId + uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId } + } \ No newline at end of file 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 3d2b9ee..d3484bb 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 @@ -16,7 +16,7 @@ import android.widget.ArrayAdapter import android.widget.RadioButton import android.widget.TextView import androidx.core.content.ContextCompat -import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.textfield.TextInputEditText @@ -25,21 +25,24 @@ import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.adapter.BankListAdapter import com.nivesh.production.bajajfd.adapter.PaymentModeAdapter import com.nivesh.production.bajajfd.adapter.RecommendedBankListAdapter +import com.nivesh.production.bajajfd.api.ApiClient import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepTwoBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.model.* +import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.ui.providerfactory.StepTwoModelProviderFactory import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common.Companion.commonErrorAutoCompleteMethod import com.nivesh.production.bajajfd.util.Common.Companion.commonErrorMethod import com.nivesh.production.bajajfd.util.Common.Companion.commonSpinnerErrorMethod import com.nivesh.production.bajajfd.util.Common.Companion.getDate import com.nivesh.production.bajajfd.util.Common.Companion.isIndianMobileNo +import com.nivesh.production.bajajfd.util.Common.Companion.isMinor import com.nivesh.production.bajajfd.util.Common.Companion.isValidEmail import com.nivesh.production.bajajfd.util.Common.Companion.isValidName import com.nivesh.production.bajajfd.util.Common.Companion.isValidPan import com.nivesh.production.bajajfd.util.Common.Companion.removeError -import com.nivesh.production.bajajfd.util.Constants import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel @@ -63,10 +66,8 @@ class StepTwoBajajFDFragment : BaseFragment() { private lateinit var listOfMaritalStatus: List private lateinit var listOfOccupation: List private lateinit var listOfPayMode: List - private lateinit var listOfStates: List private lateinit var listOfCities: List - private lateinit var listOfIFSC: MutableList private lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel @@ -74,27 +75,21 @@ class StepTwoBajajFDFragment : BaseFragment() { private lateinit var paymentModeAdapter: PaymentModeAdapter private lateinit var stateObject: DataObject - companion object { - fun getInstance(fdInterface: BajajFDInterface): StepTwoBajajFDFragment { - val stepOneFragment = StepTwoBajajFDFragment() - stepOneFragment.setApi(fdInterface) - return stepOneFragment - } - } - - private fun setApi(bajajFDInterfaces: BajajFDInterface) { - bajajFDInterface = bajajFDInterfaces - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { _binding = FragmentBajajfdStepTwoBinding.inflate(inflater, container, false) - val root = binding.root - stepTwoBajajFDViewModel = (activity as BajajFdMainActivity).stepTwoBajajFDViewModel + return binding.root + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + stepTwoBajajFDViewModel = ViewModelProvider( + this, + StepTwoModelProviderFactory(MainRepository(ApiClient.getApiClient)) + )[StepTwoBajajFDViewModel::class.java] listOfTitle = ArrayList() listOfGender = ArrayList() listOfAnnualIncome = ArrayList() @@ -532,12 +527,6 @@ class StepTwoBajajFDFragment : BaseFragment() { } } -// rbPaymentMode.text = getString(R.string.Upi) -// binding.rgPaymentMode.setOnCheckedChangeListener { group, checkedId -> -// rbPaymentMode = group.findViewById(checkedId) -// Log.e("paymentMode", "-->" + rbPaymentMode.text) -// } - binding.tvEligibleBankOption.setOnClickListener { apiForEligibleBankList() } @@ -548,8 +537,6 @@ class StepTwoBajajFDFragment : BaseFragment() { binding.llBankDetails.visibility = View.GONE } - - binding.addBankDetail.setOnClickListener { if (binding.llBankDetails.visibility == View.GONE) { binding.llBankDetails.visibility = View.VISIBLE @@ -720,10 +707,13 @@ class StepTwoBajajFDFragment : BaseFragment() { (activity as BajajFdMainActivity).createFDRequest.CreateFDApplicationRequest = (activity as BajajFdMainActivity).createFDApplicantRequest Log.e( - "CreateFDRequest", + "StepTwoResponse", "-->" + Gson().toJson((activity as BajajFdMainActivity).createFDRequest) ) - bajajFDInterface.stepTwoApi((activity as BajajFdMainActivity).createFDRequest) + // bajajFDInterface.stepTwoApi((activity as BajajFdMainActivity).createFDRequest) + // (activity as BajajFdMainActivity).stepTwoApi((activity as BajajFdMainActivity).createFDRequest) + + createFDApi((activity as BajajFdMainActivity).createFDRequest) } } @@ -731,99 +721,94 @@ class StepTwoBajajFDFragment : BaseFragment() { (activity as BajajFdMainActivity).binding.viewPager.currentItem = 0 } - return root } - private fun ifscCodeCheckApi(ifsc: String) { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - if (ifsc.length == 11) { - stepTwoBajajFDViewModel.ifscCodeApi(ifsc) - stepTwoBajajFDViewModel.getifscCodeCheckMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - val getIFSCCodeListResponse = - Gson().fromJson( - response.data?.toString(), - GetIFSCCodeListResponse::class.java + private fun createFDApi(data: CreateFDRequest) { + stepTwoBajajFDViewModel.createFDApi(data, token, activity as BajajFdMainActivity) + stepTwoBajajFDViewModel.getFDResponseMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val createFDApplicationResponse: CreateFDApplicationResponse = + Gson().fromJson( + response.data?.toString(), + CreateFDApplicationResponse::class.java + ) + createFDApplicationResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + (activity as BajajFdMainActivity).stepTwoApi( + createFDApplicationResponse ) - getIFSCCodeListResponse.Response.status_code.let { code -> - when (code) { - 200 -> { - if (listOfIFSC.size > 0) { - listOfIFSC.clear() - } - listOfIFSC = getIFSCCodeListResponse.IFSCCodes - if (listOfIFSC.size > 0) { - val adapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - listOfIFSC - ) - binding.edtIFSC.setAdapter(adapter) - } - binding.edtIFSC.setOnItemClickListener { _, _, position, _ -> - if (listOfIFSC.size > 0) { - binding.edtIFSC.setText(listOfIFSC[position]) - binding.edtIFSC.setSelection(binding.edtIFSC.text.toString().length) - getIFSCDetailsApi(listOfIFSC[position]) - } - } - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( - activity as BajajFdMainActivity, - getIFSCCodeListResponse.Response.message - ) - } - } } - } - - is Resource.Error -> { - response.message?.let { message -> + // 650 -> refreshToken() + else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - message + createFDApplicationResponse.Response.Errors[0].ErrorMessage ) } } - is Resource.Loading -> { + } + } - } + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) + } + } + is Resource.Loading -> { - is Resource.DataError -> { + } + is Resource.DataError -> { - } - } } } } } - private fun getIFSCDetailsApi(ifscCode: String) { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - stepTwoBajajFDViewModel.ifscCodeDetailsApi(ifscCode, token) - stepTwoBajajFDViewModel.getifscCodeDetailsCheckMutableData.observe(viewLifecycleOwner) { response -> + + private fun ifscCodeCheckApi(ifsc: String) { + if (ifsc.length == 11) { + stepTwoBajajFDViewModel.ifscCodeApi(ifsc, activity as BajajFdMainActivity) + stepTwoBajajFDViewModel.getifscCodeCheckMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { - val getIFSCCodeResponse = + val getIFSCCodeListResponse = Gson().fromJson( response.data?.toString(), - GetIFSCCodeResponse::class.java + GetIFSCCodeListResponse::class.java ) - getIFSCCodeResponse.Response.status_code.let { code -> + getIFSCCodeListResponse.Response.status_code.let { code -> when (code) { 200 -> { - binding.edtBankName.setText(getIFSCCodeResponse.BANK) - binding.edtBankBranch.setText(getIFSCCodeResponse.BRANCH) + if (listOfIFSC.size > 0) { + listOfIFSC.clear() + } + listOfIFSC = getIFSCCodeListResponse.IFSCCodes + if (listOfIFSC.size > 0) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfIFSC + ) + binding.edtIFSC.setAdapter(adapter) + } + binding.edtIFSC.setOnItemClickListener { _, _, position, _ -> + if (listOfIFSC.size > 0) { + binding.edtIFSC.setText(listOfIFSC[position]) + binding.edtIFSC.setSelection(binding.edtIFSC.text.toString().length) + getIFSCDetailsApi(listOfIFSC[position]) + } + } + } // 650 -> refreshToken() else -> { Common.showDialogValidation( activity as BajajFdMainActivity, - getIFSCCodeResponse.Response.message + getIFSCCodeListResponse.Response.message ) } } @@ -832,13 +817,15 @@ class StepTwoBajajFDFragment : BaseFragment() { is Resource.Error -> { response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) + Common.showDialogValidation( + activity as BajajFdMainActivity, + message + ) } } is Resource.Loading -> { } - is Resource.DataError -> { } @@ -847,6 +834,54 @@ class StepTwoBajajFDFragment : BaseFragment() { } } + private fun getIFSCDetailsApi(ifscCode: String) { + + stepTwoBajajFDViewModel.ifscCodeDetailsApi( + ifscCode, + token, + activity as BajajFdMainActivity + ) + stepTwoBajajFDViewModel.getifscCodeDetailsCheckMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + val getIFSCCodeResponse = + Gson().fromJson( + response.data?.toString(), + GetIFSCCodeResponse::class.java + ) + getIFSCCodeResponse.Response.status_code.let { code -> + when (code) { + 200 -> { + binding.edtBankName.setText(getIFSCCodeResponse.BANK) + binding.edtBankBranch.setText(getIFSCCodeResponse.BRANCH) + } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getIFSCCodeResponse.Response.message + ) + } + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) + } + } + is Resource.Loading -> { + + } + is Resource.DataError -> { + + } + } + } + + } + private fun validateBank(): Boolean { return if (binding.edtIFSC.text.toString().isEmpty()) { // EditText commonErrorAutoCompleteMethod( @@ -896,8 +931,6 @@ class StepTwoBajajFDFragment : BaseFragment() { } - - private fun datePicker(edtDOB: TextInputEditText) { val year = cal.get(Calendar.YEAR) val month = cal.get(Calendar.MONTH) @@ -923,110 +956,104 @@ class StepTwoBajajFDFragment : BaseFragment() { } private fun panCheckApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val panCheck = PanCheckRequest() - panCheck.clientCode = - (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE - panCheck.subBrokerCode = - (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.sub_broker_code - panCheck.panNumber = binding.edtPANNumber.text.toString() - panCheck.mobileNumber = "" - stepTwoBajajFDViewModel.panCheck(panCheck, token) - stepTwoBajajFDViewModel.getPanCheckMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - val panCheckResponse = - Gson().fromJson( - response.data?.toString(), - PanCheckResponse::class.java - ) - panCheckResponse.response.status_code.let { code -> - if (binding.tvPANVerify.visibility == View.GONE) { - binding.tvPANVerify.visibility = View.VISIBLE - } - when (code) { - 200 -> { - binding.tvPANVerify.text = getString(R.string.verifiedText) - binding.tvPANVerify.setTextColor( - ContextCompat.getColor( - activity as BajajFdMainActivity, - R.color.green - ) + val panCheck = PanCheckRequest() + panCheck.clientCode = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + panCheck.subBrokerCode = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.sub_broker_code + panCheck.panNumber = binding.edtPANNumber.text.toString() + panCheck.mobileNumber = "" + stepTwoBajajFDViewModel.panCheck(panCheck, token, activity as BajajFdMainActivity) + stepTwoBajajFDViewModel.getPanCheckMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + val panCheckResponse = + Gson().fromJson( + response.data?.toString(), + PanCheckResponse::class.java + ) + panCheckResponse.response.status_code.let { code -> + if (binding.tvPANVerify.visibility == View.GONE) { + binding.tvPANVerify.visibility = View.VISIBLE + } + when (code) { + 200 -> { + binding.tvPANVerify.text = getString(R.string.verifiedText) + binding.tvPANVerify.setTextColor( + ContextCompat.getColor( + activity as BajajFdMainActivity, + R.color.green ) - } - // 650 -> refreshToken() - else -> { - binding.tvPANVerify.text = getString(R.string.notVerifiedText) - binding.tvPANVerify.setTextColor( - ContextCompat.getColor( - activity as BajajFdMainActivity, - R.color.red - ) + ) + } + // 650 -> refreshToken() + else -> { + binding.tvPANVerify.text = getString(R.string.notVerifiedText) + binding.tvPANVerify.setTextColor( + ContextCompat.getColor( + activity as BajajFdMainActivity, + R.color.red ) - } + ) } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } + } + is Resource.Loading -> { - is Resource.DataError-> { + } + is Resource.DataError -> { - } } } - } - } private fun titleApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.salutationCategory) - getCodeRequest.Language = getString(R.string.language) - getCodeRequest.InputValue = "" - stepTwoBajajFDViewModel.titleApi(getCodeRequest, token) - stepTwoBajajFDViewModel.getTitleMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - listOfTitle = getCodeResponse.Response.GetCodesList - if (listOfTitle.isNotEmpty()) { - val adapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - listOfTitle + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.salutationCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.titleApi(getCodeRequest, token, activity as BajajFdMainActivity) + stepTwoBajajFDViewModel.getTitleMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + listOfTitle = getCodeResponse.Response.GetCodesList + if (listOfTitle.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfTitle + ) + binding.spTitle.setAdapter(adapter) + + val titleText = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Client_Title + val newTitleText = "$titleText." + if (titleText?.isEmpty()!!) { + binding.spTitle.setText( + adapter.getItem(0)?.Value, + false ) - binding.spTitle.setAdapter(adapter) - - val titleText = - (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Client_Title - val newTitleText = "$titleText." - if (titleText?.isEmpty()!!) { - binding.spTitle.setText( - adapter.getItem(0)?.Value, - false - ) - } else { - for (title in listOfTitle) { - if (title.Value == newTitleText) { - binding.spTitle.setText(title.Value, false) - break - } + } else { + for (title in listOfTitle) { + if (title.Value == newTitleText) { + binding.spTitle.setText(title.Value, false) + break + } // binding.spTitle.setOnTouchListener { v, event -> // when (event?.action) { // MotionEvent.ACTION_DOWN -> { @@ -1040,504 +1067,490 @@ class StepTwoBajajFDFragment : BaseFragment() { // // v?.onTouchEvent(event) ?: true // } - } } - - binding.spNomineeTitle.setAdapter(adapter) - binding.spNomineeTitle.setText( - adapter.getItem(0)?.Value, - false - ) } - genderApi() - relationShipApi() - maritalStatusApi() - occupationApi() - annualIncomeApi() - stateListApi() - paymentModeApi() - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( - activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage + binding.spNomineeTitle.setAdapter(adapter) + binding.spNomineeTitle.setText( + adapter.getItem(0)?.Value, + false ) } + genderApi() + relationShipApi() + maritalStatusApi() + occupationApi() + annualIncomeApi() + stateListApi() + paymentModeApi() + + } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } - is Resource.Loading -> { + } + is Resource.Loading -> { - } - is Resource.DataError -> { + } + is Resource.DataError -> { - } } } - } } private fun paymentModeApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.paymentModeCategory) - getCodeRequest.Language = getString(R.string.language) - getCodeRequest.InputValue = "" - stepTwoBajajFDViewModel.paymentModeApi(getCodeRequest, Constants.token) - stepTwoBajajFDViewModel.getPaymentModeMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - if (getCodeResponse.Response.GetCodesList.isNotEmpty()){ - listOfPayMode = getCodeResponse.Response.GetCodesList - setUpRecyclerViewPaymentMode(listOfPayMode) - } - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( - activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage - ) + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.paymentModeCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.paymentModeApi( + getCodeRequest, + token, + activity as BajajFdMainActivity + ) + stepTwoBajajFDViewModel.getPaymentModeMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + if (getCodeResponse.Response.GetCodesList.isNotEmpty()) { + listOfPayMode = getCodeResponse.Response.GetCodesList + setUpRecyclerViewPaymentMode(listOfPayMode) } } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } + } + is Resource.Loading -> { - is Resource.DataError -> { + } + is Resource.DataError -> { - } } } - } } private fun setUpRecyclerViewPaymentMode(listOfPayMode: List) { - binding.rvPaymentMode.layoutManager = - LinearLayoutManager(activity as BajajFdMainActivity) + binding.rvPaymentMode.layoutManager = + LinearLayoutManager(activity as BajajFdMainActivity) paymentModeAdapter = PaymentModeAdapter( - listOfPayMode, + listOfPayMode, listOfPayMode[0].Value - ) - binding.rvPaymentMode.adapter = paymentModeAdapter + ) + binding.rvPaymentMode.adapter = paymentModeAdapter } private fun genderApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.genderCategory) - getCodeRequest.Language = getString(R.string.language) - getCodeRequest.InputValue = "" - stepTwoBajajFDViewModel.genderApi(getCodeRequest, token) - stepTwoBajajFDViewModel.getGenderMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - listOfGender = getCodeResponse.Response.GetCodesList - if (listOfGender.isNotEmpty()) { - val adapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - listOfGender - ) - binding.spGender.setAdapter(adapter) - binding.spGender.setText( - adapter.getItem(0)?.Value, - false - ) - } - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( - activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage - ) - } - } - } - } - - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.genderCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.genderApi( + getCodeRequest, + token, + activity as BajajFdMainActivity + ) + stepTwoBajajFDViewModel.getGenderMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + listOfGender = getCodeResponse.Response.GetCodesList + if (listOfGender.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfGender + ) + binding.spGender.setAdapter(adapter) + binding.spGender.setText( + adapter.getItem(0)?.Value, + false + ) + } + } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } - is Resource.Loading -> { + } + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } + } + is Resource.Loading -> { - is Resource.DataError -> { + } + is Resource.DataError -> { - } } } - } - } private fun relationShipApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.relationshipCategory) - getCodeRequest.Language = getString(R.string.language) - getCodeRequest.InputValue = "" - stepTwoBajajFDViewModel.relationShipApi(getCodeRequest, token) - stepTwoBajajFDViewModel.getRelationShipMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - listOfRelationShip = getCodeResponse.Response.GetCodesList - if (listOfGender.isNotEmpty()) { - val adapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - listOfRelationShip - ) + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.relationshipCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.relationShipApi( + getCodeRequest, + token, + activity as BajajFdMainActivity + ) + stepTwoBajajFDViewModel.getRelationShipMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + listOfRelationShip = getCodeResponse.Response.GetCodesList + if (listOfGender.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfRelationShip + ) - binding.spNomineeRelation.setAdapter(adapter) - binding.spNomineeRelation.setText( - adapter.getItem(0)?.Value, - false - ) + binding.spNomineeRelation.setAdapter(adapter) + binding.spNomineeRelation.setText( + adapter.getItem(0)?.Value, + false + ) - binding.spGuardianRelation.setAdapter(adapter) - binding.spGuardianRelation.setText( - adapter.getItem(0)?.Value, - false - ) - } - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( - activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage + binding.spGuardianRelation.setAdapter(adapter) + binding.spGuardianRelation.setText( + adapter.getItem(0)?.Value, + false ) } } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } - is Resource.Loading -> { + } + is Resource.Loading -> { - } + } - is Resource.DataError -> { + is Resource.DataError -> { - } } } - } - } private fun maritalStatusApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.maritalCategory) - getCodeRequest.Language = getString(R.string.language) - getCodeRequest.InputValue = "" - stepTwoBajajFDViewModel.maritalStatusApi(getCodeRequest, token) - stepTwoBajajFDViewModel.getMaritalStatusMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - listOfMaritalStatus = getCodeResponse.Response.GetCodesList - if (listOfMaritalStatus.isNotEmpty()) { - val adapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - listOfMaritalStatus - ) - binding.spMarital.setAdapter(adapter) - binding.spMarital.setText( - adapter.getItem(0)?.Value, - false - ) - } - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.maritalCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.maritalStatusApi( + getCodeRequest, + token, + activity as BajajFdMainActivity + ) + stepTwoBajajFDViewModel.getMaritalStatusMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + listOfMaritalStatus = getCodeResponse.Response.GetCodesList + if (listOfMaritalStatus.isNotEmpty()) { + val adapter = ArrayAdapter( activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage + R.layout.spinner_dropdown, + listOfMaritalStatus + ) + binding.spMarital.setAdapter(adapter) + binding.spMarital.setText( + adapter.getItem(0)?.Value, + false ) } } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } + } + is Resource.Loading -> { - is Resource.DataError -> { + } + is Resource.DataError -> { - } } } - } - } private fun occupationApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.occupationCategory) - getCodeRequest.Language = getString(R.string.language) - getCodeRequest.InputValue = "" - stepTwoBajajFDViewModel.occupationApi(getCodeRequest, token) - stepTwoBajajFDViewModel.getOccupationMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - listOfOccupation = getCodeResponse.Response.GetCodesList - if (listOfOccupation.isNotEmpty()) { - val adapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - listOfOccupation - ) - binding.spOccupation.setAdapter(adapter) - binding.spOccupation.setText( - adapter.getItem(0)?.Value, - false - ) - } - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.occupationCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.occupationApi( + getCodeRequest, + token, + activity as BajajFdMainActivity + ) + stepTwoBajajFDViewModel.getOccupationMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + listOfOccupation = getCodeResponse.Response.GetCodesList + if (listOfOccupation.isNotEmpty()) { + val adapter = ArrayAdapter( activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage + R.layout.spinner_dropdown, + listOfOccupation + ) + binding.spOccupation.setAdapter(adapter) + binding.spOccupation.setText( + adapter.getItem(0)?.Value, + false ) } } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - - } - - is Resource.DataError -> { - + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } + is Resource.Loading -> { + } + is Resource.DataError -> { - + } } - } - } private fun annualIncomeApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.annualIncome) - getCodeRequest.Language = getString(R.string.language) - getCodeRequest.InputValue = "" - stepTwoBajajFDViewModel.annualIncomeApi(getCodeRequest, token) - stepTwoBajajFDViewModel.getAnnualIncomeMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - listOfAnnualIncome = getCodeResponse.Response.GetCodesList - if (listOfAnnualIncome.isNotEmpty()) { - val adapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - listOfAnnualIncome - ) - binding.spIncome.setAdapter(adapter) - binding.spIncome.setText( - adapter.getItem(0)?.Value, - false - ) - } - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.annualIncome) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.annualIncomeApi( + getCodeRequest, + token, + activity as BajajFdMainActivity + ) + stepTwoBajajFDViewModel.getAnnualIncomeMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + listOfAnnualIncome = getCodeResponse.Response.GetCodesList + if (listOfAnnualIncome.isNotEmpty()) { + val adapter = ArrayAdapter( activity as BajajFdMainActivity, - getCodeResponse.Response.Errors[0].ErrorMessage + R.layout.spinner_dropdown, + listOfAnnualIncome + ) + binding.spIncome.setAdapter(adapter) + binding.spIncome.setText( + adapter.getItem(0)?.Value, + false ) } } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } + } + is Resource.Loading -> { + } + is Resource.DataError -> { - is Resource.DataError -> { - - } } } - } - } private fun stateListApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - stepTwoBajajFDViewModel.stateApi(token) - stepTwoBajajFDViewModel.getStateMasterMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val stateListResponse: StateListResponse = - Gson().fromJson( - response.data?.toString(), - StateListResponse::class.java - ) - stateListResponse.response.status_code.let { code -> - when (code) { - 200 -> { - listOfStates = stateListResponse.DataObject - if (listOfStates.isNotEmpty()) { - val adapter = ArrayAdapter( - activity as BajajFdMainActivity, - R.layout.spinner_dropdown, - listOfStates + stepTwoBajajFDViewModel.stateApi(token, activity as BajajFdMainActivity) + stepTwoBajajFDViewModel.getStateMasterMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val stateListResponse: StateListResponse = + Gson().fromJson( + response.data?.toString(), + StateListResponse::class.java + ) + stateListResponse.response.status_code.let { code -> + when (code) { + 200 -> { + listOfStates = stateListResponse.DataObject + if (listOfStates.isNotEmpty()) { + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfStates + ) + binding.spState.setAdapter(adapter) + val newTitleText = + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_STATE + if (newTitleText?.isEmpty()!!) { + binding.spState.setText( + adapter.getItem(0)?.State_Name, + false ) - binding.spState.setAdapter(adapter) - val newTitleText = - (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_STATE - if (newTitleText?.isEmpty()!!) { - binding.spState.setText( - adapter.getItem(0)?.State_Name, - false - ) - cityListApi(adapter.getItem(0)?.State_Id) - - stateObject = adapter.getItem(0) as DataObject - Log.e("if", " -->" + stateObject.State_Code) - } else { - for (title in listOfStates) { - if (title.State_Code == newTitleText) { - binding.spState.setText(title.State_Name, false) - cityListApi(title.State_Id) - stateObject = title - Log.e("else", " -->" + stateObject.State_Code) - break - } + cityListApi(adapter.getItem(0)?.State_Id) + + stateObject = adapter.getItem(0) as DataObject + Log.e("if", " -->" + stateObject.State_Code) + } else { + for (title in listOfStates) { + if (title.State_Code == newTitleText) { + binding.spState.setText(title.State_Name, false) + cityListApi(title.State_Id) + stateObject = title + Log.e("else", " -->" + stateObject.State_Code) + break } } } } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( - activity as BajajFdMainActivity, - stateListResponse.response.message - ) - } + } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + stateListResponse.response.message + ) } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } + } + is Resource.Loading -> { - is Resource.DataError -> { + } + is Resource.DataError -> { - } } } - } } @@ -1557,7 +1570,7 @@ class StepTwoBajajFDFragment : BaseFragment() { cityRequest.HOCode = "" cityRequest.Source = getString(R.string.source) cityRequest.APP_Web = getString(R.string.app) - stepTwoBajajFDViewModel.cityListApi(cityRequest, token) + stepTwoBajajFDViewModel.cityListApi(cityRequest, token, activity as BajajFdMainActivity) stepTwoBajajFDViewModel.getCityListMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { @@ -1612,8 +1625,6 @@ class StepTwoBajajFDFragment : BaseFragment() { is Resource.Loading -> { } - - is Resource.DataError -> { } @@ -1622,50 +1633,46 @@ class StepTwoBajajFDFragment : BaseFragment() { } private fun apiForEligibleBankList() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - stepTwoBajajFDViewModel.bankListApi(token) - stepTwoBajajFDViewModel.getFDBankListMutableData.observe(viewLifecycleOwner) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->$response") - val getFDBankListResponse: GetFDBankListResponse = - Gson().fromJson( - response.data?.toString(), - GetFDBankListResponse::class.java - ) - getFDBankListResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - if (getFDBankListResponse.Response.BankList.isNotEmpty()) { - dialogForBankList(getFDBankListResponse.Response.BankList) - } - } - // 650 -> refreshToken() - else -> { - Common.showDialogValidation( - activity as BajajFdMainActivity, - getFDBankListResponse.Response.Errors[0].ErrorMessage - ) + stepTwoBajajFDViewModel.bankListApi(token, activity as BajajFdMainActivity) + stepTwoBajajFDViewModel.getFDBankListMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getFDBankListResponse: GetFDBankListResponse = + Gson().fromJson( + response.data?.toString(), + GetFDBankListResponse::class.java + ) + getFDBankListResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + if (getFDBankListResponse.Response.BankList.isNotEmpty()) { + dialogForBankList(getFDBankListResponse.Response.BankList) } } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getFDBankListResponse.Response.Errors[0].ErrorMessage + ) + } } } + } - is Resource.Error -> { - response.message?.let { message -> - Common.showDialogValidation(activity as BajajFdMainActivity, message) - } - } - is Resource.Loading -> { - + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) } + } + is Resource.Loading -> { - is Resource.DataError -> { + } + is Resource.DataError -> { - } } } - } } @@ -1840,6 +1847,14 @@ class StepTwoBajajFDFragment : BaseFragment() { binding.tlPinCode, getString(R.string.validPinCode) ) + } else if (binding.edtNomineeDOB.text.toString() + .isNotEmpty() && isMinor(binding.edtNomineeDOB.text.toString()) + ) { + commonErrorMethod( + binding.edtGuardianName, + binding.tlGuardianName, + getString(R.string.validGuardianDetails) + ) } else if ((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.ClientBanklist?.isEmpty()!! && binding.edtIFSC.text.toString() .isEmpty() ) { // EditText diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt index b9e6037..f217a9c 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt @@ -3,25 +3,22 @@ package com.nivesh.production.bajajfd.util import android.app.Activity import android.app.AlertDialog import android.content.Context -import android.content.Intent import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.net.ConnectivityManager import android.net.NetworkCapabilities -import android.net.Uri import android.os.Build import android.provider.ContactsContract +import android.text.format.DateFormat import android.util.Patterns import com.google.android.material.textfield.MaterialAutoCompleteTextView import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputLayout import com.google.gson.JsonObject -import com.nivesh.production.bajajfd.BajajApplication import com.nivesh.production.bajajfd.R -import com.nivesh.production.bajajfd.ui.activity.BaseActivity +import kotlinx.coroutines.CoroutineExceptionHandler import retrofit2.HttpException import java.io.IOException -import java.net.SocketTimeoutException import java.text.SimpleDateFormat import java.util.* import java.util.regex.Matcher @@ -31,8 +28,6 @@ import java.util.regex.Pattern class Common { companion object { - - /** *Before use this method write following code in model class app:Application(in activity and model) @@ -40,7 +35,7 @@ class Common { val connectivityManager = getApplication().getSystemService(.... **/ //internet check - fun isNetworkAvailable(activity: BaseActivity): Boolean { + fun isNetworkAvailable(activity: Activity): Boolean { val connectivityManager = activity.getSystemService( Context.CONNECTIVITY_SERVICE ) as ConnectivityManager @@ -70,9 +65,6 @@ class Common { return false } - - - //valid email check fun isValidEmail(target: String?): Boolean { return Patterns.EMAIL_ADDRESS.matcher(target.toString()).matches() @@ -194,30 +186,52 @@ class Common { return simpleDateFormat.format(mDate as Date) } - fun handleRatesResponse(response: retrofit2.Response): Resource { - try { - if (response.isSuccessful && response.body() != null) - { - response.body()?.let { resultResponse -> - return Resource.Success(resultResponse) - } - } - - - - } catch (t: Throwable) { - return when (t) { - is IOException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause)) - is HttpException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause)) - is SocketTimeoutException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause)) - else -> Resource.Error(t.localizedMessage?.toString() ?: "") + fun handleResponse(response: retrofit2.Response): Resource { + // try { + if (response.isSuccessful && response.body() != null) { + response.body()?.let { resultResponse -> + return Resource.Success(resultResponse) } } +// } catch (t: Throwable) { +// return when (t) { +// is IOException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause)) +// is HttpException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause)) +// is SocketTimeoutException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause)) +// is UnknownHostException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause)) +// else -> Resource.Error(t.localizedMessage?.toString() ?: "") +// } +// } return Resource.Error(response.message()) } + fun handleError(activity: Activity): CoroutineExceptionHandler { + val handler = CoroutineExceptionHandler { _, exception -> + if (exception is IOException || exception is HttpException) { + showDialogValidation( + activity, + "Response : ".plus(exception.message).plus(" Cause: ").plus(exception.cause) + ) + } else { + showDialogValidation( + activity, + "Response : ".plus(exception.localizedMessage?.toString()) + ) + } + } + return handler + } - - + fun isMinor(date: String): Boolean { + val simpleDateFormat = SimpleDateFormat("yyyy-mm-dd") + val dt1: Date = simpleDateFormat.parse(date) + val year: Int = DateFormat.format("yyyy", dt1).toString().toInt() + val month: Int = DateFormat.format("mm", dt1).toString().toInt() + val day = DateFormat.format("dd", dt1).toString().toInt() + val userAge: Calendar = GregorianCalendar(year, month, day) + val minAdultAge: Calendar = GregorianCalendar() + minAdultAge.add(Calendar.YEAR, -18) + return minAdultAge.before(userAge) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Resource.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Resource.kt index c8a3766..c59bd6a 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/Resource.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Resource.kt @@ -1,9 +1,8 @@ package com.nivesh.production.bajajfd.util - sealed class Resource( - val data:T?=null, - var message:String?=null, + val data: T? = null, + var message: String? = null, val errorCode: Int? = null, var status: Boolean = true @@ -11,7 +10,8 @@ sealed class Resource( class Success(data: T) : Resource(data) class Error(message: String, data: T? = null) : Resource(data, message) class Loading : Resource() - class DataError(errorCode: Int,message: String, data: T? = null) : Resource(null, message,errorCode) + class DataError(errorCode: Int, message: String, data: T? = null) : + Resource(null, message, errorCode) override fun toString(): String { @@ -23,5 +23,4 @@ sealed class Resource( } } - } \ 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 1b703fb..5cee438 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 @@ -1,58 +1,52 @@ package com.nivesh.production.bajajfd.viewModel -import android.util.Log +import android.app.Activity import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject -import com.nivesh.production.bajajfd.model.CreateFDRequest -import com.nivesh.production.bajajfd.model.FDStepsCountRequest -import com.nivesh.production.bajajfd.model.getClientDetailsRequest +import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.repositories.MainRepository -import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse +import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.util.Common +import com.nivesh.production.bajajfd.util.Common.Companion.handleError +import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { val getStepsCountMutableData: MutableLiveData> = MutableLiveData() - fun getStepsCount(requestBody: FDStepsCountRequest, token: String) = viewModelScope.launch { - getStepsCountMutableData.postValue(Resource.Loading()) - val response = mainRepository.getStepsCountResponse(requestBody, token) - Log.e("response", "-->"+response) - getStepsCountMutableData.postValue(handleRatesResponse(response)) + fun getStepsCount( + requestBody: FDStepsCountRequest, + token: String, + activity: Activity + ) = viewModelScope.launch(handleError(activity)) { + if (Common.isNetworkAvailable(activity)) { + getStepsCountMutableData.postValue(Resource.Loading()) + val response = mainRepository.getStepsCountResponse(requestBody, token) + getStepsCountMutableData.postValue(handleResponse(response)) + } } val getClientDetailsMutableData: MutableLiveData> = MutableLiveData() - fun getClientDetails(getClientDetailsRequest: getClientDetailsRequest, token: String) = - viewModelScope.launch { - getClientDetailsMutableData.postValue(Resource.Loading()) - val response = mainRepository.getClientDetailsResponse(getClientDetailsRequest, token) - getClientDetailsMutableData.postValue(handleRatesResponse(response)) + fun getClientDetails(getClientDetailsRequest: getClientDetailsRequest, token: String, activity: Activity) = + viewModelScope.launch(handleError(activity)) { + if (Common.isNetworkAvailable(activity)) { + getClientDetailsMutableData.postValue(Resource.Loading()) + val response = + mainRepository.getClientDetailsResponse(getClientDetailsRequest, token) + getClientDetailsMutableData.postValue(handleResponse(response)) + } } - val getFDResponseMutableData: MutableLiveData> = MutableLiveData() - fun createFDApi(getRatesRequest: CreateFDRequest, token: String) = viewModelScope.launch { - getFDResponseMutableData.postValue(Resource.Loading()) - val response = mainRepository.createFDKYCResponse(getRatesRequest, token) - getFDResponseMutableData.postValue(handleRatesResponse(response)) + val getFDKYCMutableData: MutableLiveData> = MutableLiveData() + fun checkFDKYC(requestBody: CheckFDKYCRequest, token : String, activity: Activity) = viewModelScope.launch(handleError(activity)) { + if (Common.isNetworkAvailable(activity)) { + getFDKYCMutableData.postValue(Resource.Loading()) + val response = mainRepository.checkFDKYCRequest(requestBody, token) + getFDKYCMutableData.postValue(handleResponse(response)) + } } -// private fun handleRatesResponse(response: retrofit2.Response): Resource { -// try { -// if ( response.isSuccessful && response.body() != null) { -// response.body()?.let { resultResponse -> -// return Resource.Success(resultResponse) -// } -// } -// } catch (t: Throwable) { -// return when (t) { -// is IOException -> Resource.Error("Response : "+t.message.plus(" Cause: "+t.cause)) -// is HttpException -> Resource.Error("Response : "+t.message.plus(" Cause: "+t.cause)) -// else -> Resource.Error(t.localizedMessage?.toString() ?: "") -// } -// } -// return Resource.Error(response.message()) -// } - } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFiveBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFiveBajajFDViewModel.kt index 509c598..0484681 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFiveBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFiveBajajFDViewModel.kt @@ -1,7 +1,17 @@ package com.nivesh.production.bajajfd.viewModel +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import androidx.lifecycle.ViewModel +import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFiveBinding +import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFourBinding +import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.ui.fragment.StepFiveBajajFDFragment +import com.nivesh.production.bajajfd.ui.fragment.StepFourBajajFDFragment class StepFiveBajajFDViewModel (private val mainRepository: MainRepository) : ViewModel() { diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt index e68bff9..b5347e5 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt @@ -1,5 +1,6 @@ package com.nivesh.production.bajajfd.viewModel +import android.app.Activity import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -7,56 +8,81 @@ import com.google.gson.JsonObject import com.nivesh.production.bajajfd.model.GetCodeRequest import com.nivesh.production.bajajfd.model.GetFDDetailsRequest import com.nivesh.production.bajajfd.model.GetRatesRequest +import com.nivesh.production.bajajfd.model.SaveFDOtherDataRequest import com.nivesh.production.bajajfd.repositories.MainRepository -import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse +import com.nivesh.production.bajajfd.util.Common +import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { val getPaymentModeMutableData: MutableLiveData> = MutableLiveData() - fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { - getPaymentModeMutableData.postValue(Resource.Loading()) - val response = mainRepository.payModeCheck(getCodeRequest, token) - getPaymentModeMutableData.postValue(handleRatesResponse(response)) + fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String, + activity: Activity + ) = viewModelScope.launch(Common.handleError(activity)) { + if (Common.isNetworkAvailable(activity)) { + getPaymentModeMutableData.postValue(Resource.Loading()) + val response = mainRepository.payModeCheck(getCodeRequest, token) + getPaymentModeMutableData.postValue(handleResponse(response)) + } } val getFDDetailsMutableData: MutableLiveData> = MutableLiveData() - fun getFDDetails(getRatesRequest: GetFDDetailsRequest, token: String) = viewModelScope.launch { - getFDDetailsMutableData.postValue(Resource.Loading()) - val response = mainRepository.getFDDetailsResponse(getRatesRequest, token) - getFDDetailsMutableData.postValue(handleRatesResponse(response)) + fun getFDDetails(getRatesRequest: GetFDDetailsRequest, token: String, + activity: Activity) = viewModelScope.launch(Common.handleError(activity)) { + if (Common.isNetworkAvailable(activity)) { + getFDDetailsMutableData.postValue(Resource.Loading()) + val response = mainRepository.getFDDetailsResponse(getRatesRequest, token) + getFDDetailsMutableData.postValue(handleResponse(response)) + } } - private val getRatesMutableData: MutableLiveData> = MutableLiveData() - fun saveFDOtherData(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { - getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.saveFDOtherDataResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleRatesResponse(response)) - } + val getRatesMutableData: MutableLiveData> = MutableLiveData() + fun updateFDPaymentStatus(getRatesRequest: GetRatesRequest, token: String, + activity: Activity) = + viewModelScope.launch(Common.handleError(activity)) { + if (Common.isNetworkAvailable(activity)) { + getRatesMutableData.postValue(Resource.Loading()) + val response = mainRepository.updateFDPaymentStatusResponse(getRatesRequest, token) + getRatesMutableData.postValue(handleResponse(response)) + } + } - fun updateFDPaymentStatus(getRatesRequest: GetRatesRequest, token: String) = - viewModelScope.launch { + fun finaliseFD(getRatesRequest: GetRatesRequest, token: String, + activity: Activity) = viewModelScope.launch(Common.handleError(activity)) { + if (Common.isNetworkAvailable(activity)) { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.updateFDPaymentStatusResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleRatesResponse(response)) + val response = mainRepository.finaliseFDResponse(getRatesRequest, token) + getRatesMutableData.postValue(handleResponse(response)) } + } - fun finaliseFD(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { - getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.finaliseFDResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleRatesResponse(response)) + fun finaliseKYC(getRatesRequest: GetRatesRequest, token: String, + activity: Activity) = viewModelScope.launch(Common.handleError(activity)) { + if (Common.isNetworkAvailable(activity)) { + getRatesMutableData.postValue(Resource.Loading()) + val response = mainRepository.finaliseKYCResponse(getRatesRequest, token) + getRatesMutableData.postValue(handleResponse(response)) + } } - fun finaliseKYC(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { - getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.finaliseKYCResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleRatesResponse(response)) + fun paymentReQuery(getRatesRequest: GetRatesRequest, token: String, + activity: Activity) = viewModelScope.launch(Common.handleError(activity)) { + if (Common.isNetworkAvailable(activity)) { + getRatesMutableData.postValue(Resource.Loading()) + val response = mainRepository.paymentReQueryResponse(getRatesRequest, token) + getRatesMutableData.postValue(handleResponse(response)) + } } - fun paymentReQuery(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { - getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.paymentReQueryResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleRatesResponse(response)) + val getFDOtherMutableData: MutableLiveData> = MutableLiveData() + fun saveFDOtherData(getRatesRequest: SaveFDOtherDataRequest, token: String, + activity: Activity) = viewModelScope.launch(Common.handleError(activity)) { + if (Common.isNetworkAvailable(activity)) { + getFDOtherMutableData.postValue(Resource.Loading()) + val response = mainRepository.saveFDOtherDataResponse(getRatesRequest, token) + getFDOtherMutableData.postValue(handleResponse(response)) + } } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt index 940ab26..f9245ac 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt @@ -1,15 +1,16 @@ package com.nivesh.production.bajajfd.viewModel +import android.app.Activity import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject -import com.nivesh.production.bajajfd.model.CheckFDKYCRequest import com.nivesh.production.bajajfd.model.GetCodeRequest import com.nivesh.production.bajajfd.model.GetMaturityAmountRequest import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.repositories.MainRepository -import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse +import com.nivesh.production.bajajfd.util.Common +import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch @@ -17,55 +18,62 @@ import kotlinx.coroutines.launch class StepOneBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { val getCodeMutableData: MutableLiveData> = MutableLiveData() - fun getCode(requestBody: GetCodeRequest, token : String) = viewModelScope.launch { - getCodeMutableData.postValue(Resource.Loading()) - val response = mainRepository.getCodesResponse(requestBody, token) - getCodeMutableData.postValue(handleRatesResponse(response)) - } + fun getCode(requestBody: GetCodeRequest, token: String, activity: Activity) = + viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getCodeMutableData.postValue(Resource.Loading()) + val response = mainRepository.getCodesResponse(requestBody, token) + getCodeMutableData.postValue(handleResponse(response)) + } + } val getRatesMutableData: MutableLiveData> = MutableLiveData() - fun getRates(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { - getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.getRatesResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleRatesResponse(response)) - } + fun getRates(getRatesRequest: GetRatesRequest, token: String, activity: Activity) = + viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getRatesMutableData.postValue(Resource.Loading()) + val response = mainRepository.getRatesResponse(getRatesRequest, token) + getRatesMutableData.postValue(handleResponse(response)) + } + } val getMaturityAmountMutableData: MutableLiveData> = MutableLiveData() - fun getMaturityAmount(requestBody: GetMaturityAmountRequest) = viewModelScope.launch { - getMaturityAmountMutableData.postValue(Resource.Loading()) - val response = mainRepository.createCalculateFDMaturityAmount(requestBody, token) - getMaturityAmountMutableData.postValue(handleRatesResponse(response)) - } + fun getMaturityAmount(requestBody: GetMaturityAmountRequest, activity: Activity) = + viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getMaturityAmountMutableData.postValue(Resource.Loading()) + val response = mainRepository.createCalculateFDMaturityAmount(requestBody, token) + getMaturityAmountMutableData.postValue(handleResponse(response)) + } + } val getMinAmountMutableData: MutableLiveData> = MutableLiveData() - fun getMinAmount(requestBody: GetCodeRequest, token : String) = viewModelScope.launch { - getMinAmountMutableData.postValue(Resource.Loading()) - val response = mainRepository.getCodesResponse(requestBody, token) - getMinAmountMutableData.postValue(handleRatesResponse(response)) - } + fun getMinAmount(requestBody: GetCodeRequest, token: String, activity: Activity) = + viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getMinAmountMutableData.postValue(Resource.Loading()) + val response = mainRepository.getCodesResponse(requestBody, token) + getMinAmountMutableData.postValue(handleResponse(response)) + } + } val getMaxAmountMutableData: MutableLiveData> = MutableLiveData() - fun getMaxAmount(requestBody: GetCodeRequest, token : String) = viewModelScope.launch { - getMaxAmountMutableData.postValue(Resource.Loading()) - val response = mainRepository.getCodesResponse(requestBody, token) - getMaxAmountMutableData.postValue(handleRatesResponse(response)) - } - - val getFDKYCMutableData: MutableLiveData> = MutableLiveData() - fun checkFDKYC(requestBody: CheckFDKYCRequest, token : String) = viewModelScope.launch { - getFDKYCMutableData.postValue(Resource.Loading()) - val response = mainRepository.checkFDKYCRequest(requestBody, token) - getFDKYCMutableData.postValue(handleRatesResponse(response)) - } - -// private fun handleRatesResponse(response: retrofit2.Response): Resource { -// if (response.isSuccessful) { -// response.body()?.let { resultResponse -> -// return Resource.Success(resultResponse) -// } -// } -// return Resource.Error(response.message()) -// -// } - + fun getMaxAmount(requestBody: GetCodeRequest, token: String, activity: Activity) = + viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getMaxAmountMutableData.postValue(Resource.Loading()) + val response = mainRepository.getCodesResponse(requestBody, token) + getMaxAmountMutableData.postValue(handleResponse(response)) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt index 65b7ecf..f65da9a 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt @@ -1,32 +1,53 @@ package com.nivesh.production.bajajfd.viewModel +import android.app.Activity import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject +import com.nivesh.production.bajajfd.model.CreateFDRequest import com.nivesh.production.bajajfd.model.DocumentUpload import com.nivesh.production.bajajfd.model.GetCodeRequest import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.repositories.MainRepository -import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse +import com.nivesh.production.bajajfd.util.Common +import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { val getTitleMutableData: MutableLiveData> = MutableLiveData() - fun titleApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { - getTitleMutableData.postValue(Resource.Loading()) - val response = mainRepository.titleCheck(getCodeRequest, token) - getTitleMutableData.postValue(handleRatesResponse(response)) + fun titleApi(getCodeRequest: GetCodeRequest, token: String, activity: Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getTitleMutableData.postValue(Resource.Loading()) + val response = mainRepository.titleCheck(getCodeRequest, token) + getTitleMutableData.postValue(handleResponse(response)) + } } val getDocumentUploadMutableData: MutableLiveData> = MutableLiveData() - fun documentsUpload(documentUpload: DocumentUpload, token: String) = viewModelScope.launch { - getDocumentUploadMutableData.postValue(Resource.Loading()) - val response = mainRepository.documentsUploadResponse(documentUpload, token) - getDocumentUploadMutableData.postValue(handleRatesResponse(response)) + fun documentsUpload(documentUpload: DocumentUpload, token: String, activity: Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getDocumentUploadMutableData.postValue(Resource.Loading()) + val response = mainRepository.documentsUploadResponse(documentUpload, token) + getDocumentUploadMutableData.postValue(handleResponse(response)) + } } + val getFDResponseMutableData: MutableLiveData> = MutableLiveData() + fun createFDApi(getRatesRequest: CreateFDRequest, token: String, activity: Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getFDResponseMutableData.postValue(Resource.Loading()) + val response = mainRepository.createFDKYCResponse(getRatesRequest, token) + getFDResponseMutableData.postValue(handleResponse(response)) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt index a284c59..db2e02e 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt @@ -1,107 +1,172 @@ package com.nivesh.production.bajajfd.viewModel +import android.app.Activity import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.repositories.MainRepository -import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse +import com.nivesh.production.bajajfd.util.Common +import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { val getPanCheckMutableData: MutableLiveData> = MutableLiveData() - fun panCheck(panCheck: PanCheckRequest, token: String) = viewModelScope.launch { - getPanCheckMutableData.postValue(Resource.Loading()) - val response = mainRepository.panCheck(panCheck, token) - getPanCheckMutableData.postValue(handleRatesResponse(response)) + fun panCheck(panCheck: PanCheckRequest, token: String, activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getPanCheckMutableData.postValue(Resource.Loading()) + val response = mainRepository.panCheck(panCheck, token) + getPanCheckMutableData.postValue(handleResponse(response)) + } } val getTitleMutableData: MutableLiveData> = MutableLiveData() - fun titleApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { - getTitleMutableData.postValue(Resource.Loading()) - val response = mainRepository.titleCheck(getCodeRequest, token) - getTitleMutableData.postValue(handleRatesResponse(response)) + fun titleApi(getCodeRequest: GetCodeRequest, token: String, activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getTitleMutableData.postValue(Resource.Loading()) + val response = mainRepository.titleCheck(getCodeRequest, token) + getTitleMutableData.postValue(handleResponse(response)) + } } val getGenderMutableData: MutableLiveData> = MutableLiveData() - fun genderApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { - getGenderMutableData.postValue(Resource.Loading()) - val response = mainRepository.genderCheck(getCodeRequest, token) - getGenderMutableData.postValue(handleRatesResponse(response)) + fun genderApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getGenderMutableData.postValue(Resource.Loading()) + val response = mainRepository.genderCheck(getCodeRequest, token) + getGenderMutableData.postValue(handleResponse(response)) + } } val getAnnualIncomeMutableData: MutableLiveData> = MutableLiveData() - fun annualIncomeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { - getAnnualIncomeMutableData.postValue(Resource.Loading()) - val response = mainRepository.annualIncomeCheck(getCodeRequest, token) - getAnnualIncomeMutableData.postValue(handleRatesResponse(response)) + fun annualIncomeApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getAnnualIncomeMutableData.postValue(Resource.Loading()) + val response = mainRepository.annualIncomeCheck(getCodeRequest, token) + getAnnualIncomeMutableData.postValue(handleResponse(response)) + } } val getRelationShipMutableData: MutableLiveData> = MutableLiveData() - fun relationShipApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { - getRelationShipMutableData.postValue(Resource.Loading()) - val response = mainRepository.relationShipCheck(getCodeRequest, token) - getRelationShipMutableData.postValue(handleRatesResponse(response)) + fun relationShipApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getRelationShipMutableData.postValue(Resource.Loading()) + val response = mainRepository.relationShipCheck(getCodeRequest, token) + getRelationShipMutableData.postValue(handleResponse(response)) + } } val getMaritalStatusMutableData: MutableLiveData> = MutableLiveData() - fun maritalStatusApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { - getMaritalStatusMutableData.postValue(Resource.Loading()) - val response = mainRepository.maritalStatusCheck(getCodeRequest, token) - getMaritalStatusMutableData.postValue(handleRatesResponse(response)) + fun maritalStatusApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getMaritalStatusMutableData.postValue(Resource.Loading()) + val response = mainRepository.maritalStatusCheck(getCodeRequest, token) + getMaritalStatusMutableData.postValue(handleResponse(response)) + } } val getOccupationMutableData: MutableLiveData> = MutableLiveData() - fun occupationApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { - getOccupationMutableData.postValue(Resource.Loading()) - val response = mainRepository.occupationCheck(getCodeRequest, token) - getOccupationMutableData.postValue(handleRatesResponse(response)) + fun occupationApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getOccupationMutableData.postValue(Resource.Loading()) + val response = mainRepository.occupationCheck(getCodeRequest, token) + getOccupationMutableData.postValue(handleResponse(response)) + } } val getStateMasterMutableData: MutableLiveData> = MutableLiveData() - fun stateApi(token: String) = viewModelScope.launch { - getStateMasterMutableData.postValue(Resource.Loading()) - val response = mainRepository.stateCheck( token) - getStateMasterMutableData.postValue(handleRatesResponse(response)) + fun stateApi(token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getStateMasterMutableData.postValue(Resource.Loading()) + val response = mainRepository.stateCheck(token) + getStateMasterMutableData.postValue(handleResponse(response)) + } } val getCityListMutableData: MutableLiveData> = MutableLiveData() - fun cityListApi(cityRequest: CityRequest, token: String) = viewModelScope.launch { - getCityListMutableData.postValue(Resource.Loading()) - val response = mainRepository.cityCheck(cityRequest, token) - getCityListMutableData.postValue(handleRatesResponse(response)) + fun cityListApi(cityRequest: CityRequest, token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getCityListMutableData.postValue(Resource.Loading()) + val response = mainRepository.cityCheck(cityRequest, token) + getCityListMutableData.postValue(handleResponse(response)) + } } val getFDBankListMutableData: MutableLiveData> = MutableLiveData() - fun bankListApi( token: String) = viewModelScope.launch { - getFDBankListMutableData.postValue(Resource.Loading()) - val response = mainRepository.bankListCheck( token) - getFDBankListMutableData.postValue(handleRatesResponse(response)) + fun bankListApi( token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getFDBankListMutableData.postValue(Resource.Loading()) + val response = mainRepository.bankListCheck(token) + getFDBankListMutableData.postValue(handleResponse(response)) + } } val getifscCodeCheckMutableData: MutableLiveData> = MutableLiveData() - fun ifscCodeApi(ifsc : String) = viewModelScope.launch { - getifscCodeCheckMutableData.postValue(Resource.Loading()) - val response = mainRepository.ifscCodeCheck(ifsc) - getifscCodeCheckMutableData.postValue(handleRatesResponse(response)) + fun ifscCodeApi(ifsc : String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getifscCodeCheckMutableData.postValue(Resource.Loading()) + val response = mainRepository.ifscCodeCheck(ifsc) + getifscCodeCheckMutableData.postValue(handleResponse(response)) + } } val getifscCodeDetailsCheckMutableData: MutableLiveData> = MutableLiveData() - fun ifscCodeDetailsApi(ifsc : String, token: String) = viewModelScope.launch { - getifscCodeDetailsCheckMutableData.postValue(Resource.Loading()) - val response = mainRepository.ifscCodeDetailsCheck(ifsc, token) - getifscCodeDetailsCheckMutableData.postValue(handleRatesResponse(response)) + fun ifscCodeDetailsApi(ifsc : String, token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getifscCodeDetailsCheckMutableData.postValue(Resource.Loading()) + val response = mainRepository.ifscCodeDetailsCheck(ifsc, token) + getifscCodeDetailsCheckMutableData.postValue(handleResponse(response)) + } } val getPaymentModeMutableData: MutableLiveData> = MutableLiveData() - fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { - getPaymentModeMutableData.postValue(Resource.Loading()) - val response = mainRepository.payModeCheck(getCodeRequest, token) - getPaymentModeMutableData.postValue(handleRatesResponse(response)) + fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getPaymentModeMutableData.postValue(Resource.Loading()) + val response = mainRepository.payModeCheck(getCodeRequest, token) + getPaymentModeMutableData.postValue(handleResponse(response)) + } + } + + val getFDResponseMutableData: MutableLiveData> = MutableLiveData() + fun createFDApi(getRatesRequest: CreateFDRequest, token: String,activity : Activity) = viewModelScope.launch( + Common.handleError(activity) + ) { + if (Common.isNetworkAvailable(activity)) { + getFDResponseMutableData.postValue(Resource.Loading()) + val response = mainRepository.createFDKYCResponse(getRatesRequest, token) + getFDResponseMutableData.postValue(handleResponse(response)) + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_bajaj_fd.xml b/app/src/main/res/layout/activity_bajaj_fd.xml index b7b4a42..fbfbeaa 100644 --- a/app/src/main/res/layout/activity_bajaj_fd.xml +++ b/app/src/main/res/layout/activity_bajaj_fd.xml @@ -137,7 +137,7 @@ - diff --git a/app/src/main/res/layout/fragment_bajajfd_step_two.xml b/app/src/main/res/layout/fragment_bajajfd_step_two.xml index d10b0e2..20c5ec9 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_two.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_two.xml @@ -193,11 +193,12 @@ android:id="@+id/spTitle" android:layout_width="match_parent" android:layout_height="wrap_content" + android:padding="@dimen/margin_5" android:background="@drawable/rounded_corner_with_line" android:hint="@string/selectTitle" android:inputType="none" android:labelFor="@+id/spInterestPayout" - android:textColorHint="#757575" + android:textColorHint="@color/greyColor2" android:textSize="@dimen/text_size_14" /> @@ -222,8 +223,9 @@ android:background="@drawable/rounded_corner_with_line" android:hint="@string/selectGender" android:inputType="none" + android:padding="@dimen/margin_5" android:labelFor="@+id/spInterestPayout" - android:textColorHint="#757575" + android:textColorHint="@color/greyColor2" android:textSize="@dimen/text_size_14" /> @@ -296,7 +298,10 @@ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="@dimen/margin_5" + android:layout_marginStart="@dimen/margin_5" + android:layout_marginTop="@dimen/margin_10" + android:layout_marginEnd="@dimen/margin_5" + android:layout_marginBottom="@dimen/margin_5" app:hintEnabled="false"> @@ -317,7 +323,10 @@ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="@dimen/margin_5" + android:layout_marginStart="@dimen/margin_5" + android:layout_marginTop="@dimen/margin_10" + android:layout_marginEnd="@dimen/margin_5" + android:layout_marginBottom="@dimen/margin_5" app:hintEnabled="false"> @@ -374,8 +384,9 @@ android:background="@drawable/rounded_corner_with_line" android:hint="@string/selectMaritalStatus" android:inputType="none" + android:padding="@dimen/margin_5" android:labelFor="@+id/spInterestPayout" - android:textColorHint="#757575" + android:textColorHint="@color/greyColor2" android:textSize="@dimen/text_size_14" /> @@ -465,7 +476,10 @@ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="@dimen/margin_5" + android:layout_marginStart="@dimen/margin_5" + android:layout_marginTop="@dimen/margin_10" + android:layout_marginEnd="@dimen/margin_5" + android:layout_marginBottom="@dimen/margin_5" app:hintEnabled="false"> @@ -486,7 +501,10 @@ style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="@dimen/margin_5" + android:layout_marginStart="@dimen/margin_5" + android:layout_marginTop="@dimen/margin_10" + android:layout_marginEnd="@dimen/margin_5" + android:layout_marginBottom="@dimen/margin_5" app:hintEnabled="false"> @@ -567,9 +586,10 @@ android:layout_height="wrap_content" android:background="@drawable/rounded_corner_with_line" android:hint="@string/selectTitle" + android:padding="@dimen/margin_5" android:inputType="none" android:labelFor="@+id/spInterestPayout" - android:textColorHint="#757575" + android:textColorHint="@color/greyColor2" android:textSize="@dimen/text_size_14" /> @@ -675,9 +695,10 @@ android:layout_height="wrap_content" android:background="@drawable/rounded_corner_with_line" android:hint="@string/selectRelation" + android:padding="@dimen/margin_5" android:inputType="none" android:labelFor="@+id/spInterestPayout" - android:textColorHint="#757575" + android:textColorHint="@color/greyColor2" android:textSize="@dimen/text_size_14" /> @@ -750,9 +771,10 @@ android:layout_height="wrap_content" android:background="@drawable/rounded_corner_with_line" android:hint="@string/selectRelation" + android:padding="@dimen/margin_5" android:inputType="none" android:labelFor="@+id/spInterestPayout" - android:textColorHint="#757575" + android:textColorHint="@color/greyColor2" android:textSize="@dimen/text_size_14" /> diff --git a/app/src/main/res/layout/row_fd_pay.xml b/app/src/main/res/layout/row_fd_pay.xml new file mode 100644 index 0000000..a255157 --- /dev/null +++ b/app/src/main/res/layout/row_fd_pay.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 53064ea..86039fa 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -247,5 +247,7 @@ PaymentMode CustomerCategory PAY + Payment + Please enter Guardian Details \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0027640..7311f62 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -247,6 +247,8 @@ PaymentMode CustomerCategory PAY + Payment + Please enter Guardian Details Aadhaar Card