diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/HorizontalRecyclerViewAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/HorizontalRecyclerViewAdapter.kt index 133528b..311fdf1 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/adapter/HorizontalRecyclerViewAdapter.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/HorizontalRecyclerViewAdapter.kt @@ -21,7 +21,7 @@ class HorizontalRecyclerViewAdapter( dropdownList: MutableList, onClickListener: OnClickListener ) : RecyclerView.Adapter() { - private val dropdownList: List + private var dropdownList: MutableList private var rowIndex = -1 private var onClickListener: OnClickListener @@ -116,4 +116,9 @@ class HorizontalRecyclerViewAdapter( override fun getItemViewType(position: Int): Int { return position } + + fun refresh() { + rowIndex = -1 + notifyDataSetChanged() + } } \ No newline at end of file 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 ad4fbc2..07370db 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 @@ -4,96 +4,50 @@ import com.google.gson.JsonObject 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.model.PanCheckRequest import okhttp3.RequestBody import retrofit2.Response import retrofit2.http.* interface ApiInterface { - // @FormUrlEncoded @POST("GetRates") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun getRates(@Body getRatesRequest: GetRatesRequest): Response + suspend fun getRates(@Body getRatesRequest: GetRatesRequest, @Header("token") token: String): Response @POST("CheckFDCKYC") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun checkFDKYC(@Body requestBody: RequestBody): Response + suspend fun checkFDKYC(@Body requestBody: RequestBody, @Header("token") token: String): Response @POST("CreateFDApplication") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun createFDApp(@Body requestBody: RequestBody): Response + suspend fun createFDApp(@Body requestBody: RequestBody, @Header("token") token: String): Response @POST("DocumentsUpload") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun documentsUpload(@Body requestBody: RequestBody): Response + suspend fun documentsUpload(@Body requestBody: RequestBody, @Header("token") token: String): Response @POST("SaveFDOtherData") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun saveFDOtherData(@Body requestBody: RequestBody): Response + suspend fun saveFDOtherData(@Body requestBody: RequestBody, @Header("token") token: String): Response @POST("GetFDDetails") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun getFDDetails(@Body requestBody: RequestBody): Response + suspend fun getFDDetails(@Body requestBody: RequestBody, @Header("token") token: String): Response @POST("UpdateFDPaymentStatus") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun updateFDPaymentStatus(@Body requestBody: RequestBody): Response + suspend fun updateFDPaymentStatus(@Body requestBody: RequestBody, @Header("token") token: String): Response @POST("FinaliseFD") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun finaliseFD(@Body requestBody: RequestBody): Response + suspend fun finaliseFD(@Body requestBody: RequestBody, @Header("token") token: String): Response @POST("FinaliseKYC") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun finaliseKYC(@Body requestBody: RequestBody): Response + suspend fun finaliseKYC(@Body requestBody: RequestBody, @Header("token") token: String): Response @POST("PaymentRequery") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun paymentReQuery(@Body requestBody: RequestBody): Response + suspend fun paymentReQuery(@Body requestBody: RequestBody, @Header("token") token: String): Response // @FormUrlEncoded @POST("GetCodes") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun getCodes(@Body requestBody: GetCodeRequest): Response -// "token: 636F8F63-06C4-4D95-8562-392B34025FB0"; + suspend fun getCodes(@Body requestBody: GetCodeRequest, @Header("token") token: String): Response @POST("CalculateFDMaturityAmount") - @Headers( - "token: 636F8F63-06C4-4D95-8562-392B34025FB0", - "Content-Type: application/json", "charset: UTF-8" - ) - suspend fun getCalculateFDMaturityAmount(@Body requestBody: GetMaturityAmountRequest): Response + suspend fun getCalculateFDMaturityAmount(@Body requestBody: GetMaturityAmountRequest, @Header("token") token: String): Response + + @POST("api/PanCheck_S") + suspend fun panCheckApi(@Body panCheck: PanCheckRequest, @Header("token") token: String): Response } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/PanCheckRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/PanCheckRequest.kt new file mode 100644 index 0000000..6a823eb --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/PanCheckRequest.kt @@ -0,0 +1,14 @@ +package com.nivesh.production.bajajfd.model + +import com.google.gson.annotations.SerializedName + +data class PanCheckRequest( + @SerializedName("client_code") + var clientCode: String? = null, + @SerializedName("sub_broker_code") + var subBrokerCode: String? = null, + @SerializedName("pan_number") + var panNumber: String? = null, + @SerializedName("mobile_number") + var mobileNumber: String? = null +) diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/PanCheckResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/PanCheckResponse.kt new file mode 100644 index 0000000..5cae1b6 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/PanCheckResponse.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class PanCheckResponse( + val response: ResponseXXX +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXX.kt new file mode 100644 index 0000000..3420420 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXX.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class ResponseXXX( + val message: String, + val status: String, + val status_code: Int +) \ 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 880761a..06d5007 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt @@ -4,41 +4,44 @@ import com.nivesh.production.bajajfd.interfaces.ApiInterface 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.model.PanCheckRequest class MainRepository constructor(private val apiInterface: ApiInterface) { - suspend fun getRatesResponse(getRatesRequest: GetRatesRequest) = - apiInterface.getRates(getRatesRequest) + suspend fun getRatesResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) - suspend fun getCodesResponse(requestBody: GetCodeRequest) = - apiInterface.getCodes(requestBody) + suspend fun getCodesResponse(requestBody: GetCodeRequest , token: String) = + apiInterface.getCodes(requestBody, token) - suspend fun createCalculateFDMaturityAmount(requestBody: GetMaturityAmountRequest) = - apiInterface.getCalculateFDMaturityAmount(requestBody) + suspend fun createCalculateFDMaturityAmount(requestBody: GetMaturityAmountRequest, token: String) = + apiInterface.getCalculateFDMaturityAmount(requestBody, token) - suspend fun checkFDKYCResponse(getRatesRequest: GetRatesRequest) = - apiInterface.getRates(getRatesRequest) + suspend fun checkFDKYCResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) - suspend fun documentsUploadResponse(getRatesRequest: GetRatesRequest) = - apiInterface.getRates(getRatesRequest) + suspend fun documentsUploadResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) - suspend fun saveFDOtherDataResponse(getRatesRequest: GetRatesRequest) = - apiInterface.getRates(getRatesRequest) + suspend fun saveFDOtherDataResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) - suspend fun getFDDetailsResponse(getRatesRequest: GetRatesRequest) = - apiInterface.getRates(getRatesRequest) + suspend fun getFDDetailsResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) - suspend fun updateFDPaymentStatusResponse(getRatesRequest: GetRatesRequest) = - apiInterface.getRates(getRatesRequest) + suspend fun updateFDPaymentStatusResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) - suspend fun finaliseFDResponse(getRatesRequest: GetRatesRequest) = - apiInterface.getRates(getRatesRequest) + suspend fun finaliseFDResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) - suspend fun finaliseKYCResponse(getRatesRequest: GetRatesRequest) = - apiInterface.getRates(getRatesRequest) + suspend fun finaliseKYCResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) - suspend fun paymentReQueryResponse(getRatesRequest: GetRatesRequest) = - apiInterface.getRates(getRatesRequest) + suspend fun paymentReQueryResponse(getRatesRequest: GetRatesRequest, token: String) = + apiInterface.getRates(getRatesRequest, token) + suspend fun panCheck(panCheck: PanCheckRequest, token: String) = + apiInterface.panCheckApi(panCheck, token) } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt index f6c0d6a..517f7ca 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 @@ -15,20 +15,24 @@ 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.fragment.* -import com.nivesh.production.bajajfd.ui.providerfactory.FDModelProviderFactory -import com.nivesh.production.bajajfd.ui.providerfactory.GetRatesModelProviderFactory +import com.nivesh.production.bajajfd.ui.providerfactory.* import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common.Companion.defaultShape import com.nivesh.production.bajajfd.util.Common.Companion.selectedShape +import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource -import com.nivesh.production.bajajfd.viewModel.BajajFDViewModel -import com.nivesh.production.bajajfd.viewModel.StepOneBajajFDViewModel +import com.nivesh.production.bajajfd.viewModel.* class BajajFdMainActivity : AppCompatActivity(), 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 + lateinit var listOfFrequency: List lateinit var createFDRequest: CreateFDRequest lateinit var createFDApplicantRequest: CreateFDApplicationRequest @@ -60,15 +64,13 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { nomineeGuardianDetails = NomineeGuardianDetails() //start Repository - val viewModelProviderFactory = - GetRatesModelProviderFactory(MainRepository(ApiClient.getApiClient)) - stepOneBajajFDViewModel = - ViewModelProvider(this, viewModelProviderFactory)[StepOneBajajFDViewModel::class.java] - - val fdViewModelProviderFactory = - FDModelProviderFactory(MainRepository(ApiClient.getApiClient)) - viewModel = - ViewModelProvider(this, fdViewModelProviderFactory)[BajajFDViewModel::class.java] + viewModel = ViewModelProvider(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] + listOfFrequency = ArrayList() if (Common.isNetworkAvailable(this)) { getCodeApi() @@ -85,7 +87,7 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { getCodeRequest.Category = getString(R.string.category) getCodeRequest.Language = getString(R.string.language) getCodeRequest.InputValue = "" - viewModel.getCode(getCodeRequest) + viewModel.getCode(getCodeRequest, token) viewModel.getRatesMutableData.observe(this) { response -> when (response) { is Resource.Success -> { 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 eb62457..a07a592 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,9 +5,9 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProvider -import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFourBinding +import com.nivesh.production.bajajfd.interfaces.BajajFDInterface +import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity import com.nivesh.production.bajajfd.viewModel.StepFourBajajFDViewModel class StepFourBajajFDFragment : Fragment() { @@ -17,6 +17,7 @@ class StepFourBajajFDFragment : Fragment() { private val binding get() = _binding!! private lateinit var bajajFDInterface: BajajFDInterface + companion object { fun getInstance(fdInterface: BajajFDInterface): StepFourBajajFDFragment { val stepThreeFragment = StepFourBajajFDFragment() @@ -24,16 +25,12 @@ class StepFourBajajFDFragment : Fragment() { return stepThreeFragment } } + private fun setApi(bajajFDInterfaces: BajajFDInterface) { bajajFDInterface = bajajFDInterfaces } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -42,17 +39,21 @@ class StepFourBajajFDFragment : Fragment() { _binding = FragmentBajajfdStepFourBinding.inflate(inflater, container, false) val root = binding.root -// val textView: TextView = binding.sectionLabel -// stepThreeViewModel.text.observe(viewLifecycleOwner) { -// textView.text = it -// } + stepFourBajajFDViewModel = (activity as BajajFdMainActivity).stepFourBajajFDViewModel + -// binding.btnClick.setOnClickListener { -// bajajFDInterface.stepThreeApi("stepThreeResponse") -// } + binding.btnNext.setOnClickListener { + if (validate()) { + bajajFDInterface.stepThreeApi("stepThreeResponse") + } + } return root } + private fun validate(): Boolean { + return false + } + override fun onDestroyView() { super.onDestroyView() _binding = null 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 b985978..c355b21 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 @@ -4,6 +4,7 @@ import GetRatesResponse import ROIDataList import android.os.Bundle import android.text.Editable +import android.text.InputFilter import android.text.TextWatcher import android.util.Log import android.view.LayoutInflater @@ -27,6 +28,7 @@ import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity 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 +import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepOneBajajFDViewModel @@ -64,13 +66,18 @@ class StepOneBajajFDFragment : Fragment() { stepOneBajajFDViewModel = (activity as BajajFdMainActivity).stepOneBajajFDViewModel listOfTenure = ArrayList() + binding.edtAmount.filters = arrayOf(InputFilter.LengthFilter(8)) // upto 1 Cr + // Amount binding.edtAmount.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) {} override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { removeError(binding.tlDepositAmount) - maturityAmountApi(tenure, interest) + if (s.toString().trim().length >= 4 ) { + getRatesApi() + maturityAmountApi(tenure, interest) + } } }) @@ -86,15 +93,14 @@ class StepOneBajajFDFragment : Fragment() { removeError(binding.tlInterestPayout) binding.tvFrequency.text = (activity as BajajFdMainActivity).listOfFrequency[position].Value - if (!binding.tvFrequency.text.equals("Cumulative")) { + if (!binding.tvFrequency.text.equals(getString(R.string.cumulativeText))) { binding.txtCumulativeNon.text = getString(R.string.nonCumulativeROI) } else { binding.txtCumulativeNon.text = getString(R.string.cumulativeROI) } - maturityAmountApi(tenure, interest) - if (binding.edtAmount.text.toString().trim().isNotEmpty()) { + maturityAmountApi(tenure, interest) getRatesApi() } else { // please enter Amount first @@ -115,6 +121,8 @@ class StepOneBajajFDFragment : Fragment() { interest = listOfTenure[position].ROI binding.tvROI.text = interest.toString().plus(" %") maturityAmountApi(tenure, interest) + + recyclerViewDropDownAdapter.refresh() } } @@ -191,10 +199,7 @@ class StepOneBajajFDFragment : Fragment() { private fun maturityAmountApi(tenure: Int, interest: Double) { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - if ( - - binding.edtAmount.text.toString().isNotEmpty() && interest != 0.0 && tenure != 0 - ) { + 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() @@ -218,7 +223,9 @@ class StepOneBajajFDFragment : Fragment() { ) } // 650 -> refreshToken() - else -> {} + else -> { + + } } } } @@ -245,13 +252,20 @@ class StepOneBajajFDFragment : Fragment() { binding.tlDepositAmount, getString(R.string.emptyAmount) ) - } else if (binding.spInterestPayout.text.toString().toDouble() <= 5000) { - Common.commonSpinnerErrorMethod( - binding.spInterestPayout, - binding.tlInterestPayout, + } else if (binding.edtAmount.text.toString().toDouble() < 5000) { + commonErrorMethod( + binding.edtAmount, + binding.tlDepositAmount, getString(R.string.validMinAmount) ) - } else if (binding.spInterestPayout.text.isEmpty()) { + } else if (binding.edtAmount.text.toString().toDouble() > 50000000) { + commonErrorMethod( + binding.edtAmount, + binding.tlDepositAmount, + getString(R.string.validMaxAmount) + ) + } + else if (binding.spInterestPayout.text.isEmpty()) { Common.commonSpinnerErrorMethod( binding.spInterestPayout, binding.tlInterestPayout, @@ -278,7 +292,7 @@ class StepOneBajajFDFragment : Fragment() { } else { getRatesRequest.type = getString(R.string.nonSeniorCitizen) } - stepOneBajajFDViewModel.getRates(getRatesRequest) + stepOneBajajFDViewModel.getRates(getRatesRequest, token) stepOneBajajFDViewModel.getRatesMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { 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 4ac79b4..e7bea72 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 @@ -11,11 +11,16 @@ import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.RadioButton +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment +import com.google.gson.Gson import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepTwoBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface +import com.nivesh.production.bajajfd.model.PanCheckRequest +import com.nivesh.production.bajajfd.model.PanCheckResponse import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity +import com.nivesh.production.bajajfd.util.Common 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.isIndianMobileNo @@ -23,6 +28,9 @@ 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.Companion.token +import com.nivesh.production.bajajfd.util.Resource +import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel class StepTwoBajajFDFragment : Fragment() { @@ -34,6 +42,7 @@ class StepTwoBajajFDFragment : Fragment() { private lateinit var rbBank: RadioButton private lateinit var rbPaymentMode: RadioButton + private lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel companion object { fun getInstance(fdInterface: BajajFDInterface): StepTwoBajajFDFragment { @@ -54,6 +63,8 @@ class StepTwoBajajFDFragment : Fragment() { _binding = FragmentBajajfdStepTwoBinding.inflate(inflater, container, false) val root = binding.root + stepTwoBajajFDViewModel = (activity as BajajFdMainActivity).stepTwoBajajFDViewModel + // Personal Details binding.edtMobileNumber.filters = arrayOf(LengthFilter(10)) @@ -86,6 +97,9 @@ class StepTwoBajajFDFragment : Fragment() { override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { removeError(binding.tlPanNumber) + if (s.toString().trim().length == 10) { + panCheckApi() + } } }) @@ -402,7 +416,6 @@ class StepTwoBajajFDFragment : Fragment() { } - // Bank Details binding.edtIFSC.addTextChangedListener(object : TextWatcher { @@ -460,25 +473,25 @@ class StepTwoBajajFDFragment : Fragment() { binding.tvPersonalDetails.setOnClickListener { - if (binding.llPersonalDetail.visibility == View.VISIBLE){ - binding.llPersonalDetail.visibility = View.GONE - }else{ - binding.llPersonalDetail.visibility = View.VISIBLE - } + if (binding.llPersonalDetail.visibility == View.VISIBLE) { + binding.llPersonalDetail.visibility = View.GONE + } else { + binding.llPersonalDetail.visibility = View.VISIBLE + } } binding.tvNomineeDetails.setOnClickListener { - if (binding.llNomineeDetail.visibility == View.VISIBLE){ + if (binding.llNomineeDetail.visibility == View.VISIBLE) { binding.llNomineeDetail.visibility = View.GONE - }else{ + } else { binding.llNomineeDetail.visibility = View.VISIBLE } } binding.tvBankDetails.setOnClickListener { - if (binding.llBankDetails.visibility == View.VISIBLE){ + if (binding.llBankDetails.visibility == View.VISIBLE) { binding.llBankDetails.visibility = View.GONE - }else{ + } else { binding.llBankDetails.visibility = View.VISIBLE } } @@ -486,147 +499,345 @@ class StepTwoBajajFDFragment : Fragment() { binding.btnNext.setOnClickListener { if (validation()) { // Applicant Details - (activity as BajajFdMainActivity).applicantDetails.ApplicantSalutation = binding.spTitle.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantGender = binding.spGender.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantFirstName = binding.edtFirstName.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantMiddleName = binding.edtMiddleName.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantLastName= binding.edtLastName.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantDOB= binding.edtDOB.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantPAN= binding.edtPANNumber.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantMobile= binding.edtMobileNumber.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantOccupation= binding.edtOccupation.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantQualification= binding.edtQualification.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantMaritalStatus= binding.spMarital.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantEmail= binding.edtEmail.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress1= binding.edtAddressLine1.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress2= binding.edtAddressLine2.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress3= "" - (activity as BajajFdMainActivity).applicantDetails.ApplicantCity= binding.edtCity.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantState= binding.edtState.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantCountry= "India" - (activity as BajajFdMainActivity).applicantDetails.ApplicantPincode= binding.edtPinCode.text.toString().toInt() - (activity as BajajFdMainActivity).applicantDetails.AnnualIncome= "" + (activity as BajajFdMainActivity).applicantDetails.ApplicantSalutation = + binding.spTitle.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantGender = + binding.spGender.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantFirstName = + binding.edtFirstName.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantMiddleName = + binding.edtMiddleName.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantLastName = + binding.edtLastName.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantDOB = + binding.edtDOB.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantPAN = + binding.edtPANNumber.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantMobile = + binding.edtMobileNumber.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantOccupation = + binding.edtOccupation.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantQualification = + binding.edtQualification.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantMaritalStatus = + binding.spMarital.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantEmail = + binding.edtEmail.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress1 = + binding.edtAddressLine1.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress2 = + binding.edtAddressLine2.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantAddress3 = "" + (activity as BajajFdMainActivity).applicantDetails.ApplicantCity = + binding.edtCity.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantState = + binding.edtState.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantCountry = "India" + (activity as BajajFdMainActivity).applicantDetails.ApplicantPincode = + binding.edtPinCode.text.toString().toInt() + (activity as BajajFdMainActivity).applicantDetails.AnnualIncome = "" // Applicant Relation Details - (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantRelation= "" - (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantRelationSalutation= "" - (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantRelationFirstName= "" - (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantRelationLastName= "" - (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantMotherFirstName= "" - (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantMotherLastName= "" + (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantRelation = "" + (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantRelationSalutation = + "" + (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantRelationFirstName = + "" + (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantRelationLastName = + "" + (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantMotherFirstName = + "" + (activity as BajajFdMainActivity).applicantRelationDetails.ApplicantMotherLastName = + "" // Applicant Nominee Details - (activity as BajajFdMainActivity).nomineeDetails.NomineeSalutation= binding.spNomineeTitle.text.toString() - (activity as BajajFdMainActivity).nomineeDetails.NomineeGender= binding.spGender.text.toString() - (activity as BajajFdMainActivity).nomineeDetails.NomineeFirstName= binding.edtNomineeFirstName.text.toString() - (activity as BajajFdMainActivity).nomineeDetails.NomineeMiddleName= binding.edtNomineeMiddleName.text.toString() - (activity as BajajFdMainActivity).nomineeDetails.NomineeLastName= binding.edtNomineeLastName.text.toString() - (activity as BajajFdMainActivity).nomineeDetails.NomineeDOB= binding.edtNomineeDOB.text.toString() - (activity as BajajFdMainActivity).nomineeDetails.NomineeRelation= binding.spNomineeRelation.text.toString() - (activity as BajajFdMainActivity).nomineeDetails.NomineeAddress1= "" - (activity as BajajFdMainActivity).nomineeDetails.NomineeAddress2= "" - (activity as BajajFdMainActivity).nomineeDetails.NomineeAddress3= "" - (activity as BajajFdMainActivity).nomineeDetails.NomineeCity= "" + (activity as BajajFdMainActivity).nomineeDetails.NomineeSalutation = + binding.spNomineeTitle.text.toString() + (activity as BajajFdMainActivity).nomineeDetails.NomineeGender = + binding.spGender.text.toString() + (activity as BajajFdMainActivity).nomineeDetails.NomineeFirstName = + binding.edtNomineeFirstName.text.toString() + (activity as BajajFdMainActivity).nomineeDetails.NomineeMiddleName = + binding.edtNomineeMiddleName.text.toString() + (activity as BajajFdMainActivity).nomineeDetails.NomineeLastName = + binding.edtNomineeLastName.text.toString() + (activity as BajajFdMainActivity).nomineeDetails.NomineeDOB = + binding.edtNomineeDOB.text.toString() + (activity as BajajFdMainActivity).nomineeDetails.NomineeRelation = + binding.spNomineeRelation.text.toString() + (activity as BajajFdMainActivity).nomineeDetails.NomineeAddress1 = "" + (activity as BajajFdMainActivity).nomineeDetails.NomineeAddress2 = "" + (activity as BajajFdMainActivity).nomineeDetails.NomineeAddress3 = "" + (activity as BajajFdMainActivity).nomineeDetails.NomineeCity = "" (activity as BajajFdMainActivity).nomineeDetails.NomineeState = "" (activity as BajajFdMainActivity).nomineeDetails.NomineeCountry = "India" (activity as BajajFdMainActivity).nomineeDetails.NomineePincode = 0 // Applicant Nominee Guardian Details (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianSalutation = "" - (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianName = binding.edtGuardianName.text.toString() - (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAge = binding.edtGuardianAge.text.toString().toInt() + (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianName = + binding.edtGuardianName.text.toString() + (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAge = + binding.edtGuardianAge.text.toString().toInt() (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianCountry = "India" (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianCity = "" (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianState = "" - (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianPincode = binding.edtGuardianPinCode.text.toString().toInt() - (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAddress1 = binding.edtGuardianAddress.text.toString() + (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianPincode = + binding.edtGuardianPinCode.text.toString().toInt() + (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAddress1 = + binding.edtGuardianAddress.text.toString() (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAddress2 = "" - (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAddress3 = binding.spGuardianRelation.text.toString() + (activity as BajajFdMainActivity).nomineeGuardianDetails.GuardianAddress3 = + binding.spGuardianRelation.text.toString() // Applicant Bank Details (activity as BajajFdMainActivity).fdBankDetails.AccountType = rbBank.text.toString() - (activity as BajajFdMainActivity).fdBankDetails.BankBranch = binding.edtBankBranch.text.toString() - (activity as BajajFdMainActivity).fdBankDetails.IFSCCode = binding.edtIFSC.text.toString() - (activity as BajajFdMainActivity).fdBankDetails.AccountNumber = binding.edtAccountNumber.text.toString() - (activity as BajajFdMainActivity).fdBankDetails.BankName = binding.edtBankName.text.toString() - (activity as BajajFdMainActivity).fdBankDetails.PaymentMode =rbPaymentMode.text.toString() + (activity as BajajFdMainActivity).fdBankDetails.BankBranch = + binding.edtBankBranch.text.toString() + (activity as BajajFdMainActivity).fdBankDetails.IFSCCode = + binding.edtIFSC.text.toString() + (activity as BajajFdMainActivity).fdBankDetails.AccountNumber = + binding.edtAccountNumber.text.toString() + (activity as BajajFdMainActivity).fdBankDetails.BankName = + binding.edtBankName.text.toString() + (activity as BajajFdMainActivity).fdBankDetails.PaymentMode = + rbPaymentMode.text.toString() bajajFDInterface.stepTwoApi("stepTwoResponse") } } - binding.btnBack.setOnClickListener{ + binding.btnBack.setOnClickListener { (activity as BajajFdMainActivity).binding.viewPager.currentItem = 0 } return root } + private fun panCheckApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + val panCheck = PanCheckRequest() + panCheck.clientCode = "0" + panCheck.subBrokerCode = "0" + 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 + ) + ) + } + // 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 -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + + } + + } + // validations private fun validation(): Boolean { return if (binding.edtMobileNumber.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtMobileNumber, binding.tlMobileNumber, getString(R.string.emptyMobileNumber)) + commonErrorMethod( + binding.edtMobileNumber, + binding.tlMobileNumber, + getString(R.string.emptyMobileNumber) + ) } else if (binding.edtMobileNumber.text?.length != 10) { // EditText - commonErrorMethod(binding.edtMobileNumber, binding.tlMobileNumber, getString(R.string.inValidMobileNumber)) + commonErrorMethod( + binding.edtMobileNumber, + binding.tlMobileNumber, + getString(R.string.inValidMobileNumber) + ) } else if (!isIndianMobileNo(binding.edtMobileNumber.text.toString())) { // EditText - commonErrorMethod(binding.edtMobileNumber, binding.tlMobileNumber, getString(R.string.inValidIndianMobileNumber)) + commonErrorMethod( + binding.edtMobileNumber, + binding.tlMobileNumber, + getString(R.string.inValidIndianMobileNumber) + ) } else if (binding.edtDOB.text.toString().isEmpty()) { // EditText commonErrorMethod(binding.edtDOB, binding.tlDOB, getString(R.string.emptyDOB)) } else if (binding.edtPANNumber.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtPANNumber, binding.tlPanNumber, getString(R.string.emptyPAN)) + commonErrorMethod( + binding.edtPANNumber, + binding.tlPanNumber, + getString(R.string.emptyPAN) + ) } else if (isValidPan(binding.edtPANNumber.text.toString())) { // EditText - commonErrorMethod(binding.edtPANNumber, binding.tlPanNumber, getString(R.string.invalidPAN)) + commonErrorMethod( + binding.edtPANNumber, + binding.tlPanNumber, + getString(R.string.invalidPAN) + ) } else if (binding.spTitle.text.isEmpty()) { // Spinner - commonSpinnerErrorMethod(binding.spTitle, binding.tlTitle, getString(R.string.emptyTitle)) + commonSpinnerErrorMethod( + binding.spTitle, + binding.tlTitle, + getString(R.string.emptyTitle) + ) } else if (binding.edtFirstName.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtFirstName, binding.tlFirstName, getString(R.string.emptyFirstName)) + commonErrorMethod( + binding.edtFirstName, + binding.tlFirstName, + getString(R.string.emptyFirstName) + ) } else if (isValidName(binding.edtFirstName.text.toString())) { // EditText - commonErrorMethod(binding.edtFirstName, binding.tlFirstName, getString(R.string.validFirstName)) + commonErrorMethod( + binding.edtFirstName, + binding.tlFirstName, + getString(R.string.validFirstName) + ) } else if (binding.edtMiddleName.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtMiddleName, binding.tlMiddleName, getString(R.string.emptyMiddleName)) + commonErrorMethod( + binding.edtMiddleName, + binding.tlMiddleName, + getString(R.string.emptyMiddleName) + ) } else if (isValidName(binding.edtMiddleName.text.toString())) { // EditText - commonErrorMethod(binding.edtMiddleName, binding.tlMiddleName, getString(R.string.validMiddleName)) + commonErrorMethod( + binding.edtMiddleName, + binding.tlMiddleName, + getString(R.string.validMiddleName) + ) } else if (binding.edtLastName.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtLastName, binding.tlLastName, getString(R.string.emptyLastName)) + commonErrorMethod( + binding.edtLastName, + binding.tlLastName, + getString(R.string.emptyLastName) + ) } else if (isValidName(binding.edtLastName.text.toString())) { // EditText - commonErrorMethod(binding.edtLastName, binding.tlLastName, getString(R.string.validLastName)) + commonErrorMethod( + binding.edtLastName, + binding.tlLastName, + getString(R.string.validLastName) + ) } else if (binding.spGender.text.toString().isEmpty()) { // Spinner - commonSpinnerErrorMethod(binding.spGender, binding.tlGender, getString(R.string.emptyGender)) + commonSpinnerErrorMethod( + binding.spGender, + binding.tlGender, + getString(R.string.emptyGender) + ) } else if (binding.edtEmail.text.toString().isEmpty()) { // EditText commonErrorMethod(binding.edtEmail, binding.tlEmail, getString(R.string.emptyEmail)) } else if (isValidEmail(binding.edtEmail.text.toString())) { // EditText commonErrorMethod(binding.edtEmail, binding.tlEmail, getString(R.string.validEmail)) } else if (binding.edtOccupation.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtOccupation, binding.tlOccupation, getString(R.string.emptyOccupation)) + commonErrorMethod( + binding.edtOccupation, + binding.tlOccupation, + getString(R.string.emptyOccupation) + ) } else if (binding.edtQualification.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtQualification, binding.tlQualification, getString(R.string.emptyQualification)) + commonErrorMethod( + binding.edtQualification, + binding.tlQualification, + getString(R.string.emptyQualification) + ) } else if (binding.spMarital.text.toString().isEmpty()) { // Spinner - commonSpinnerErrorMethod(binding.spMarital, binding.tlMarital, getString(R.string.emptyMaritalStatus)) + commonSpinnerErrorMethod( + binding.spMarital, + binding.tlMarital, + getString(R.string.emptyMaritalStatus) + ) } else if (binding.spRelation.text.toString().isEmpty()) { // Spinner - commonSpinnerErrorMethod(binding.spRelation, binding.tlRelation, getString(R.string.emptyRelation)) + commonSpinnerErrorMethod( + binding.spRelation, + binding.tlRelation, + getString(R.string.emptyRelation) + ) } else if (binding.edtRelationName.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtRelationName, binding.tlRelationName, getString(R.string.emptyRelationName)) + commonErrorMethod( + binding.edtRelationName, + binding.tlRelationName, + getString(R.string.emptyRelationName) + ) } else if (binding.edtAddressLine1.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtAddressLine1, binding.tlAddressLine1, getString(R.string.emptyAddressLine1)) + commonErrorMethod( + binding.edtAddressLine1, + binding.tlAddressLine1, + getString(R.string.emptyAddressLine1) + ) } else if (binding.edtAddressLine2.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtAddressLine2, binding.tlAddressLine2, getString(R.string.emptyAddressLine2)) + commonErrorMethod( + binding.edtAddressLine2, + binding.tlAddressLine2, + getString(R.string.emptyAddressLine2) + ) } else if (binding.edtState.text.toString().isEmpty()) { // EditText commonErrorMethod(binding.edtState, binding.tlState, getString(R.string.emptyState)) } else if (binding.edtCity.text.toString().isEmpty()) { // EditText commonErrorMethod(binding.edtCity, binding.tlCity, getString(R.string.emptyCity)) } else if (binding.edtPinCode.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtPinCode, binding.tlPinCode, getString(R.string.emptyPinCode)) - } else if (binding.edtPinCode.text.toString().length !=6) { // EditText - commonErrorMethod(binding.edtPinCode, binding.tlPinCode, getString(R.string.validPinCode)) + commonErrorMethod( + binding.edtPinCode, + binding.tlPinCode, + getString(R.string.emptyPinCode) + ) + } else if (binding.edtPinCode.text.toString().length != 6) { // EditText + commonErrorMethod( + binding.edtPinCode, + binding.tlPinCode, + getString(R.string.validPinCode) + ) } else if (binding.edtIFSC.text.toString().isEmpty()) { // EditText commonErrorMethod(binding.edtIFSC, binding.tlIFSC, getString(R.string.emptyIFSCCode)) - }else if (binding.edtIFSC.text.toString().length != 11) { // EditText + } else if (binding.edtIFSC.text.toString().length != 11) { // EditText commonErrorMethod(binding.edtIFSC, binding.tlIFSC, getString(R.string.validIFSCCode)) } else if (binding.edtAccountNumber.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtAccountNumber, binding.tlAccountNumber, getString(R.string.emptyAccNo)) - } else if (binding.edtBankName.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtBankName, binding.tlBankName, getString(R.string.emptyBankName)) + commonErrorMethod( + binding.edtAccountNumber, + binding.tlAccountNumber, + getString(R.string.emptyAccNo) + ) + } else if (binding.edtBankName.text.toString().isEmpty()) { // EditText + commonErrorMethod( + binding.edtBankName, + binding.tlBankName, + getString(R.string.emptyBankName) + ) } else if (binding.edtBankBranch.text.toString().isEmpty()) { // EditText - commonErrorMethod(binding.edtBankBranch, binding.tlBankBranchName, getString(R.string.emptyBranchName)) + commonErrorMethod( + binding.edtBankBranch, + binding.tlBankBranchName, + getString(R.string.emptyBranchName) + ) } else { return true } diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepFiveModelProviderFactory.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepFiveModelProviderFactory.kt new file mode 100644 index 0000000..c04ac03 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepFiveModelProviderFactory.kt @@ -0,0 +1,15 @@ +package com.nivesh.production.bajajfd.ui.providerfactory + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.viewModel.StepFiveBajajFDViewModel + +class StepFiveModelProviderFactory(private val mainRepository: MainRepository) : + ViewModelProvider.Factory { + + override fun create(modelClass: Class): T { + return StepFiveBajajFDViewModel(mainRepository) as T + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepFourModelProviderFactory.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepFourModelProviderFactory.kt new file mode 100644 index 0000000..851343b --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepFourModelProviderFactory.kt @@ -0,0 +1,15 @@ +package com.nivesh.production.bajajfd.ui.providerfactory + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.viewModel.StepFourBajajFDViewModel + +class StepFourModelProviderFactory(private val mainRepository: MainRepository) : + ViewModelProvider.Factory { + + override fun create(modelClass: Class): T { + return StepFourBajajFDViewModel(mainRepository) as T + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/GetRatesModelProviderFactory.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepOneModelProviderFactory.kt similarity index 70% rename from app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/GetRatesModelProviderFactory.kt rename to app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepOneModelProviderFactory.kt index 72cf610..6cf1db0 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/GetRatesModelProviderFactory.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepOneModelProviderFactory.kt @@ -3,10 +3,9 @@ package com.nivesh.production.bajajfd.ui.providerfactory import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import com.nivesh.production.bajajfd.repositories.MainRepository -import com.nivesh.production.bajajfd.viewModel.BajajFDViewModel import com.nivesh.production.bajajfd.viewModel.StepOneBajajFDViewModel -class GetRatesModelProviderFactory (private val mainRepository: MainRepository) : ViewModelProvider.Factory { +class StepOneModelProviderFactory (private val mainRepository: MainRepository) : ViewModelProvider.Factory { override fun create(modelClass: Class): T { return StepOneBajajFDViewModel(mainRepository) as T diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepThreeModelProviderFactory.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepThreeModelProviderFactory.kt new file mode 100644 index 0000000..7e60bf4 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepThreeModelProviderFactory.kt @@ -0,0 +1,17 @@ +package com.nivesh.production.bajajfd.ui.providerfactory + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.viewModel.BajajFDViewModel +import com.nivesh.production.bajajfd.viewModel.StepOneBajajFDViewModel +import com.nivesh.production.bajajfd.viewModel.StepThreeBajajFDViewModel +import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel + +class StepThreeModelProviderFactory (private val mainRepository: MainRepository) : ViewModelProvider.Factory { + + override fun create(modelClass: Class): T { + return StepThreeBajajFDViewModel(mainRepository) as T + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepTwoModelProviderFactory.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepTwoModelProviderFactory.kt new file mode 100644 index 0000000..847c8ca --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/providerfactory/StepTwoModelProviderFactory.kt @@ -0,0 +1,16 @@ +package com.nivesh.production.bajajfd.ui.providerfactory + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.viewModel.BajajFDViewModel +import com.nivesh.production.bajajfd.viewModel.StepOneBajajFDViewModel +import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel + +class StepTwoModelProviderFactory (private val mainRepository: MainRepository) : ViewModelProvider.Factory { + + override fun create(modelClass: Class): T { + return StepTwoBajajFDViewModel(mainRepository) as T + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt index 9495592..53c0d20 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt @@ -4,6 +4,6 @@ class Constants() { companion object { const val BASE_URL = "https://providential.in/WebApi_Bajaj/" - + const val token = "636F8F63-06C4-4D95-8562-392B34025FB0" } } \ 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 a4d30de..d0d622a 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 @@ -14,9 +14,9 @@ class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() // TODO: Implement the ViewModel val getRatesMutableData: MutableLiveData> = MutableLiveData() - fun getCode(requestBody: GetCodeRequest) = viewModelScope.launch { + fun getCode(requestBody: GetCodeRequest, token : String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.getCodesResponse(requestBody) + val response = mainRepository.getCodesResponse(requestBody, token) getRatesMutableData.postValue(handleRatesResponse(response)) } 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 1ff30eb..509c598 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,18 +1,9 @@ package com.nivesh.production.bajajfd.viewModel -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.Transformations import androidx.lifecycle.ViewModel +import com.nivesh.production.bajajfd.repositories.MainRepository -class StepFiveBajajFDViewModel : ViewModel() { +class StepFiveBajajFDViewModel (private val mainRepository: MainRepository) : ViewModel() { - private val _index = MutableLiveData() - val text: LiveData = Transformations.map(_index) { - "Step : $it" - } - fun setIndex(index: Int) { - _index.value = index - } } \ No newline at end of file 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 fa40f96..c1d13a1 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 @@ -13,9 +13,9 @@ class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : Vie private val getRatesMutableData: MutableLiveData> = MutableLiveData() - fun saveFDOtherData(getRatesRequest: GetRatesRequest) = viewModelScope.launch { + fun saveFDOtherData(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.saveFDOtherDataResponse(getRatesRequest) + val response = mainRepository.saveFDOtherDataResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } @@ -29,33 +29,33 @@ class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : Vie } - fun getFDDetails(getRatesRequest: GetRatesRequest) = viewModelScope.launch { + fun getFDDetails(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.getFDDetailsResponse(getRatesRequest) + val response = mainRepository.getFDDetailsResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } - fun updateFDPaymentStatus(getRatesRequest: GetRatesRequest) = viewModelScope.launch { + fun updateFDPaymentStatus(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.updateFDPaymentStatusResponse(getRatesRequest) + val response = mainRepository.updateFDPaymentStatusResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } - fun finaliseFD(getRatesRequest: GetRatesRequest) = viewModelScope.launch { + fun finaliseFD(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.finaliseFDResponse(getRatesRequest) + val response = mainRepository.finaliseFDResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } - fun finaliseKYC(getRatesRequest: GetRatesRequest) = viewModelScope.launch { + fun finaliseKYC(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.finaliseKYCResponse(getRatesRequest) + val response = mainRepository.finaliseKYCResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } - fun paymentReQuery(getRatesRequest: GetRatesRequest) = viewModelScope.launch { + fun paymentReQuery(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.paymentReQueryResponse(getRatesRequest) + val response = mainRepository.paymentReQueryResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(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 2479303..29eca04 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 @@ -4,28 +4,27 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject -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.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch -import okhttp3.RequestBody class StepOneBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { // TODO: Implement the ViewModel val getRatesMutableData: MutableLiveData> = MutableLiveData() val getMaturityAmountMutableData: MutableLiveData> = MutableLiveData() - fun getRates(getRatesRequest: GetRatesRequest) = viewModelScope.launch { + fun getRates(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.getRatesResponse(getRatesRequest) + val response = mainRepository.getRatesResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } fun getMaturityAmount(requestBody: GetMaturityAmountRequest) = viewModelScope.launch { getMaturityAmountMutableData.postValue(Resource.Loading()) - val response = mainRepository.createCalculateFDMaturityAmount(requestBody) + val response = mainRepository.createCalculateFDMaturityAmount(requestBody, token) getMaturityAmountMutableData.postValue(handleRatesResponse(response)) } 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 548614f..74522d4 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 @@ -11,9 +11,9 @@ class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : Vi private val getRatesMutableData: MutableLiveData> = MutableLiveData() - fun documentsUpload(getRatesRequest: GetRatesRequest) = viewModelScope.launch { + fun documentsUpload(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.documentsUploadResponse(getRatesRequest) + val response = mainRepository.documentsUploadResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } 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 e091180..0719aaa 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 @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject import com.nivesh.production.bajajfd.model.GetRatesRequest +import com.nivesh.production.bajajfd.model.PanCheckRequest import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch @@ -13,10 +14,12 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View // TODO: Implement the ViewModel private val getRatesMutableData: MutableLiveData> = MutableLiveData() + val getPanCheckMutableData: MutableLiveData> = MutableLiveData() - fun checkFDKYC(getRatesRequest: GetRatesRequest) = viewModelScope.launch { + + fun checkFDKYC(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.checkFDKYCResponse(getRatesRequest) + val response = mainRepository.checkFDKYCResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } @@ -36,4 +39,10 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View // getRatesMutableData.postValue(handleRatesResponse(response)) // } + fun panCheck(panCheck: PanCheckRequest, token: String) = viewModelScope.launch { + getPanCheckMutableData.postValue(Resource.Loading()) + val response = mainRepository.panCheck(panCheck, token) + getPanCheckMutableData.postValue(handleRatesResponse(response)) + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bajajfd_step_five.xml b/app/src/main/res/layout/fragment_bajajfd_step_five.xml index 916f39d..4fe62f0 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_five.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_five.xml @@ -5,179 +5,174 @@ android:id="@+id/constraintLayout" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_margin="@dimen/margin_10" - android:background="@color/greyColor4" + android:background="@color/NiveshColorAppBg" tools:context="com.nivesh.production.bajajfd.ui.fragment.StepFiveBajajFDFragment"> - - - - - - - - - - - - - + app:layout_constraintTop_toTopOf="parent"> - - - - - - - + android:layout_height="match_parent" + android:paddingBottom="@dimen/margin_10"> + + + + + + + + + + + + + + + + + + + + + + - - + - + app:layout_constraintTop_toBottomOf="@+id/linearLayoutTwo" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/btnNext" + app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintStart_toEndOf="@+id/tvDownloadInvoice" /> + app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintStart_toStartOf="parent"/> + app:layout_constraintStart_toEndOf="@+id/btnBack" /> @@ -450,23 +451,24 @@ -