diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 356061a..23b943e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,7 +18,8 @@ + android:exported="true" + android:windowSoftInputMode="adjustPan"> 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..42e538b 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,6 +4,7 @@ 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.* @@ -88,7 +89,6 @@ interface ApiInterface { "Content-Type: application/json", "charset: UTF-8" ) suspend fun getCodes(@Body requestBody: GetCodeRequest): Response -// "token: 636F8F63-06C4-4D95-8562-392B34025FB0"; @POST("CalculateFDMaturityAmount") @Headers( @@ -96,4 +96,12 @@ interface ApiInterface { "Content-Type: application/json", "charset: UTF-8" ) suspend fun getCalculateFDMaturityAmount(@Body requestBody: GetMaturityAmountRequest): Response + + @POST("PanCheck_S") +// @Headers( +// "token: 636F8F63-06C4-4D95-8562-392B34025FB0", +// "Content-Type: application/json", "charset: UTF-8" +// ) + @Headers("token: 636F8F63-06C4-4D95-8562-392B34025FB0") + suspend fun panCheckApi(@Body panCheck: PanCheckRequest): 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..a49288a 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,6 +4,7 @@ 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) = @@ -40,5 +41,7 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun paymentReQueryResponse(getRatesRequest: GetRatesRequest) = apiInterface.getRates(getRatesRequest) + suspend fun panCheck(panCheck: PanCheckRequest) = + apiInterface.panCheckApi(panCheck) } \ 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..c952bb1 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 @@ -16,19 +16,23 @@ 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.StepOneModelProviderFactory +import com.nivesh.production.bajajfd.ui.providerfactory.StepTwoModelProviderFactory 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.Resource import com.nivesh.production.bajajfd.viewModel.BajajFDViewModel import com.nivesh.production.bajajfd.viewModel.StepOneBajajFDViewModel +import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { lateinit var binding: ActivityBajajFdBinding private lateinit var viewModel: BajajFDViewModel lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel + lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel + lateinit var listOfFrequency: List lateinit var createFDRequest: CreateFDRequest lateinit var createFDApplicantRequest: CreateFDApplicationRequest @@ -38,6 +42,7 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { lateinit var fdBankDetails: FdBankDetails lateinit var nomineeDetails: NomineeDetails lateinit var nomineeGuardianDetails: NomineeGuardianDetails + // lateinit var viewModelProviderFactory override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -60,15 +65,11 @@ 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] + + listOfFrequency = ArrayList() if (Common.isNetworkAvailable(this)) { getCodeApi() 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..f7463ef 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,8 @@ 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.viewModel.StepFourBajajFDViewModel class StepFourBajajFDFragment : Fragment() { @@ -17,6 +16,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 +24,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 +38,19 @@ 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 -// } -// 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 c60706b..e4f6c18 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 @@ -64,13 +65,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 +92,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 +120,8 @@ class StepOneBajajFDFragment : Fragment() { interest = listOfTenure[position].ROI binding.tvROI.text = interest.toString().plus(" %") maturityAmountApi(tenure, interest) + + recyclerViewDropDownAdapter.refresh() } } @@ -191,9 +198,7 @@ class StepOneBajajFDFragment : Fragment() { private fun maturityAmountApi(tenure: Int, interest: Double) { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - if (binding.edtAmount.text.toString().isNotEmpty() && interest.toString() - .isNotEmpty() && tenure.toString().isNotEmpty() - ) { + 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() @@ -244,13 +249,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, 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..3219cd8 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,8 @@ 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.Resource +import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel class StepTwoBajajFDFragment : Fragment() { @@ -34,6 +41,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 +62,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 +96,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 +415,6 @@ class StepTwoBajajFDFragment : Fragment() { } - // Bank Details binding.edtIFSC.addTextChangedListener(object : TextWatcher { @@ -460,25 +472,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 +498,348 @@ 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 = "" + // val string :String = Gson().toJson(panCheck) + // val requestBody = string.toRequestBody("application/json".toMediaTypeOrNull()) + // stepTwoBajajFDViewModel.panCheck(requestBody) + stepTwoBajajFDViewModel.panCheck(panCheck) + 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/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/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/viewModel/StepTwoBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt index e091180..cbb9da4 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,6 +14,8 @@ 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 { getRatesMutableData.postValue(Resource.Loading()) @@ -36,4 +39,10 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View // getRatesMutableData.postValue(handleRatesResponse(response)) // } + fun panCheck(panCheck: PanCheckRequest) = viewModelScope.launch { + getPanCheckMutableData.postValue(Resource.Loading()) + val response = mainRepository.panCheck(panCheck) + getPanCheckMutableData.postValue(handleRatesResponse(response)) + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bajajfd_step_four.xml b/app/src/main/res/layout/fragment_bajajfd_step_four.xml index 295c24e..a357890 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_four.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_four.xml @@ -12,10 +12,9 @@ android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginBottom="80dp" + android:layout_marginBottom="70dp" android:background="@color/transparent" android:fillViewport="true" - android:visibility="visible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/layout/fragment_bajajfd_step_one.xml b/app/src/main/res/layout/fragment_bajajfd_step_one.xml index bb7e31a..26be7dd 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_one.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_one.xml @@ -12,9 +12,10 @@ android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent" + android:layout_marginBottom="@dimen/margin_70" android:fillViewport="true" android:padding="@dimen/margin_10" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintBottom_toTopOf="@+id/btnNext" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -450,23 +451,24 @@ -