Browse Source

working on 2nd step

PankajBranch
Hemant Khadase 2 years ago
parent
commit
63bd9a2aa1
22 changed files with 606 additions and 105 deletions
  1. +119
    -0
      app/src/main/java/com/nivesh/production/bajajfd/adapter/HorizontalRecyclerViewAdapter.kt
  2. +10
    -1
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt
  3. +5
    -0
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/OnClickListener.java
  4. +5
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/GetCalculateMaturityAmountResponse.kt
  5. +9
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/GetMaturityAmountRequest.kt
  6. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/model/ROIDataList.kt
  7. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/model/Response.kt
  8. +9
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXX.kt
  9. +8
    -6
      app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt
  10. +6
    -9
      app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
  11. +146
    -31
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt
  12. +36
    -33
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt
  13. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt
  14. +3
    -1
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt
  15. +6
    -4
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt
  16. +5
    -5
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt
  17. +6
    -0
      app/src/main/res/drawable/rounded_corner_green_fill.xml
  18. +56
    -9
      app/src/main/res/layout/fragment_bajajfd_step_one.xml
  19. +35
    -0
      app/src/main/res/layout/row_dropdown.xml
  20. +67
    -2
      app/src/main/res/values-hi-rIN/strings.xml
  21. +1
    -0
      app/src/main/res/values/dimens.xml
  22. +71
    -1
      app/src/main/res/values/strings.xml

+ 119
- 0
app/src/main/java/com/nivesh/production/bajajfd/adapter/HorizontalRecyclerViewAdapter.kt View File

@ -0,0 +1,119 @@
package com.nivesh.production.bajajfd.adapter
import ROIDataList
import android.annotation.SuppressLint
import android.app.Activity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.recyclerview.widget.RecyclerView
import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.adapter.HorizontalRecyclerViewAdapter.HistoryAdapterViewHolder2
import com.nivesh.production.bajajfd.interfaces.OnClickListener
class HorizontalRecyclerViewAdapter(
private val activity: Activity,
dropdownList: MutableList<ROIDataList>,
onClickListener: OnClickListener
) : RecyclerView.Adapter<HistoryAdapterViewHolder2>() {
private val dropdownList: List<ROIDataList>
private var rowIndex = -1
private var onClickListener: OnClickListener
inner class HistoryAdapterViewHolder2(view: View?) : RecyclerView.ViewHolder(
view!!
) {
var txtYear: TextView = itemView.findViewById(R.id.txtYear)
var txtInterestRate: TextView = itemView.findViewById(R.id.txtInterestRate)
var rlParent: LinearLayout = itemView.findViewById(R.id.rlParent)
}
init {
this.dropdownList = dropdownList
this.onClickListener = onClickListener
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HistoryAdapterViewHolder2 {
val itemView =
LayoutInflater.from(parent.context).inflate(R.layout.row_dropdown, parent, false)
return HistoryAdapterViewHolder2(itemView)
}
override fun onBindViewHolder(
holder: HistoryAdapterViewHolder2,
@SuppressLint("RecyclerView") position: Int
) {
if (dropdownList.isNotEmpty()) {
val roiDataList: ROIDataList = dropdownList[position]
getYear(holder.txtYear, roiDataList, holder)
holder.txtInterestRate.text = roiDataList.ROI.toString().plus(" % ")
holder.rlParent.setOnClickListener {
rowIndex = position
notifyDataSetChanged()
}
if (rowIndex == position) {
onClickListener.onclickCategory(position)
holder.txtYear.background =
ResourcesCompat.getDrawable(
activity.resources,
R.drawable.rounded_corner_green_fill,
null
)
holder.txtYear.setTextColor(ContextCompat.getColor(activity, R.color.white))
} else {
holder.txtYear.background =
ResourcesCompat.getDrawable(
activity.resources,
R.drawable.rounded_corner_with_line,
null
)
holder.txtYear.setTextColor(
ContextCompat.getColor(activity, R.color.black)
)
}
}
}
private fun getYear(txtYear: TextView, option: ROIDataList, holder: HistoryAdapterViewHolder2) {
when (option.Tenure) {
"12" -> {
holder.rlParent.visibility = View.VISIBLE
txtYear.text = activity.getString(R.string.OneYear)
}
"24" -> {
holder.rlParent.visibility = View.VISIBLE
txtYear.text = activity.getString(R.string.TwoYears)
}
"36" -> {
holder.rlParent.visibility = View.VISIBLE
txtYear.text = activity.getString(R.string.ThreeYears)
}
"48" -> {
holder.rlParent.visibility = View.VISIBLE
txtYear.text = activity.getString(R.string.FourYears)
}
"60" -> {
holder.rlParent.visibility = View.VISIBLE
txtYear.text = activity.getString(R.string.FiveYears)
}
else -> {
holder.rlParent.visibility = View.GONE
}
}
}
override fun getItemCount(): Int {
return dropdownList.size
}
override fun getItemViewType(position: Int): Int {
return position
}
}

+ 10
- 1
app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt View File

@ -1,6 +1,8 @@
package com.nivesh.production.bajajfd.interfaces
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 okhttp3.RequestBody
import retrofit2.Response
@ -85,6 +87,13 @@ interface ApiInterface {
"token: 636F8F63-06C4-4D95-8562-392B34025FB0",
"Content-Type: application/json", "charset: UTF-8"
)
suspend fun getCodes(@Body requestBody: RequestBody): Response<JsonObject>
suspend fun getCodes(@Body requestBody: GetCodeRequest): Response<JsonObject>
// "token: 636F8F63-06C4-4D95-8562-392B34025FB0";
@POST("CalculateFDMaturityAmount")
@Headers(
"token: 636F8F63-06C4-4D95-8562-392B34025FB0",
"Content-Type: application/json", "charset: UTF-8"
)
suspend fun getCalculateFDMaturityAmount(@Body requestBody: GetMaturityAmountRequest): Response<JsonObject>
}

+ 5
- 0
app/src/main/java/com/nivesh/production/bajajfd/interfaces/OnClickListener.java View File

@ -0,0 +1,5 @@
package com.nivesh.production.bajajfd.interfaces;
public interface OnClickListener {
void onclickCategory(int position);
}

+ 5
- 0
app/src/main/java/com/nivesh/production/bajajfd/model/GetCalculateMaturityAmountResponse.kt View File

@ -0,0 +1,5 @@
package com.nivesh.production.bajajfd.model
data class GetCalculateMaturityAmountResponse(
val Response: ResponseXX
)

+ 9
- 0
app/src/main/java/com/nivesh/production/bajajfd/model/GetMaturityAmountRequest.kt View File

@ -0,0 +1,9 @@
package com.nivesh.production.bajajfd.model
data class GetMaturityAmountRequest(
var FDAmount: Int? = 0,
var FDProvider: String? = "",
var Frequency: String? = "",
var Interest: Double? = 0.0,
var Tenure: Int? = 0
)

+ 1
- 1
app/src/main/java/com/nivesh/production/bajajfd/model/ROIDataList.kt View File

@ -1,4 +1,4 @@
data class ROIDatalist(
data class ROIDataList(
val Frequency: String,
val Provider: String,
val ROI: Double,


+ 1
- 1
app/src/main/java/com/nivesh/production/bajajfd/model/Response.kt View File

@ -1,7 +1,7 @@
data class Response(
val Errors: List<Any>,
val Message: String,
val ROIDatalist: MutableList<ROIDatalist>,
var ROIDatalist: MutableList<ROIDataList>,
val Status: String,
val StatusCode: Int
)

+ 9
- 0
app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXX.kt View File

@ -0,0 +1,9 @@
package com.nivesh.production.bajajfd.model
data class ResponseXX(
val Errors: Any,
val MaturityAmount: Double,
val Message: String,
val Status: String,
val StatusCode: Int
)

+ 8
- 6
app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt View File

@ -2,17 +2,21 @@ package com.nivesh.production.bajajfd.repositories
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 okhttp3.RequestBody
class MainRepository constructor(private val apiInterface: ApiInterface) {
suspend fun getRatesResponse(getRatesRequest: GetRatesRequest) =
apiInterface.getRates(getRatesRequest)
suspend fun checkFDKYCResponse(getRatesRequest: GetRatesRequest) =
apiInterface.getRates(getRatesRequest)
suspend fun getCodesResponse(requestBody: GetCodeRequest) =
apiInterface.getCodes(requestBody)
suspend fun createCalculateFDMaturityAmount(requestBody: GetMaturityAmountRequest) =
apiInterface.getCalculateFDMaturityAmount(requestBody)
suspend fun createFDAppResponse(getRatesRequest: GetRatesRequest) =
suspend fun checkFDKYCResponse(getRatesRequest: GetRatesRequest) =
apiInterface.getRates(getRatesRequest)
suspend fun documentsUploadResponse(getRatesRequest: GetRatesRequest) =
@ -36,7 +40,5 @@ class MainRepository constructor(private val apiInterface: ApiInterface) {
suspend fun paymentReQueryResponse(getRatesRequest: GetRatesRequest) =
apiInterface.getRates(getRatesRequest)
suspend fun getCodesResponse(requestBody: RequestBody) =
apiInterface.getCodes(requestBody)
}

+ 6
- 9
app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt View File

@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider
import androidx.viewpager.widget.ViewPager
import com.google.gson.Gson
import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.adapter.SectionsPagerAdapter
import com.nivesh.production.bajajfd.api.ApiClient
import com.nivesh.production.bajajfd.databinding.ActivityBajajFdBinding
@ -22,8 +23,6 @@ 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 okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.RequestBody.Companion.toRequestBody
class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
private lateinit var binding: ActivityBajajFdBinding
@ -34,7 +33,7 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
lateinit var createFDRequest: CreateFDRequest
lateinit var createFDApplicantRequest: CreateFDApplicationRequest
lateinit var applicantDetails : ApplicantDetails
lateinit var applicantDetails: ApplicantDetails
lateinit var fdInvestmentDetails: FDInvestmentDetails
lateinit var applicantRelationDetails: ApplicantRelationDetails
lateinit var fdBankDetails: FdBankDetails
@ -83,13 +82,11 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
private fun getCodeApi() {
val getCodeRequest = GetCodeRequest()
getCodeRequest.ProductName = "BajajFD"
getCodeRequest.Category = "InterestPayoutFreq"
getCodeRequest.Language = "EN"
getCodeRequest.ProductName = getString(R.string.bajajFD)
getCodeRequest.Category = getString(R.string.category)
getCodeRequest.Language = getString(R.string.language)
getCodeRequest.InputValue = ""
val codeRequest: String = Gson().toJson(getCodeRequest)
val requestBody = codeRequest.toRequestBody("application/json".toMediaTypeOrNull())
viewModel.getCode(requestBody)
viewModel.getCode(getCodeRequest)
viewModel.getRatesMutableData.observe(this) { response ->
when (response) {
is Resource.Success -> {


+ 146
- 31
app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt View File

@ -1,7 +1,7 @@
package com.nivesh.production.bajajfd.ui.fragment
import GetRatesResponse
import ROIDatalist
import ROIDataList
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
@ -12,11 +12,16 @@ import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.RadioButton
import androidx.fragment.app.Fragment
import com.google.android.material.textfield.TextInputLayout
import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView.LayoutManager
import com.google.gson.Gson
import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.adapter.HorizontalRecyclerViewAdapter
import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepOneBinding
import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.model.GetCalculateMaturityAmountResponse
import com.nivesh.production.bajajfd.model.GetMaturityAmountRequest
import com.nivesh.production.bajajfd.model.GetRatesRequest
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import com.nivesh.production.bajajfd.util.Common
@ -31,9 +36,10 @@ class StepOneBajajFDFragment : Fragment() {
private lateinit var bajajFDInterface: BajajFDInterface
private lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel
private lateinit var rgMaturity: RadioButton
private lateinit var listOfTenure: MutableList<ROIDatalist>
private var tenure :Int = 0
private var interest : Double = 0.0
private lateinit var listOfTenure: MutableList<ROIDataList>
private var tenure: Int = 0
private var interest: Double = 0.0
private lateinit var recyclerViewDropDownAdapter: HorizontalRecyclerViewAdapter
companion object {
fun getInstance(fdInterface: BajajFDInterface): StepOneBajajFDFragment {
@ -56,6 +62,7 @@ class StepOneBajajFDFragment : Fragment() {
stepOneBajajFDViewModel = (activity as BajajFdMainActivity).stepOneBajajFDViewModel
listOfTenure = ArrayList()
// setUpRecyclerView()
// Amount
binding.edtAmount.addTextChangedListener(object : TextWatcher {
@ -63,6 +70,7 @@ class StepOneBajajFDFragment : Fragment() {
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)
}
})
@ -78,19 +86,33 @@ class StepOneBajajFDFragment : Fragment() {
removeError(binding.tlInterestPayout)
binding.tvFrequency.text =
(activity as BajajFdMainActivity).listOfFrequency[position].Value
getRatesApi()
if (!binding.tvFrequency.text.equals("Cumulative")) {
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()) {
getRatesApi()
} else {
// please enter Amount first
}
}
}
// Tenure
if (listOfTenure.isNotEmpty()) {
binding.spTenure.setOnItemClickListener { _, _, position, _ ->
removeError(binding.tlInterestTenure)
Log.e("Tenure", "--->".plus(listOfTenure[position].Tenure))
binding.spTenure.setOnItemClickListener { _, _, position, _ ->
removeError(binding.tlInterestTenure)
if (listOfTenure.isNotEmpty()) {
tenure = listOfTenure[position].Tenure.toInt()
interest = listOfTenure[position].ROI
binding.tvROI.text = interest.toString().plus(" %")
maturityAmountApi(tenure, interest)
}
}
// Senior / Non Senior Citizen
binding.swSeniorCitizen.setOnCheckedChangeListener { _, _ ->
getRatesApi()
@ -107,25 +129,29 @@ class StepOneBajajFDFragment : Fragment() {
Log.e("DeductTax", "-->" + binding.rbDeductTax.isChecked)
}
binding.tvROI.text = ""
binding.tvMaturityAmount.text = ""
// Next Button
binding.btnNext.setOnClickListener {
if (validation()) {
(activity as BajajFdMainActivity).fdInvestmentDetails.FDAmount = binding.edtAmount.text.toString().toDouble()
(activity as BajajFdMainActivity).fdInvestmentDetails.Frequency = binding.spInterestPayout.text.toString()
(activity as BajajFdMainActivity).fdInvestmentDetails.FDAmount =
binding.edtAmount.text.toString().toDouble()
(activity as BajajFdMainActivity).fdInvestmentDetails.Frequency =
binding.spInterestPayout.text.toString()
(activity as BajajFdMainActivity).fdInvestmentDetails.Tenure = tenure
(activity as BajajFdMainActivity).fdInvestmentDetails.Interest = interest
(activity as BajajFdMainActivity).fdInvestmentDetails.NiveshClientCode = "8872"
(activity as BajajFdMainActivity).fdInvestmentDetails.Provider = "Bajaj"
(activity as BajajFdMainActivity).fdInvestmentDetails.Provider =
getString(R.string.bajaj)
(activity as BajajFdMainActivity).fdInvestmentDetails.IPAddress = ""
(activity as BajajFdMainActivity).fdInvestmentDetails.Device = "App"
(activity as BajajFdMainActivity).fdInvestmentDetails.Device =
getString(R.string.app)
(activity as BajajFdMainActivity).fdInvestmentDetails.Source = "nivesh"
if (binding.swSeniorCitizen.isChecked){
(activity as BajajFdMainActivity).fdInvestmentDetails.CitizenType = getString(R.string.seniorCitizen)
}else{
(activity as BajajFdMainActivity).fdInvestmentDetails.CitizenType = getString(R.string.nonSeniorCitizen)
if (binding.swSeniorCitizen.isChecked) {
(activity as BajajFdMainActivity).fdInvestmentDetails.CitizenType =
getString(R.string.seniorCitizen)
} else {
(activity as BajajFdMainActivity).fdInvestmentDetails.CitizenType =
getString(R.string.nonSeniorCitizen)
}
(activity as BajajFdMainActivity).fdInvestmentDetails.CustomerType = ""
(activity as BajajFdMainActivity).fdInvestmentDetails.CKYCNumber = ""
@ -133,22 +159,103 @@ class StepOneBajajFDFragment : Fragment() {
bajajFDInterface.stepOneApi("stepOneResponse")
}
}
return root
}
private fun setUpRecyclerView() {
recyclerViewDropDownAdapter = HorizontalRecyclerViewAdapter(
activity as BajajFdMainActivity,
listOfTenure
) { position ->
tenure = listOfTenure[position].Tenure.toInt()
interest = listOfTenure[position].ROI
binding.tvROI.text = interest.toString().plus(" %")
maturityAmountApi(tenure, interest)
}
val mLayoutManager: LayoutManager =
LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, true)
binding.rvTenure.layoutManager = mLayoutManager
binding.rvTenure.setHasFixedSize(true)
binding.rvTenure.itemAnimator = DefaultItemAnimator()
binding.rvTenure.adapter = recyclerViewDropDownAdapter
}
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()
) {
val maturityAmountRequest = GetMaturityAmountRequest()
maturityAmountRequest.FDProvider = getString(R.string.bajaj)
maturityAmountRequest.FDAmount = binding.edtAmount.text.toString().toInt()
maturityAmountRequest.Frequency = binding.spInterestPayout.text.toString()
maturityAmountRequest.Tenure = tenure
maturityAmountRequest.Interest = interest
stepOneBajajFDViewModel.getMaturityAmount(maturityAmountRequest)
stepOneBajajFDViewModel.getMaturityAmountMutableData.observe(viewLifecycleOwner) { response ->
when (response) {
is Resource.Success -> {
val getMaturityAmountResponse =
Gson().fromJson(
response.data?.toString(),
GetCalculateMaturityAmountResponse::class.java
)
getMaturityAmountResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
binding.tvMaturityAmount.text = getString(R.string.rs).plus(
getMaturityAmountResponse.Response.MaturityAmount.toString()
)
}
// 650 -> refreshToken()
else -> {}
}
}
}
is Resource.Error -> {
response.message?.let { message ->
Log.e(" ", "An error occurred:$message")
}
}
is Resource.Loading -> {
}
}
}
}
}
}
private fun validation(): Boolean {
return if (binding.edtAmount.text.toString().isEmpty()) {
Common.commonErrorMethod(binding.edtAmount, binding.tlDepositAmount, "")
Common.commonErrorMethod(
binding.edtAmount,
binding.tlDepositAmount,
getString(R.string.emptyAmount)
)
} else if (binding.spInterestPayout.text.toString().toDouble() <= 5000) {
Common.commonSpinnerErrorMethod(
binding.spInterestPayout,
binding.tlInterestPayout,
getString(R.string.validMinAmount)
)
} else if (binding.spInterestPayout.text.isEmpty()) {
Common.commonSpinnerErrorMethod(
binding.spInterestPayout,
binding.tlInterestPayout,
""
getString(R.string.emptyInterestPayout)
)
} else if (binding.spTenure.text.isEmpty()) {
Common.commonSpinnerErrorMethod(binding.spTenure, binding.tlInterestTenure, "")
Common.commonSpinnerErrorMethod(
binding.spTenure,
binding.tlInterestTenure,
getString(R.string.emptyInterestTenure)
)
} else {
true
}
@ -157,7 +264,7 @@ class StepOneBajajFDFragment : Fragment() {
private fun getRatesApi() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val getRatesRequest = GetRatesRequest()
getRatesRequest.fdProvider = "Bajaj"
getRatesRequest.fdProvider = getString(R.string.bajaj)
getRatesRequest.frequency = binding.spInterestPayout.text.toString()
if (binding.swSeniorCitizen.isChecked) {
getRatesRequest.type = getString(R.string.seniorCitizen)
@ -177,13 +284,21 @@ class StepOneBajajFDFragment : Fragment() {
listOfTenure.clear()
}
listOfTenure = getRatesResponse.Response.ROIDatalist
val adapter =
ArrayAdapter(
activity as BajajFdMainActivity,
R.layout.spinner_dropdown,
listOfTenure
)
binding.spTenure.setAdapter(adapter)
// Tenure
if (listOfTenure.isNotEmpty()) {
listOfTenure.sortWith { lhs: ROIDataList, rhs: ROIDataList -> rhs.Tenure.compareTo(lhs.Tenure) }
binding.ORLayout.visibility = View.VISIBLE
val tenureAdapter =
ArrayAdapter(
activity as BajajFdMainActivity,
R.layout.spinner_dropdown,
listOfTenure
)
binding.spTenure.setAdapter(tenureAdapter)
setUpRecyclerView()
}else{
binding.ORLayout.visibility = View.GONE
}
}
// 650 -> refreshToken()
else -> {}


+ 36
- 33
app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt View File

@ -541,69 +541,72 @@ class StepTwoBajajFDFragment : Fragment() {
// validations
private fun validation(): Boolean {
return if (binding.edtMobileNumber.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtMobileNumber, binding.tlMobileNumber, "")
commonErrorMethod(binding.edtMobileNumber, binding.tlMobileNumber, getString(R.string.emptyMobileNumber))
} else if (binding.edtMobileNumber.text?.length != 10) { // EditText
commonErrorMethod(binding.edtMobileNumber, binding.tlMobileNumber, "")
} else if (binding.edtMobileNumber.text?.length == 10 && !isIndianMobileNo(binding.edtMobileNumber.text.toString())) { // EditText
commonErrorMethod(binding.edtMobileNumber, binding.tlMobileNumber, "")
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))
} else if (binding.edtDOB.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtDOB, binding.tlDOB, "")
commonErrorMethod(binding.edtDOB, binding.tlDOB, getString(R.string.emptyDOB))
} else if (binding.edtPANNumber.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtPANNumber, binding.tlPanNumber, "")
commonErrorMethod(binding.edtPANNumber, binding.tlPanNumber, getString(R.string.emptyPAN))
} else if (isValidPan(binding.edtPANNumber.text.toString())) { // EditText
commonErrorMethod(binding.edtPANNumber, binding.tlPanNumber, "")
commonErrorMethod(binding.edtPANNumber, binding.tlPanNumber, getString(R.string.invalidPAN))
} else if (binding.spTitle.text.isEmpty()) { // Spinner
commonSpinnerErrorMethod(binding.spTitle, binding.tlTitle, "")
commonSpinnerErrorMethod(binding.spTitle, binding.tlTitle, getString(R.string.emptyTitle))
} else if (binding.edtFirstName.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtFirstName, binding.tlFirstName, "")
commonErrorMethod(binding.edtFirstName, binding.tlFirstName, getString(R.string.emptyFirstName))
} else if (isValidName(binding.edtFirstName.text.toString())) { // EditText
commonErrorMethod(binding.edtFirstName, binding.tlFirstName, "")
commonErrorMethod(binding.edtFirstName, binding.tlFirstName, getString(R.string.validFirstName))
} else if (binding.edtMiddleName.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtMiddleName, binding.tlMiddleName, "")
commonErrorMethod(binding.edtMiddleName, binding.tlMiddleName, getString(R.string.emptyMiddleName))
} else if (isValidName(binding.edtMiddleName.text.toString())) { // EditText
commonErrorMethod(binding.edtMiddleName, binding.tlMiddleName, "")
commonErrorMethod(binding.edtMiddleName, binding.tlMiddleName, getString(R.string.validMiddleName))
} else if (binding.edtLastName.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtLastName, binding.tlLastName, "")
commonErrorMethod(binding.edtLastName, binding.tlLastName, getString(R.string.emptyLastName))
} else if (isValidName(binding.edtLastName.text.toString())) { // EditText
commonErrorMethod(binding.edtLastName, binding.tlLastName, "")
commonErrorMethod(binding.edtLastName, binding.tlLastName, getString(R.string.validLastName))
} else if (binding.spGender.text.toString().isEmpty()) { // Spinner
commonSpinnerErrorMethod(binding.spGender, binding.tlGender, "")
commonSpinnerErrorMethod(binding.spGender, binding.tlGender, getString(R.string.emptyGender))
} else if (binding.edtEmail.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtEmail, binding.tlEmail, "")
commonErrorMethod(binding.edtEmail, binding.tlEmail, getString(R.string.emptyEmail))
} else if (isValidEmail(binding.edtEmail.text.toString())) { // EditText
commonErrorMethod(binding.edtEmail, binding.tlEmail, "")
commonErrorMethod(binding.edtEmail, binding.tlEmail, getString(R.string.validEmail))
} else if (binding.edtOccupation.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtOccupation, binding.tlOccupation, "")
commonErrorMethod(binding.edtOccupation, binding.tlOccupation, getString(R.string.emptyOccupation))
} else if (binding.edtQualification.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtQualification, binding.tlQualification, "")
commonErrorMethod(binding.edtQualification, binding.tlQualification, getString(R.string.emptyQualification))
} else if (binding.spMarital.text.toString().isEmpty()) { // Spinner
commonSpinnerErrorMethod(binding.spMarital, binding.tlMarital, "")
commonSpinnerErrorMethod(binding.spMarital, binding.tlMarital, getString(R.string.emptyMaritalStatus))
} else if (binding.spRelation.text.toString().isEmpty()) { // Spinner
commonSpinnerErrorMethod(binding.spRelation, binding.tlRelation, "")
commonSpinnerErrorMethod(binding.spRelation, binding.tlRelation, getString(R.string.emptyRelation))
} else if (binding.edtRelationName.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtRelationName, binding.tlRelationName, "")
commonErrorMethod(binding.edtRelationName, binding.tlRelationName, getString(R.string.emptyRelationName))
} else if (binding.edtAddressLine1.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtAddressLine1, binding.tlAddressLine1, "")
commonErrorMethod(binding.edtAddressLine1, binding.tlAddressLine1, getString(R.string.emptyAddressLine1))
} else if (binding.edtAddressLine2.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtAddressLine2, binding.tlAddressLine2, "")
commonErrorMethod(binding.edtAddressLine2, binding.tlAddressLine2, getString(R.string.emptyAddressLine2))
} else if (binding.edtState.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtState, binding.tlState, "")
commonErrorMethod(binding.edtState, binding.tlState, getString(R.string.emptyState))
} else if (binding.edtCity.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtCity, binding.tlCity, "")
commonErrorMethod(binding.edtCity, binding.tlCity, getString(R.string.emptyCity))
} else if (binding.edtPinCode.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtPinCode, binding.tlPinCode, "")
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, "")
commonErrorMethod(binding.edtIFSC, binding.tlIFSC, getString(R.string.emptyIFSCCode))
}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, "")
} else if (binding.edtBankName.text.toString().isEmpty()) { // EditText
commonErrorMethod(binding.edtBankName, binding.tlBankName, "")
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, "")
commonErrorMethod(binding.edtBankBranch, binding.tlBankBranchName, getString(R.string.emptyBranchName))
} else {
return true
}
}
override fun onDestroyView() {


+ 1
- 1
app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt View File

@ -14,7 +14,7 @@ class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel()
// TODO: Implement the ViewModel
val getRatesMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getCode(requestBody: RequestBody) = viewModelScope.launch {
fun getCode(requestBody: GetCodeRequest) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.getCodesResponse(requestBody)
getRatesMutableData.postValue(handleRatesResponse(response))


+ 3
- 1
app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt View File

@ -1,6 +1,8 @@
package com.nivesh.production.bajajfd.viewModel
import androidx.lifecycle.*
import androidx.lifecycle.MutableLiveData
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.repositories.MainRepository


+ 6
- 4
app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt View File

@ -5,6 +5,7 @@ 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.Resource
@ -14,6 +15,7 @@ import okhttp3.RequestBody
class StepOneBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
// TODO: Implement the ViewModel
val getRatesMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
val getMaturityAmountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getRates(getRatesRequest: GetRatesRequest) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
@ -21,10 +23,10 @@ class StepOneBajajFDViewModel(private val mainRepository: MainRepository) : View
getRatesMutableData.postValue(handleRatesResponse(response))
}
fun getCode(requestBody: RequestBody) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.getCodesResponse(requestBody)
getRatesMutableData.postValue(handleRatesResponse(response))
fun getMaturityAmount(requestBody: GetMaturityAmountRequest) = viewModelScope.launch {
getMaturityAmountMutableData.postValue(Resource.Loading())
val response = mainRepository.createCalculateFDMaturityAmount(requestBody)
getMaturityAmountMutableData.postValue(handleRatesResponse(response))
}
private fun handleRatesResponse(response: retrofit2.Response<JsonObject>): Resource<JsonObject> {


+ 5
- 5
app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt View File

@ -30,10 +30,10 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View
}
fun createFDApp(getRatesRequest: GetRatesRequest) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.createFDAppResponse(getRatesRequest)
getRatesMutableData.postValue(handleRatesResponse(response))
}
// fun createFDApp(getRatesRequest: GetRatesRequest) = viewModelScope.launch {
// getRatesMutableData.postValue(Resource.Loading())
// val response = mainRepository.createFDAppResponse(getRatesRequest)
// getRatesMutableData.postValue(handleRatesResponse(response))
// }
}

+ 6
- 0
app/src/main/res/drawable/rounded_corner_green_fill.xml View File

@ -0,0 +1,6 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/green"/>
<stroke android:width="@dimen/margin_2" android:color="@color/greyColor3" />
<corners android:radius="@dimen/margin_10"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>

+ 56
- 9
app/src/main/res/layout/fragment_bajajfd_step_one.xml View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tool="http://schemas.android.com/tools"
android:id="@+id/constraintLayout"
@ -12,7 +11,7 @@
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:fillViewport="true"
android:padding="@dimen/margin_10"
app:layout_constraintBottom_toBottomOf="parent"
@ -76,8 +75,8 @@
app:layout_constraintVertical_bias="0.0" />
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:id="@+id/tlDepositAmount"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:layout_width="0dp"
android:layout_height="@dimen/margin_53"
android:layout_margin="@dimen/margin_10"
@ -94,11 +93,21 @@
android:inputType="number"
android:maxLength="12"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14"
/>
android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/txtMinAmount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_15"
android:layout_marginTop="@dimen/margin_1"
android:text="@string/minAmount"
android:textSize="@dimen/text_size_12"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tlDepositAmount" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tlInterestPayout"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
@ -106,7 +115,7 @@
android:layout_height="@dimen/margin_48"
android:layout_margin="@dimen/margin_10"
app:hintEnabled="false"
app:layout_constraintTop_toBottomOf="@+id/tlDepositAmount">
app:layout_constraintTop_toBottomOf="@+id/txtMinAmount">
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/spInterestPayout"
@ -143,6 +152,43 @@
tool:ignore="DuplicateSpeakableTextCheck,LabelFor,TextContrastCheck" />
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/minMax"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_12"
android:layout_marginTop="@dimen/margin_2"
android:text="@string/minMaxValidation"
android:textColor="@color/greyColor2"
android:textSize="@dimen/text_size_12"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tlInterestTenure" />
<!-- OR Layout -->
<TextView
android:id="@+id/ORLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_10"
android:text="@string/OR"
android:textColor="@color/black"
android:textSize="@dimen/text_size_14"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/minMax" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvTenure"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_10"
android:nestedScrollingEnabled="false"
app:layout_constraintTop_toBottomOf="@+id/ORLayout" />
<TextView
android:id="@+id/tvSwitchLabel"
style="@style/regularStyle"
@ -155,7 +201,7 @@
app:layout_constraintBottom_toBottomOf="@+id/swSeniorCitizen"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tlInterestTenure"
app:layout_constraintTop_toBottomOf="@+id/rvTenure"
app:layout_constraintVertical_bias="0.018" />
<com.google.android.material.switchmaterial.SwitchMaterial
@ -172,7 +218,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/tvSwitchLabel"
app:layout_constraintTop_toBottomOf="@+id/tlInterestTenure"
app:layout_constraintTop_toBottomOf="@+id/rvTenure"
app:layout_constraintVertical_bias="0.018" />
</androidx.constraintlayout.widget.ConstraintLayout>
@ -325,6 +371,7 @@
android:orientation="horizontal">
<TextView
android:id="@+id/txtCumulativeNon"
style="@style/regularStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"


+ 35
- 0
app/src/main/res/layout/row_dropdown.xml View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingEnd="@dimen/margin_1"
android:paddingStart="0dp">
<LinearLayout
android:id="@+id/rlParent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/txtYear"
android:layout_width="@dimen/margin_49"
android:layout_height="@dimen/margin_30"
android:gravity="center"
android:textColor="@color/black"
android:textSize="@dimen/text_size_12" />
<TextView
android:id="@+id/txtInterestRate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="@dimen/margin_2"
android:textColor="@color/black"
android:textSize="@dimen/text_size_12" />
</LinearLayout>
</LinearLayout>

+ 67
- 2
app/src/main/res/values-hi-rIN/strings.xml View File

@ -1,5 +1,7 @@
<resources>
<string name="appName">BajajFdLib</string>
<string name="bajaj">Bajaj</string>
<string name="app">App</string>
<string name="step1">Step 1</string>
<string name="step2">Step 2</string>
@ -9,7 +11,7 @@
<!-- Step 1 -->
<string name="fd">Corporate Fixed Deposits</string>
<string name="schemeRating"><![CDATA[Ratings: CRISIL AAA/Stable & ICRA AAA/Stable]]></string>
<string name="rs">Rs.</string>
<string name="rs">Rs. </string>
<string name="investmentAmount">Select Investment Amount</string>
<string name="selectInterestPayout">Select Interest Payout</string>
<string name="selectInterestTenure">Select Investment Tenure</string>
@ -24,9 +26,28 @@
<string name="deductTds">Deduct TDS (Income is taxable)</string>
<string name="nonDeductTDS">In case you are eligible for non deduction of TDS then please submit 15G/H form to Bajaj or Nivesh team</string>
<string name="nonCumulativeROI">Non- Cumulative ROI:</string>
<string name="cumulativeROI">Cumulative ROI:</string>
<string name="cumulativeText">Cumulative</string>
<string name="regularInterestPayment">Regular Interest Payment:</string>
<string name="maturityAmount">Maturity Amount:</string>
<string name="minAmount">min amount : Rs 5,000</string>
<string name="OR">OR, enter tenure in months</string>
<string name="OneYear">1 Year</string>
<string name="TwoYears">2 Years</string>
<string name="ThreeYears">3 Years</string>
<string name="FourYears">4 Years</string>
<string name="FiveYears">5 Years</string>
<string name="bajajFD">BajajFD</string>
<string name="category">InterestPayoutFreq</string>
<string name="language">EN</string>
<string name="minMaxValidation">Min, 12 months, Max. 60 months</string>
<!-- Validations -->
<string name="emptyAmount">Please enter amount</string>
<string name="validMinAmount">Entered amount should be greater than minimum amount</string>
<string name="emptyInterestPayout">Please select Interest Payout</string>
<string name="emptyInterestTenure">Please select Investment Tenure</string>
<!-- Step 2 -->
<string name="mandatoryField">All fields are mandatory other then optional</string>
@ -83,6 +104,48 @@
<string name="upto1LakhOnly">Upto Rs. 1 Lakh Only</string>
<string name="eligibleBankOption">Eligible Bank Option</string>
<!-- Validations -->
<string name="emptyMobileNumber">Please enter mobile number</string>
<string name="inValidMobileNumber">Mobile number should have at least 10 digits</string>
<string name="inValidIndianMobileNumber">Mobile number should start with 6,7,8 and 9</string>
<string name="emptyDOB">Please select date of birth</string>
<string name="emptyPAN">Please enter PAN number</string>
<string name="invalidPAN">Invalid PAN</string>
<string name="emptyTitle">Please select title</string>
<string name="emptyGender">Please select gender</string>
<string name="emptyFirstName">Please enter First Name</string>
<string name="validFirstName">Please enter valid First Name</string>
<string name="emptyMiddleName"> Please enter Middle name</string>
<string name="validMiddleName">Please enter valid Middle Name</string>
<string name="emptyLastName">Please enter Last name</string>
<string name="validLastName">Please enter valid Last Name</string>
<string name="emptyOccupation">Please select occupation</string>
<string name="emptyQualification">Please select Qualification</string>
<string name="emptyMaritalStatus">Please select marital status </string>
<string name="emptyRelation">Please select relation </string>
<string name="emptyRelationName">Please enter relation name</string>
<string name="emptyEmail">Please enter email address</string>
<string name="validEmail">Please enter valid email address</string>
<string name="emptyAddressLine1">Please enter address 1</string>
<string name="emptyAddressLine2">Please enter address 2</string>
<string name="emptyArea">Please enter area</string>
<string name="emptyCity">Please select city</string>
<string name="emptyState">Please select state</string>
<string name="emptyPinCode">Please enter PinCode</string>
<string name="validPinCode">Please enter valid PinCode</string>
<string name="emptyAccNo">Please enter valid account number</string>
<string name="emptyIFSCCode">Please enter IFSC code</string>
<string name="validIFSCCode">Please enter valid IFSC code</string>
<string name="emptyBankName">Please select bank name</string>
<string name="emptyBranchName">Please enter branch name</string>
<string name="emptyPaymentMode">Please select payment mode</string>
<!-- Step Three -->
<string name="uploadKycDocuments">Upload KYC Documents</string>
@ -132,4 +195,6 @@
<string name="onceYouClick">Once you click on PAY, your order will be placed and you will be redirected to payment gateway.</string>
<string name="seniorCitizen">Senior Citizen</string>
<string name="nonSeniorCitizen">Non Senior Citizen</string>
</resources>

+ 1
- 0
app/src/main/res/values/dimens.xml View File

@ -58,6 +58,7 @@
<dimen name="margin_46">46dp</dimen>
<dimen name="margin_47">47dp</dimen>
<dimen name="margin_48">48dp</dimen>
<dimen name="margin_49">49dp</dimen>
<dimen name="margin_50">50dp</dimen>
<dimen name="margin_53">53dp</dimen>
<dimen name="margin_54">54dp</dimen>


+ 71
- 1
app/src/main/res/values/strings.xml View File

@ -1,5 +1,7 @@
<resources>
<string name="appName">BajajFdLib</string>
<string name="bajaj">Bajaj</string>
<string name="app">App</string>
<string name="step1">Step 1</string>
<string name="step2">Step 2</string>
@ -9,7 +11,7 @@
<!-- Step 1 -->
<string name="fd">Corporate Fixed Deposits</string>
<string name="schemeRating"><![CDATA[Ratings: CRISIL AAA/Stable & ICRA AAA/Stable]]></string>
<string name="rs">Rs.</string>
<string name="rs">Rs. </string>
<string name="investmentAmount">Select Investment Amount</string>
<string name="selectInterestPayout">Select Interest Payout</string>
<string name="selectInterestTenure">Select Investment Tenure</string>
@ -24,8 +26,28 @@
<string name="deductTds">Deduct TDS (Income is taxable)</string>
<string name="nonDeductTDS">In case you are eligible for non deduction of TDS then please submit 15G/H form to Bajaj or Nivesh team</string>
<string name="nonCumulativeROI">Non- Cumulative ROI:</string>
<string name="cumulativeROI">Cumulative ROI:</string>
<string name="cumulativeText">Cumulative</string>
<string name="regularInterestPayment">Regular Interest Payment:</string>
<string name="maturityAmount">Maturity Amount:</string>
<string name="minAmount">min amount : Rs 5,000</string>
<string name="OR">OR, enter tenure in months</string>
<string name="OneYear">1 Year</string>
<string name="TwoYears">2 Years</string>
<string name="ThreeYears">3 Years</string>
<string name="FourYears">4 Years</string>
<string name="FiveYears">5 Years</string>
<string name="bajajFD">BajajFD</string>
<string name="category">InterestPayoutFreq</string>
<string name="language">EN</string>
<string name="minMaxValidation">Min. 12 months, Max. 60 months</string>
<!-- Validations -->
<string name="emptyAmount">Please enter amount</string>
<string name="validMinAmount">Entered amount should be greater than minimum amount</string>
<string name="emptyInterestPayout">Please select Interest Payout</string>
<string name="emptyInterestTenure">Please select Investment Tenure</string>
<!-- Step 2 -->
@ -83,6 +105,53 @@
<string name="upto1LakhOnly">Upto Rs. 1 Lakh Only</string>
<string name="eligibleBankOption">Eligible Bank Option</string>
<!-- Validations -->
<string name="emptyMobileNumber">Please enter mobile number</string>
<string name="inValidMobileNumber">Mobile number should have at least 10 digits</string>
<string name="inValidIndianMobileNumber">Mobile number should start with 6,7,8 and 9</string>
<string name="emptyDOB">Please select date of birth</string>
<string name="emptyPAN">Please enter PAN number</string>
<string name="invalidPAN">Invalid PAN</string>
<string name="emptyTitle">Please select title</string>
<string name="emptyGender">Please select gender</string>
<string name="emptyFirstName">Please enter First Name</string>
<string name="validFirstName">Please enter valid First Name</string>
<string name="emptyMiddleName"> Please enter Middle name</string>
<string name="validMiddleName">Please enter valid Middle Name</string>
<string name="emptyLastName">Please enter Last name</string>
<string name="validLastName">Please enter valid Last Name</string>
<string name="emptyEmail">Please enter email address</string>
<string name="validEmail">Please enter valid email address</string>
<string name="emptyOccupation">Please select occupation</string>
<string name="emptyQualification">Please select Qualification</string>
<string name="emptyMaritalStatus">Please select marital status </string>
<string name="emptyRelation">Please select relation </string>
<string name="emptyRelationName">Please enter relation name</string>
<string name="emptyAddressLine1">Please enter address 1</string>
<string name="emptyAddressLine2">Please enter address 2</string>
<string name="emptyArea">Please enter area</string>
<string name="emptyCity">Please select city</string>
<string name="emptyState">Please select state</string>
<string name="emptyPinCode">Please enter PinCode</string>
<string name="validPinCode">Please enter valid PinCode</string>
<string name="emptyAccNo">Please enter account number</string>
<string name="emptyIFSCCode">Please enter IFSC code</string>
<string name="validIFSCCode">Please enter valid IFSC code</string>
<string name="emptyBranchName">Please enter branch name</string>
<string name="emptyBankName">Please select bank name</string>
<string name="emptyPaymentMode">Please select payment mode</string>
<!-- Step Three -->
<string name="uploadKycDocuments">Upload KYC Documents</string>
@ -133,6 +202,7 @@
<string name="seniorCitizen">Senior Citizen</string>
<string name="nonSeniorCitizen">Non Senior Citizen</string>
<string-array name="interestPayoutList">
<item>On Maturity</item>
<item>Monthly</item>


Loading…
Cancel
Save

Powered by TurnKey Linux.