diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml index f174d17..d5e1f0e 100644 --- a/.idea/dbnavigator.xml +++ b/.idea/dbnavigator.xml @@ -11,6 +11,9 @@ + + + diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/SpinnerAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SpinnerAdapter.kt new file mode 100644 index 0000000..a4d2eef --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SpinnerAdapter.kt @@ -0,0 +1,35 @@ +package com.nivesh.production.bajajfd.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.TextView +import com.nivesh.production.bajajfd.R +import com.nivesh.production.bajajfd.model.GetCodes + + +internal class SpinnerAdapter( + context: Context, + private var listItems: List +) : + ArrayAdapter(context, R.layout.spinner_dropdown, listItems) { + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View { + var v = convertView + if (v == null) { + val inflater = LayoutInflater.from(context) + v = inflater.inflate(R.layout.spinner_dropdown, parent, false) + } + val lbl = v!!.findViewById(R.id.tvText) as TextView + val getCode : GetCodes = listItems[position] + lbl.text = getCode.Value + return v + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt index d05b6e6..55a39c7 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt @@ -3,4 +3,8 @@ package com.nivesh.production.bajajfd.model data class GetCodes( val Label: String, val Value: String -) \ No newline at end of file +) { + override fun toString(): String { + return Value + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ROIDataList.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ROIDataList.kt index aaec798..b41df97 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/ROIDataList.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ROIDataList.kt @@ -4,4 +4,8 @@ data class ROIDatalist( val ROI: Double, val Tenure: String, val Type: String -) \ No newline at end of file +) { + override fun toString(): String { + return Tenure.plus(" Months ").plus(" | ").plus(ROI).plus(" % ") + } +} \ 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 1562556..a8d2bab 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt @@ -1,8 +1,6 @@ package com.nivesh.production.bajajfd.ui.activity -import android.graphics.Color import android.graphics.drawable.Drawable -import android.graphics.drawable.GradientDrawable import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity @@ -20,7 +18,8 @@ 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.util.Colors +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 @@ -32,7 +31,7 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel lateinit var viewModel: BajajFDViewModel - lateinit var listOfFrequency : List + lateinit var listOfFrequency: List override fun onCreate(savedInstanceState: Bundle?) { @@ -46,11 +45,15 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { setContentView(binding.root) //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] + 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] listOfFrequency = ArrayList() getCodeApi() @@ -59,6 +62,45 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { } } + private fun getCodeApi() { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = "BajajFD" + getCodeRequest.Category = "InterestPayoutFreq" + getCodeRequest.Language = "EN" + getCodeRequest.InputValue = "" + val codeRequest: String = Gson().toJson(getCodeRequest); + val requestBody = codeRequest.toRequestBody("application/json".toMediaTypeOrNull()) + viewModel.getCode(requestBody) + viewModel.getRatesMutableData.observe(this) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + listOfFrequency = getCodeResponse.Response.GetCodesList + setViewPager() + } + // 650 -> refreshToken() + else -> {} + } + } + } + + is Resource.Error -> { + response.message?.let { message -> + Log.e(" ", "An error occurred:$message") + } + } + is Resource.Loading -> { + + } + } + } + } + private fun setViewPager() { // steps setting setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape()) @@ -136,63 +178,6 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { } - private fun getCodeApi() { - val getCodeRequest = GetCodeRequest() - getCodeRequest.ProductName = "BajajFD" - getCodeRequest.Category = "InterestPayoutFreq" - getCodeRequest.Language = "EN" - getCodeRequest.InputValue = "" - val codeRequest : String = Gson().toJson(getCodeRequest); - val requestBody = codeRequest.toRequestBody("application/json".toMediaTypeOrNull()) - viewModel.getCode(requestBody) - viewModel.getRatesMutableData.observe(this) { response -> - when (response) { - is Resource.Success -> { - Log.e("response", "-->"+response) - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> - when (code) { - 200 -> { - listOfFrequency = getCodeResponse.Response.GetCodesList - setViewPager() - } - // 650 -> refreshToken() - else -> {} - } - } - } - - is Resource.Error -> { - response.message?.let { message -> - Log.e(" ", "An error occurred:$message") - } - } - is Resource.Loading -> { - - } - } - } - } - - // set Default Step - private fun defaultShape(): GradientDrawable { - val shape = GradientDrawable() - shape.shape = GradientDrawable.OVAL - shape.setColor(Color.WHITE) - shape.setStroke(6, Color.parseColor(Colors.colorDefault)) - return shape - } - - // set Selected Step - private fun selectedShape(): GradientDrawable { - val shape = GradientDrawable() - shape.shape = GradientDrawable.OVAL - shape.setColor(Color.parseColor(Colors.colorDefault)) - shape.setStroke(6, Color.parseColor(Colors.colorDefault)) - return shape - } - // set background for selected/ default step private fun setBackground( drawable: Drawable?, 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 c4e1e1b..36dcfdf 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 @@ -34,7 +34,7 @@ class StepOneBajajFDFragment : Fragment() { private lateinit var bajajFDInterface: BajajFDInterface private lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel private lateinit var rgMaturity: RadioButton - public lateinit var listOfTenure : List + private lateinit var listOfTenure: List companion object { fun getInstance(fdInterface: BajajFDInterface): StepOneBajajFDFragment { @@ -67,17 +67,28 @@ class StepOneBajajFDFragment : Fragment() { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { - binding.tlDepositAmount.error = null + if (binding.tlDepositAmount.error != null) { + binding.tlDepositAmount.error = null + } } }) // Frequency if ((activity as BajajFdMainActivity).listOfFrequency.isNotEmpty()) { - val adapter = ArrayAdapter(activity as BajajFdMainActivity, R.layout.spinner_dropdown, (activity as BajajFdMainActivity).listOfFrequency) + // val adapter = SpinnerAdapter( activity as BajajFdMainActivity,(activity as BajajFdMainActivity).listOfFrequency) + + val adapter = ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + (activity as BajajFdMainActivity).listOfFrequency + ) binding.spInterestPayout.setAdapter(adapter) binding.spInterestPayout.setOnItemClickListener { parent, view, position, id -> - binding.tlInterestPayout.error = null - binding.tvFrequency.text = (activity as BajajFdMainActivity).listOfFrequency[position].Label + if (binding.tlInterestPayout.error != null) { + binding.tlInterestPayout.error = null + } + binding.tvFrequency.text = + (activity as BajajFdMainActivity).listOfFrequency[position].Value getRatesApi() } } @@ -85,7 +96,7 @@ class StepOneBajajFDFragment : Fragment() { // Tenure if (listOfTenure.isNotEmpty()) { binding.spTenure.setOnItemClickListener { parent, view, position, id -> - + Log.e("Tenure", "--->".plus(listOfTenure[position].Tenure)) } } @@ -140,7 +151,7 @@ class StepOneBajajFDFragment : Fragment() { getCodeRequest.Category = "InterestPayoutFreq" getCodeRequest.Language = "EN" getCodeRequest.InputValue = "" - val codeRequest : String = Gson().toJson(getCodeRequest); + val codeRequest: String = Gson().toJson(getCodeRequest) val requestBody = codeRequest.toRequestBody("application/json".toMediaTypeOrNull()) stepOneBajajFDViewModel.getCode(requestBody) stepOneBajajFDViewModel.getRatesMutableData.observe(this) { response -> @@ -172,14 +183,13 @@ class StepOneBajajFDFragment : Fragment() { } - private fun getRatesApi() { val getRatesRequest = GetRatesRequest() getRatesRequest.fdProvider = "Bajaj" getRatesRequest.frequency = binding.spInterestPayout.text.toString() - if (binding.swSeniorCitizen.isChecked){ + if (binding.swSeniorCitizen.isChecked) { getRatesRequest.type = "Non Senior Citizen" - }else{ + } else { getRatesRequest.type = "Senior Citizen" } stepOneBajajFDViewModel.getRates(getRatesRequest) @@ -187,11 +197,11 @@ class StepOneBajajFDFragment : Fragment() { when (response) { is Resource.Success -> { val getRatesResponse: GetRatesResponse = - Gson().fromJson(response.toString(), GetRatesResponse::class.java) + Gson().fromJson(response.data.toString(), GetRatesResponse::class.java) getRatesResponse.Response.StatusCode.let { code -> when (code) { 200 -> getRatesData(getRatesResponse) - // 650 -> refreshToken() + // 650 -> refreshToken() else -> {} } } @@ -218,7 +228,12 @@ class StepOneBajajFDFragment : Fragment() { private fun getRatesData(getRatesResponse: GetRatesResponse) { listOfTenure = getRatesResponse.Response.ROIDatalist - val adapter = ArrayAdapter(activity as BajajFdMainActivity, R.layout.spinner_dropdown, listOfTenure) + val adapter = + ArrayAdapter( + activity as BajajFdMainActivity, + R.layout.spinner_dropdown, + listOfTenure + ) binding.spTenure.setAdapter(adapter) } diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt index b48c13c..c17c551 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt @@ -3,6 +3,8 @@ package com.nivesh.production.bajajfd.util import android.app.Activity import android.app.AlertDialog import android.content.Context +import android.graphics.Color +import android.graphics.drawable.GradientDrawable import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.os.Build @@ -106,6 +108,24 @@ class Common { builder.show() } + // set Default Step + fun defaultShape(): GradientDrawable { + val shape = GradientDrawable() + shape.shape = GradientDrawable.OVAL + shape.setColor(Color.WHITE) + shape.setStroke(6, Color.parseColor(Colors.colorDefault)) + return shape + } + + // set Selected Step + fun selectedShape(): GradientDrawable { + val shape = GradientDrawable() + shape.shape = GradientDrawable.OVAL + shape.setColor(Color.parseColor(Colors.colorDefault)) + shape.setStroke(6, Color.parseColor(Colors.colorDefault)) + return shape + } + fun commonErrorMethod( inputText: TextInputEditText, inputError: TextInputLayout, 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 b2bcb06..89da32b 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_one.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_one.xml @@ -82,8 +82,6 @@ android:layout_height="@dimen/margin_53" android:layout_margin="@dimen/margin_10" android:hint="@string/investmentAmount" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvFdRating"> \ No newline at end of file