diff --git a/app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt b/app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt index 4245071..22e3de5 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt @@ -3,4 +3,16 @@ package com.nivesh.production.bajajfd import android.app.Application class BajajApplication : Application() { + private var mInstance: BajajApplication? = null + // private val mRequestQueue: RequestQueue? = null + + override fun onCreate() { + super.onCreate() + mInstance = this; + } + + @Synchronized + fun getInstanceApp(): BajajApplication? { + return mInstance + } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/CustomerListAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/CustomerListAdapter.kt new file mode 100644 index 0000000..ff19bee --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/CustomerListAdapter.kt @@ -0,0 +1,74 @@ +package com.nivesh.production.bajajfd.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.nivesh.production.bajajfd.R +import com.nivesh.production.bajajfd.model.GetCodes + +class CustomerListAdapter( + private val bankList: List? +) : RecyclerView.Adapter() { + inner class BankListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val bankSelector: ImageView = itemView.findViewById(R.id.bankSelector) + val tvBankName: TextView = itemView.findViewById(R.id.tvBankName) + } + + private var checkedPosition: Int = -2 + + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): BankListViewHolder { + return BankListViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.item_customer_list_preview, + parent, + false + ) + ) + } + + override fun onBindViewHolder(holder: BankListViewHolder, position: Int) { + val bankList = bankList?.get(position) + if (bankList != null) { + holder.itemView.apply { + holder.tvBankName.text = bankList.Value + setOnClickListener { + onItemClickListener?.let { + it(bankList) + + holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) + if (checkedPosition != holder.adapterPosition) { + notifyItemChanged(checkedPosition) + checkedPosition = holder.adapterPosition + + } + } + } + } + } + } + + override fun getItemCount(): Int { + return bankList?.size!! + } + + private var onItemClickListener: ((GetCodes) -> Unit)? = null + + fun setOnItemClickListener(listener: (GetCodes) -> Unit) { + onItemClickListener = listener + } + + + fun getSelected(): GetCodes? { + return if (checkedPosition != -1) { + bankList?.get(checkedPosition) + } else null + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/PaymentModeAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/PaymentModeAdapter.kt new file mode 100644 index 0000000..0bada10 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/PaymentModeAdapter.kt @@ -0,0 +1,88 @@ +package com.nivesh.production.bajajfd.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.nivesh.production.bajajfd.R +import com.nivesh.production.bajajfd.model.GetCodes + +class PaymentModeAdapter( + private val bankList: List?, + private val selectedAccount: String? = null +) : RecyclerView.Adapter() { + inner class BankListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val bankSelector: ImageView = itemView.findViewById(R.id.bankSelector) + val tvBankName: TextView = itemView.findViewById(R.id.tvBankName) + } + + private var checkedPosition: Int = -2 + + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): BankListViewHolder { + return BankListViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.item_payment_list_preview, + parent, + false + ) + ) + } + + override fun onBindViewHolder(holder: BankListViewHolder, position: Int) { + val bankList = bankList?.get(position) + if (bankList != null) { + holder.itemView.apply { + holder.tvBankName.text = bankList.Value + + if (selectedAccount == bankList.Value && checkedPosition == -2 + ) { + holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) + checkedPosition = holder.adapterPosition + } else if (checkedPosition == -1) { + holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline) + } else if (checkedPosition == holder.adapterPosition) { + holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) + } else { + holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline) + } + + setOnClickListener { + onItemClickListener?.let { + it(bankList) + + holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) + if (checkedPosition != holder.adapterPosition) { + notifyItemChanged(checkedPosition) + checkedPosition = holder.adapterPosition + + } + } + } + } + } + } + + override fun getItemCount(): Int { + return bankList?.size!! + } + + private var onItemClickListener: ((GetCodes) -> Unit)? = null + + fun setOnItemClickListener(listener: (GetCodes) -> Unit) { + onItemClickListener = listener + } + + + fun getSelected(): GetCodes? { + return if (checkedPosition != -1) { + bankList?.get(checkedPosition) + } else null + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/SectionsPagerAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SectionsPagerAdapter.kt index d024110..a576253 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/adapter/SectionsPagerAdapter.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SectionsPagerAdapter.kt @@ -1,30 +1,19 @@ package com.nivesh.production.bajajfd.adapter -import android.content.Context import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager -import androidx.fragment.app.FragmentPagerAdapter -class SectionsPagerAdapter(private val context: Context, fm: FragmentManager) : - FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { - - private var fragmentList: MutableList = ArrayList() +class SectionsPagerAdapter(private val fm: FragmentManager, private val fragments: Array, private val NumberOfTabs: Int) : SmartFragmentStatePagerAdapter(fm) { override fun getItem(position: Int): Fragment { - return fragmentList[position] + return fragments[position] } - override fun getCount(): Int { - return fragmentList.size + override fun getPageTitle(position: Int): CharSequence? { + return null } - fun addFragment(fragment: Fragment) { - try { - if (!fragment.isAdded) { - fragmentList.add(fragment) - } - } catch (e: Exception) { - e.printStackTrace() - } + override fun getCount(): Int { + return NumberOfTabs } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt new file mode 100644 index 0000000..44ac534 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt @@ -0,0 +1,29 @@ +package com.nivesh.production.bajajfd.adapter + +import android.util.SparseArray +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentManager +import androidx.fragment.app.FragmentStatePagerAdapter + +abstract class SmartFragmentStatePagerAdapter(fragmentManager: FragmentManager) : FragmentStatePagerAdapter(fragmentManager) { + val registeredFragments = SparseArray() + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val fragment = super.instantiateItem(container, position) as Fragment + registeredFragments.put(position, fragment) + return fragment + } + + // Unregister when the item is inactive + override fun destroyItem(container: View, position: Int, `object`: Any) { + registeredFragments.remove(position) + super.destroyItem(container, position, `object`) + } + + // Returns the fragment for the position (if instantiated) + fun getRegisteredFragment(position: Int): Fragment? { + return registeredFragments[position] + } +} diff --git a/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt b/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt index d89586a..aaa5a11 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt @@ -26,7 +26,7 @@ class ApiClient { .client(client) .build() } - val getApiClient by lazy { + val getApiClient: ApiInterface by lazy { client.create(ApiInterface::class.java) } } 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 05f0c73..ec975fa 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 @@ -40,7 +40,7 @@ interface ApiInterface { @POST("WebApi_Bajaj/api/GetFDDetails") suspend fun getFDDetails( - @Body requestBody: RequestBody, + @Body requestBody: GetFDDetailsRequest, @Header("token") token: String ): Response @@ -91,7 +91,7 @@ interface ApiInterface { suspend fun getFDStepsCount( @Body fdStepsCountRequest: FDStepsCountRequest, @Header("token") token: String - ): Response + ): Response @POST("WebApi/api/GetClientDetailV2_S") suspend fun getClientDetails( diff --git a/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt new file mode 100644 index 0000000..e976e20 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt @@ -0,0 +1,8 @@ +package com.nivesh.production.bajajfd.interfaces + +import com.nivesh.production.bajajfd.model.CreateFDApplicationResponse + +interface SendData { + fun sendDataFragment(message: CreateFDApplicationResponse, currentItem: Int) + +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/Errors.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/Errors.kt new file mode 100644 index 0000000..a2c80e2 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/Errors.kt @@ -0,0 +1,6 @@ +package com.nivesh.production.bajajfd.model + +data class Errors( + val ErrorCode: Int, + val ErrorMessage: String +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/FDDataResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/FDDataResponse.kt new file mode 100644 index 0000000..325e7e6 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/FDDataResponse.kt @@ -0,0 +1,12 @@ +package com.nivesh.production.bajajfd.model + +data class FDDataResponse( + val FDAmount: Double, + val Frequency: String, + val ParameterName: String, + val PaymentUrl: String, + val RateOfInterest: Double, + val Tenure: Int, + val UniqueId: String, + val Value: String +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsRequest.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsRequest.kt new file mode 100644 index 0000000..7cde245 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsRequest.kt @@ -0,0 +1,7 @@ +package com.nivesh.production.bajajfd.model + +data class GetFDDetailsRequest( + var FDProvider: String? = "", + var NiveshClientCode: String? = "", + var UniqueId: String? = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsResponse.kt new file mode 100644 index 0000000..15f4af7 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/GetFDDetailsResponse.kt @@ -0,0 +1,5 @@ +package com.nivesh.production.bajajfd.model + +data class GetFDDetailsResponse( + val Response: ResponseXXXXXXXXXXXX +) \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/Response.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/Response.kt index 64ebb11..c479c7f 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/Response.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/Response.kt @@ -1,5 +1,7 @@ +import com.nivesh.production.bajajfd.model.Errors + data class Response( - val Errors: List, + val Errors: List, val Message: String, var ROIDatalist: MutableList, val Status: String, diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseX.kt index e81f28d..0d08d82 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseX.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseX.kt @@ -1,7 +1,7 @@ package com.nivesh.production.bajajfd.model data class ResponseX( - val Errors: List, + val Errors: List, val GetCodesList: List, val Message: String, val Status: String, diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXX.kt index 69077da..1ec3e62 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXX.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXX.kt @@ -1,7 +1,7 @@ package com.nivesh.production.bajajfd.model data class ResponseXX( - val Errors: Any, + val Errors: List, val MaturityAmount: Double, val Message: String, val Status: String, diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXX.kt index 89521d8..0c37922 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXX.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXX.kt @@ -1,7 +1,7 @@ package com.nivesh.production.bajajfd.model data class ResponseXXXX( - val Errors: Any, + val Errors: List, val Message: String, val Status: String, val StatusCode: Int, diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXX.kt index b674b23..a48dfa5 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXX.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXX.kt @@ -2,7 +2,7 @@ package com.nivesh.production.bajajfd.model data class ResponseXXXXXXXX( val BankList: List, - val Errors: List, + val Errors: List, val Message: String, val Status: String, val StatusCode: Int diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXX.kt index 67165a6..128fad0 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXX.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXX.kt @@ -1,7 +1,7 @@ package com.nivesh.production.bajajfd.model data class ResponseXXXXXXXXX( - val message: Any, + 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/model/ResponseXXXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXX.kt index 0653d1d..cf7ddc5 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXX.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXX.kt @@ -1,7 +1,7 @@ package com.nivesh.production.bajajfd.model data class ResponseXXXXXXXXXXX( - val Errors: Any, + val Errors: List, val FDCreationDetailsResponse: FDCreationDetailsResponse, val Message: String, val Status: String, diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt index 972a79e..4bacf38 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt @@ -2,6 +2,7 @@ package com.nivesh.production.bajajfd.model data class ResponseXXXXXXXXXXXX( val Errors: Any, + val FDDataResponse: FDDataResponse, val Message: String, val Status: String, val StatusCode: Int 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 eaa60f1..e9a49ae 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 @@ -32,8 +32,8 @@ class MainRepository constructor(private val apiInterface: ApiInterface) { suspend fun saveFDOtherDataResponse(getRatesRequest: GetRatesRequest, token: String) = apiInterface.getRates(getRatesRequest, token) - suspend fun getFDDetailsResponse(getRatesRequest: GetRatesRequest, token: String) = - apiInterface.getRates(getRatesRequest, token) + suspend fun getFDDetailsResponse(getRatesRequest: GetFDDetailsRequest, token: String) = + apiInterface.getFDDetails(getRatesRequest, token) suspend fun updateFDPaymentStatusResponse(getRatesRequest: GetRatesRequest, token: String) = apiInterface.getRates(getRatesRequest, token) diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt index 3cdc734..b84da5e 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 @@ -3,11 +3,10 @@ package com.nivesh.production.bajajfd.ui.activity import android.graphics.drawable.Drawable import android.os.Bundle import android.util.Log -import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.google.gson.Gson -import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.adapter.SectionsPagerAdapter import com.nivesh.production.bajajfd.api.ApiClient import com.nivesh.production.bajajfd.databinding.ActivityBajajFdBinding @@ -18,12 +17,15 @@ import com.nivesh.production.bajajfd.ui.fragment.* import com.nivesh.production.bajajfd.ui.providerfactory.* import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common.Companion.defaultShape +import com.nivesh.production.bajajfd.util.Common.Companion.getDate import com.nivesh.production.bajajfd.util.Common.Companion.selectedShape +import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.* -class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { + +class BajajFdMainActivity : BaseActivity(), BajajFDInterface { lateinit var binding: ActivityBajajFdBinding private lateinit var viewModel: BajajFDViewModel @@ -43,7 +45,9 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { var nomineeGuardianDetails: NomineeGuardianDetails var getClientDetailsResponse: getClientDetailsResponse - var stepCount : Int = 0 + private var stepCount: Int = 0 + private lateinit var sectionsPagerAdapter : SectionsPagerAdapter + private lateinit var fragments: Array override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -105,7 +109,7 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { private fun getStepsCountApi() { val fdStepsCount = FDStepsCountRequest() - fdStepsCount.FDProvider = getString(R.string.bajaj) + fdStepsCount.FDProvider = getString(com.nivesh.production.bajajfd.R.string.bajaj) fdStepsCount.NiveshClientCode = "8872" viewModel.getStepsCount(fdStepsCount, token) viewModel.getStepsCountMutableData.observe(this) { response -> @@ -120,17 +124,19 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { stepCount = stepsCountResponse.Response.StepsCount getClientDetailsApi(stepsCountResponse.Response.StepsCount) } - // 650 -> refreshToken() + 650 -> refreshToken(fdStepsCount) else -> { - + showDialogValidation( + this@BajajFdMainActivity, + stepsCountResponse.Response.Errors[0].ErrorMessage + ) } } } } - is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + showDialogValidation(this@BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -140,24 +146,31 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { } } + private fun refreshToken(fdStepsCount: FDStepsCountRequest) { + if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { + + } + } + + private fun getClientDetailsApi(stepsCount: Int) { if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { val getClientDetailsRequest = getClientDetailsRequest() getClientDetailsRequest.client_code = "8872" - getClientDetailsRequest.AppOrWeb = getString(R.string.app) + getClientDetailsRequest.AppOrWeb = getString(com.nivesh.production.bajajfd.R.string.app) getClientDetailsRequest.sub_broker_code = "1038" val userRequest = UserRequest() userRequest.UID = 19060 userRequest.IPAddress = "" - userRequest.Source = getString(R.string.source) - userRequest.AppOrWeb = getString(R.string.app) + userRequest.Source = getString(com.nivesh.production.bajajfd.R.string.source) + userRequest.AppOrWeb = getString(com.nivesh.production.bajajfd.R.string.app) userRequest.LoggedInRoleId = 5 val deviceInfo = DeviceInfo() deviceInfo.device_id = "" deviceInfo.device_id_for_UMSId = "" - deviceInfo.device_type = getString(R.string.app) + deviceInfo.device_type = getString(com.nivesh.production.bajajfd.R.string.app) deviceInfo.device_model = "" deviceInfo.device_token = "" deviceInfo.device_name = "" @@ -183,14 +196,16 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { checkFDCKYCApi() } // 650 -> refreshToken() - else -> {} + else -> { + showDialogValidation(this@BajajFdMainActivity, response.message) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + showDialogValidation(this@BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -206,17 +221,28 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { // steps setting setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape()) + if (stepCount == 3) { + fragments = arrayOf( + StepOneBajajFDFragment.getInstance(this), + StepTwoBajajFDFragment.getInstance(this), + StepFourBajajFDFragment.getInstance(this), + StepFiveBajajFDFragment.getInstance(this) + ) + } else if (stepCount == 4) { + fragments = arrayOf( + StepOneBajajFDFragment.getInstance(this), + StepTwoBajajFDFragment.getInstance(this), + StepThreeBajajFDFragment.getInstance(this), + StepFourBajajFDFragment.getInstance(this), + StepFiveBajajFDFragment.getInstance(this) + ) + } + // set viewPager - val sectionsPagerAdapter = - SectionsPagerAdapter(this@BajajFdMainActivity, supportFragmentManager) + sectionsPagerAdapter = + SectionsPagerAdapter(supportFragmentManager, fragments, stepsCount) val viewPager: ViewPager = binding.viewPager - sectionsPagerAdapter.addFragment(StepOneBajajFDFragment.getInstance(this@BajajFdMainActivity)) - sectionsPagerAdapter.addFragment(StepTwoBajajFDFragment.getInstance(this@BajajFdMainActivity)) - if (stepsCount == 4) { - sectionsPagerAdapter.addFragment(StepThreeBajajFDFragment.getInstance(this@BajajFdMainActivity)) - } - sectionsPagerAdapter.addFragment(StepFourBajajFDFragment.getInstance(this@BajajFdMainActivity)) - sectionsPagerAdapter.addFragment(StepFiveBajajFDFragment.getInstance(this@BajajFdMainActivity)) + viewPager.adapter = sectionsPagerAdapter viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { @@ -282,12 +308,13 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { } private fun checkFDCKYCApi() { - if (Common.isNetworkAvailable(this@BajajFdMainActivity)){ + if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { if (getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CM_MOBILE?.isNotEmpty()!! && getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB?.isNotEmpty()!! && getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PAN?.isNotEmpty()!! && getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE?.isNotEmpty()!!) { val checkFDKYCRequest = CheckFDKYCRequest() - checkFDKYCRequest.Mobile = getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CM_MOBILE + checkFDKYCRequest.Mobile = + getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CM_MOBILE checkFDKYCRequest.DOB = - getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB + getDate(getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB!!) checkFDKYCRequest.PAN = getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PAN checkFDKYCRequest.NiveshClientCode = @@ -309,14 +336,19 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { fdInvestmentDetails.CustomerType = "" } // 650 -> refreshToken() - else -> {} + else -> { + showDialogValidation( + this@BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + showDialogValidation(this@BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -366,7 +398,7 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { override fun stepThreeApi(data: CreateFDRequest) { Log.e("stepThreeApi", " response ---> $data") // call create fd api - createFDApi(data, 3) + createFDApi(data, 3, "3") } // step 4 response @@ -375,15 +407,15 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { binding.viewPager.currentItem = 4 } - private fun createFDApi(data: CreateFDRequest, currentItem: Int) { - if (Common.isNetworkAvailable(this@BajajFdMainActivity)){ + private fun createFDApi(data: CreateFDRequest, currentItem: Int, step: String) { + if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { viewModel.createFDApi(data, token) viewModel.getFDResponseMutableData.observe(this) { response -> when (response) { is Resource.Success -> { Log.e("response", "-->$response") - val createFDApplicationResponse : CreateFDApplicationResponse = + val createFDApplicationResponse: CreateFDApplicationResponse = Gson().fromJson( response.data?.toString(), CreateFDApplicationResponse::class.java @@ -392,17 +424,31 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { when (code) { 200 -> { binding.viewPager.currentItem = currentItem - StepFourBajajFDFragment.getInstance(this).getFDData(createFDApplicationResponse) + if (step == "2"){ + val stepThreeBajajFDFragment: StepThreeBajajFDFragment = + sectionsPagerAdapter.getRegisteredFragment(stepCount - 1) as StepThreeBajajFDFragment + stepThreeBajajFDFragment.displayReceivedData(createFDApplicationResponse) + } + else{ + val stepFourFDFragment: StepFourBajajFDFragment = + sectionsPagerAdapter.getRegisteredFragment(stepCount - 1) as StepFourBajajFDFragment + stepFourFDFragment.displayReceivedData(createFDApplicationResponse) + } } // 650 -> refreshToken() - else -> {} + else -> { + showDialogValidation( + this@BajajFdMainActivity, + createFDApplicationResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + showDialogValidation(this@BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -410,11 +456,6 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { } } } - - } - } - - } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BaseActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BaseActivity.kt new file mode 100644 index 0000000..0d3d811 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BaseActivity.kt @@ -0,0 +1,13 @@ +package com.nivesh.production.bajajfd.ui.activity + +import android.app.Activity +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity + +open class BaseActivity : AppCompatActivity() { + private lateinit var mActivity: Activity + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + mActivity = this + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/BaseFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/BaseFragment.kt new file mode 100644 index 0000000..4295636 --- /dev/null +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/BaseFragment.kt @@ -0,0 +1,21 @@ +package com.nivesh.production.bajajfd.ui.fragment + +import android.content.Context +import android.os.Bundle +import androidx.fragment.app.Fragment +import com.nivesh.production.bajajfd.ui.activity.BaseActivity + +open class BaseFragment : Fragment() { + protected var mActivity: BaseActivity? = null + override fun onAttach(context: Context) { + super.onAttach(context) + if (context is BaseActivity) { + mActivity = context + } else try { + throw ClassCastException("You need to extend BaseActivity to calling activity.") + } catch (e: Exception) { + e.printStackTrace() + } + } + +} 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 923dcab..feff452 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 @@ -6,14 +6,13 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager import com.google.gson.Gson import com.nivesh.production.bajajfd.R +import com.nivesh.production.bajajfd.adapter.CustomerListAdapter import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFourBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface -import com.nivesh.production.bajajfd.model.CreateFDApplicationResponse -import com.nivesh.production.bajajfd.model.GetCodeRequest -import com.nivesh.production.bajajfd.model.GetCodeResponse -import com.nivesh.production.bajajfd.model.GetRatesRequest +import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation @@ -21,12 +20,12 @@ import com.nivesh.production.bajajfd.util.Constants import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepFourBajajFDViewModel -class StepFourBajajFDFragment : Fragment() { +class StepFourBajajFDFragment : BaseFragment() { private lateinit var stepFourBajajFDViewModel: StepFourBajajFDViewModel private var _binding: FragmentBajajfdStepFourBinding? = null private val binding get() = _binding!! - var uniqueId : String? = "" + private var uniqueId: String? = "" private lateinit var bajajFDInterface: BajajFDInterface @@ -42,7 +41,6 @@ class StepFourBajajFDFragment : Fragment() { bajajFDInterface = bajajFDInterfaces } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -53,57 +51,41 @@ class StepFourBajajFDFragment : Fragment() { stepFourBajajFDViewModel = (activity as BajajFdMainActivity).stepFourBajajFDViewModel - binding.tvInvestedAmount.text = "" - binding.tvTenure.text = "" - binding.tvInterestPayout.text = "" - binding.tvRateOfInterest.text = "" - - - binding.swDirectorBajajFinance.setOnCheckedChangeListener { _, _ -> - - } - binding.swPromoterBajajFinance.setOnCheckedChangeListener { _, _ -> - - } - binding.swRelativeDirector.setOnCheckedChangeListener { _, _ -> - - } - binding.swShareholder.setOnCheckedChangeListener { _, _ -> - - } - binding.swPoliticallyExposed.setOnCheckedChangeListener { _, _ -> - - } - binding.swCitizen.setOnCheckedChangeListener { _, _ -> - - } - binding.checkBox.setOnCheckedChangeListener { _, _ -> } - binding.btnNext.setOnClickListener { if (binding.checkBox.isChecked) { bajajFDInterface.stepFourApi("stepFourResponse") - }else{ - showDialogValidation(activity as BajajFdMainActivity, resources.getString(R.string.validTermsConditions)) + } else { + showDialogValidation( + activity as BajajFdMainActivity, + resources.getString(R.string.validTermsConditions) + ) } } + + binding.btnBack.setOnClickListener{ + (activity as BajajFdMainActivity).binding.viewPager.currentItem = 2 + } return root } - fun getFDData(createFDApplicationResponse: CreateFDApplicationResponse) { - uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId - // + fun displayReceivedData(createFDApplicationResponse: CreateFDApplicationResponse) { + Log.e("createFDApplication", "Response-->"+createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId) + uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId + getFDDetailsApi(createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId) + customerListApi() } - private fun paymentModeApi() { + + private fun customerListApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() getCodeRequest.ProductName = getString(R.string.bajajFD) - getCodeRequest.Category = getString(R.string.genderCategory) + getCodeRequest.Category = getString(R.string.customerCategory) getCodeRequest.Language = getString(R.string.language) getCodeRequest.InputValue = "" stepFourBajajFDViewModel.paymentModeApi(getCodeRequest, Constants.token) @@ -116,7 +98,9 @@ class StepFourBajajFDFragment : Fragment() { getCodeResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - + if (getCodeResponse.Response.GetCodesList.isNotEmpty()) { + setUpRecyclerView(getCodeResponse.Response.GetCodesList) + } } // 650 -> refreshToken() else -> {} @@ -139,24 +123,41 @@ class StepFourBajajFDFragment : Fragment() { } - private fun getFDDetailsApi() { - if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { - val getCodeRequest = GetRatesRequest() - stepFourBajajFDViewModel.getFDDetails(getCodeRequest, Constants.token) + private fun setUpRecyclerView(getCustomerList: List) { + binding.rvTerms.layoutManager = + LinearLayoutManager(activity as BajajFdMainActivity) + val customerListAdapter = CustomerListAdapter(getCustomerList) + binding.rvTerms.adapter = customerListAdapter + + } + + private fun getFDDetailsApi(uniqueId: String) { + if (Common.isNetworkAvailable(mActivity!!)) { + val getFDDetailsRequest = GetFDDetailsRequest() + getFDDetailsRequest.FDProvider = mActivity!!.getString(R.string.bajaj) + getFDDetailsRequest.NiveshClientCode = (mActivity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE + getFDDetailsRequest.UniqueId = uniqueId + stepFourBajajFDViewModel.getFDDetails(getFDDetailsRequest, Constants.token) stepFourBajajFDViewModel.getFDDetailsMutableData.observe(viewLifecycleOwner) { response -> when (response) { is Resource.Success -> { Log.e("response", "-->$response") - val getCodeResponse: GetCodeResponse = - Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) - getCodeResponse.Response.StatusCode.let { code -> + val getFDDetailsResponse: GetFDDetailsResponse = + Gson().fromJson( + response.data?.toString(), + GetFDDetailsResponse::class.java + ) + getFDDetailsResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - - binding.tvInvestedAmount.text = "" - binding.tvTenure.text = "" - binding.tvInterestPayout.text = "" - binding.tvRateOfInterest.text = "" + binding.tvInvestedAmount.text = + getFDDetailsResponse.Response.FDDataResponse.FDAmount.toString() + binding.tvTenure.text = + getFDDetailsResponse.Response.FDDataResponse.Tenure.toString() + binding.tvInterestPayout.text = + getFDDetailsResponse.Response.FDDataResponse.Frequency + binding.tvRateOfInterest.text = + getFDDetailsResponse.Response.FDDataResponse.RateOfInterest.toString() } // 650 -> refreshToken() else -> {} @@ -174,12 +175,11 @@ class StepFourBajajFDFragment : Fragment() { } } } - } } - override fun onDestroyView() { + 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 9f83647..b6e6484 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 @@ -31,7 +31,7 @@ import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepOneBajajFDViewModel -class StepOneBajajFDFragment : Fragment() { +class StepOneBajajFDFragment : BaseFragment() { private var _binding: FragmentBajajfdStepOneBinding? = null private val binding get() = _binding!! @@ -145,7 +145,7 @@ class StepOneBajajFDFragment : Fragment() { (activity as BajajFdMainActivity).fdInvestmentDetails.NiveshClientCode = "8872" (activity as BajajFdMainActivity).fdInvestmentDetails.Provider = getString(R.string.bajaj) - (activity as BajajFdMainActivity).fdInvestmentDetails.IPAddress = "" + (activity as BajajFdMainActivity).fdInvestmentDetails.IPAddress = "192.168.1.23" (activity as BajajFdMainActivity).fdInvestmentDetails.Device = getString(R.string.app) (activity as BajajFdMainActivity).fdInvestmentDetails.Source = @@ -206,14 +206,19 @@ class StepOneBajajFDFragment : Fragment() { } } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -248,14 +253,19 @@ class StepOneBajajFDFragment : Fragment() { maxAmountApi() } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -284,14 +294,19 @@ class StepOneBajajFDFragment : Fragment() { listOfMaxAmount = getCodeResponse.Response.GetCodesList } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -348,7 +363,10 @@ class StepOneBajajFDFragment : Fragment() { } // 650 -> refreshToken() else -> { - + Common.showDialogValidation( + activity as BajajFdMainActivity, + getMaturityAmountResponse.Response.Errors[0].ErrorMessage + ) } } } @@ -356,7 +374,7 @@ class StepOneBajajFDFragment : Fragment() { is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -462,14 +480,19 @@ class StepOneBajajFDFragment : Fragment() { } } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getRatesResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt index 18b7f85..3f6655a 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt @@ -45,7 +45,7 @@ import java.io.FileInputStream import java.io.IOException import java.io.InputStream -class StepThreeBajajFDFragment : Fragment() { +class StepThreeBajajFDFragment : BaseFragment() { private var latestTmpUri: Uri? = null private var _binding: FragmentBajajfdStepThreeBinding? = null @@ -54,7 +54,7 @@ class StepThreeBajajFDFragment : Fragment() { private lateinit var bajajFDInterface: BajajFDInterface private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel - + private var uniqueId: String? = "" private lateinit var dialog: Dialog private lateinit var front: String @@ -382,7 +382,7 @@ class StepThreeBajajFDFragment : Fragment() { is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -426,4 +426,8 @@ class StepThreeBajajFDFragment : Fragment() { super.onDestroyView() _binding = null } + + fun displayReceivedData(createFDApplicationResponse: CreateFDApplicationResponse) { + uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId + } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt index 432b4de..8218885 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 @@ -23,6 +23,7 @@ import com.google.android.material.textfield.TextInputEditText import com.google.gson.Gson import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.adapter.BankListAdapter +import com.nivesh.production.bajajfd.adapter.PaymentModeAdapter import com.nivesh.production.bajajfd.adapter.RecommendedBankListAdapter import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepTwoBinding import com.nivesh.production.bajajfd.interfaces.BajajFDInterface @@ -38,13 +39,14 @@ import com.nivesh.production.bajajfd.util.Common.Companion.isValidEmail import com.nivesh.production.bajajfd.util.Common.Companion.isValidName import com.nivesh.production.bajajfd.util.Common.Companion.isValidPan import com.nivesh.production.bajajfd.util.Common.Companion.removeError +import com.nivesh.production.bajajfd.util.Constants import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel import java.util.* -class StepTwoBajajFDFragment : Fragment() { +class StepTwoBajajFDFragment : BaseFragment() { private var _binding: FragmentBajajfdStepTwoBinding? = null private val binding get() = _binding!! @@ -60,6 +62,8 @@ class StepTwoBajajFDFragment : Fragment() { private lateinit var listOfRelationShip: List private lateinit var listOfMaritalStatus: List private lateinit var listOfOccupation: List + private lateinit var listOfPayMode: List + private lateinit var listOfStates: List private lateinit var listOfCities: List @@ -67,8 +71,8 @@ class StepTwoBajajFDFragment : Fragment() { private lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel private lateinit var bankListAdapter: BankListAdapter + private lateinit var paymentModeAdapter: PaymentModeAdapter private lateinit var stateObject: DataObject - private var retryCount: Int = 0 companion object { fun getInstance(fdInterface: BajajFDInterface): StepTwoBajajFDFragment { @@ -99,6 +103,7 @@ class StepTwoBajajFDFragment : Fragment() { listOfOccupation = ArrayList() listOfStates = ArrayList() listOfIFSC = ArrayList() + listOfPayMode = ArrayList() stateObject = DataObject() @@ -123,7 +128,7 @@ class StepTwoBajajFDFragment : Fragment() { } }) binding.edtMobileNumber.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.mobile) - + binding.edtMobileNumber.setSelection(binding.edtMobileNumber.text.toString().length) // create an OnDateSetListener if (!(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB.isNullOrEmpty()) { binding.edtDOB.setText(getDate((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB.toString())) @@ -391,7 +396,11 @@ class StepTwoBajajFDFragment : Fragment() { datePicker(binding.edtNomineeDOB) } - binding.spNomineeRelation.setText((activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Nominees?.get(0)?.NomineeRelationship) + binding.spNomineeRelation.setText( + (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Nominees?.get( + 0 + )?.NomineeRelationship + ) binding.spNomineeRelation.setOnItemClickListener { _, _, _, _ -> removeError(binding.tlNomineeRelation) } @@ -523,11 +532,11 @@ class StepTwoBajajFDFragment : Fragment() { } } - rbPaymentMode.text = getString(R.string.Upi) - binding.rgPaymentMode.setOnCheckedChangeListener { group, checkedId -> - rbPaymentMode = group.findViewById(checkedId) - Log.e("paymentMode", "-->" + rbPaymentMode.text) - } +// rbPaymentMode.text = getString(R.string.Upi) +// binding.rgPaymentMode.setOnCheckedChangeListener { group, checkedId -> +// rbPaymentMode = group.findViewById(checkedId) +// Log.e("paymentMode", "-->" + rbPaymentMode.text) +// } binding.tvEligibleBankOption.setOnClickListener { apiForEligibleBankList() @@ -611,8 +620,9 @@ class StepTwoBajajFDFragment : Fragment() { binding.edtAddressLine3.text.toString() (activity as BajajFdMainActivity).applicantDetails.ApplicantCity = binding.spCity.text.toString() - // (activity as BajajFdMainActivity).applicantDetails.ApplicantState = binding.spState.text.toString() - (activity as BajajFdMainActivity).applicantDetails.ApplicantState = stateObject.State_Code + // (activity as BajajFdMainActivity).applicantDetails.ApplicantState = binding.spState.text.toString() + (activity as BajajFdMainActivity).applicantDetails.ApplicantState = + stateObject.State_Code (activity as BajajFdMainActivity).applicantDetails.ApplicantCountry = "India" (activity as BajajFdMainActivity).applicantDetails.ApplicantPincode = binding.edtPinCode.text.toString().toInt() @@ -762,7 +772,10 @@ class StepTwoBajajFDFragment : Fragment() { } // 650 -> refreshToken() else -> { - + Common.showDialogValidation( + activity as BajajFdMainActivity, + getIFSCCodeListResponse.Response.message + ) } } } @@ -770,7 +783,10 @@ class StepTwoBajajFDFragment : Fragment() { is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation( + activity as BajajFdMainActivity, + message + ) } } is Resource.Loading -> { @@ -801,7 +817,10 @@ class StepTwoBajajFDFragment : Fragment() { } // 650 -> refreshToken() else -> { - + Common.showDialogValidation( + activity as BajajFdMainActivity, + getIFSCCodeResponse.Response.message + ) } } } @@ -809,7 +828,7 @@ class StepTwoBajajFDFragment : Fragment() { is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -868,6 +887,9 @@ class StepTwoBajajFDFragment : Fragment() { } } + + + private fun datePicker(edtDOB: TextInputEditText) { val year = cal.get(Calendar.YEAR) val month = cal.get(Calendar.MONTH) @@ -940,7 +962,7 @@ class StepTwoBajajFDFragment : Fragment() { is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -970,7 +992,6 @@ class StepTwoBajajFDFragment : Fragment() { getCodeResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - retryCount = 0 listOfTitle = getCodeResponse.Response.GetCodesList if (listOfTitle.isNotEmpty()) { val adapter = ArrayAdapter( @@ -1022,10 +1043,15 @@ class StepTwoBajajFDFragment : Fragment() { occupationApi() annualIncomeApi() stateListApi() + paymentModeApi() } - 650 -> refreshToken() + // 650 -> refreshToken() else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) } } } @@ -1033,7 +1059,7 @@ class StepTwoBajajFDFragment : Fragment() { is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -1045,14 +1071,65 @@ class StepTwoBajajFDFragment : Fragment() { } } - private fun refreshToken() { -// retryCount++ -// if(retryCount<=2){ -// titleApi() -// } + private fun paymentModeApi() { + if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { + val getCodeRequest = GetCodeRequest() + getCodeRequest.ProductName = getString(R.string.bajajFD) + getCodeRequest.Category = getString(R.string.paymentModeCategory) + getCodeRequest.Language = getString(R.string.language) + getCodeRequest.InputValue = "" + stepTwoBajajFDViewModel.paymentModeApi(getCodeRequest, Constants.token) + stepTwoBajajFDViewModel.getPaymentModeMutableData.observe(viewLifecycleOwner) { response -> + when (response) { + is Resource.Success -> { + Log.e("response", "-->$response") + val getCodeResponse: GetCodeResponse = + Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java) + getCodeResponse.Response.StatusCode.let { code -> + when (code) { + 200 -> { + if (getCodeResponse.Response.GetCodesList.isNotEmpty()){ + listOfPayMode = getCodeResponse.Response.GetCodesList + setUpRecyclerViewPaymentMode(listOfPayMode) + } + } + // 650 -> refreshToken() + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } + } + } + } + is Resource.Error -> { + response.message?.let { message -> + Common.showDialogValidation(activity as BajajFdMainActivity, message) + } + } + is Resource.Loading -> { + + } + } + } + + } + } + + private fun setUpRecyclerViewPaymentMode(listOfPayMode: List) { + + binding.rvPaymentMode.layoutManager = + LinearLayoutManager(activity as BajajFdMainActivity) + paymentModeAdapter = PaymentModeAdapter( + listOfPayMode, + listOfPayMode[0].Value + ) + binding.rvPaymentMode.adapter = paymentModeAdapter } + private fun genderApi() { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { val getCodeRequest = GetCodeRequest() @@ -1070,7 +1147,6 @@ class StepTwoBajajFDFragment : Fragment() { getCodeResponse.Response.StatusCode.let { code -> when (code) { 200 -> { - retryCount = 0 listOfGender = getCodeResponse.Response.GetCodesList if (listOfGender.isNotEmpty()) { val adapter = ArrayAdapter( @@ -1087,10 +1163,10 @@ class StepTwoBajajFDFragment : Fragment() { } // 650 -> refreshToken() else -> { - retryCount++ - if(retryCount<=2){ - genderApi() - } + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) } } } @@ -1098,7 +1174,7 @@ class StepTwoBajajFDFragment : Fragment() { is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -1150,14 +1226,19 @@ class StepTwoBajajFDFragment : Fragment() { } } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -1202,14 +1283,19 @@ class StepTwoBajajFDFragment : Fragment() { } } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -1254,14 +1340,19 @@ class StepTwoBajajFDFragment : Fragment() { } } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -1306,14 +1397,19 @@ class StepTwoBajajFDFragment : Fragment() { } } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getCodeResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -1359,14 +1455,14 @@ class StepTwoBajajFDFragment : Fragment() { cityListApi(adapter.getItem(0)?.State_Id) stateObject = adapter.getItem(0) as DataObject - Log.e("if", " -->"+stateObject.State_Code) + Log.e("if", " -->" + stateObject.State_Code) } else { for (title in listOfStates) { if (title.State_Code == newTitleText) { binding.spState.setText(title.State_Name, false) cityListApi(title.State_Id) - stateObject = title - Log.e("else", " -->"+stateObject.State_Code) + stateObject = title + Log.e("else", " -->" + stateObject.State_Code) break } } @@ -1374,14 +1470,19 @@ class StepTwoBajajFDFragment : Fragment() { } } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + stateListResponse.response.message + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -1446,14 +1547,19 @@ class StepTwoBajajFDFragment : Fragment() { } } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + cityListResponse.response.message + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { @@ -1483,14 +1589,19 @@ class StepTwoBajajFDFragment : Fragment() { } } // 650 -> refreshToken() - else -> {} + else -> { + Common.showDialogValidation( + activity as BajajFdMainActivity, + getFDBankListResponse.Response.Errors[0].ErrorMessage + ) + } } } } is Resource.Error -> { response.message?.let { message -> - Log.e(" ", "An error occurred:$message") + Common.showDialogValidation(activity as BajajFdMainActivity, message) } } is Resource.Loading -> { 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 5cc34c9..791ce18 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 @@ -1,6 +1,5 @@ package com.nivesh.production.bajajfd.util -import android.annotation.SuppressLint import android.app.Activity import android.app.AlertDialog import android.content.Context @@ -14,10 +13,12 @@ import android.util.Patterns import com.google.android.material.textfield.MaterialAutoCompleteTextView import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputLayout +import com.google.gson.JsonObject import com.nivesh.production.bajajfd.R +import com.nivesh.production.bajajfd.ui.activity.BaseActivity +import retrofit2.HttpException +import java.io.IOException import java.text.SimpleDateFormat -import java.time.LocalDate -import java.time.format.DateTimeFormatter import java.util.* import java.util.regex.Matcher import java.util.regex.Pattern @@ -25,7 +26,7 @@ import java.util.regex.Pattern class Common { - companion object{ + companion object { /** *Before use this method write following code in model class app:Application(in activity and model) @@ -33,10 +34,12 @@ class Common { val connectivityManager = getApplication().getSystemService(.... **/ //internet check - fun isNetworkAvailable(activity: Activity): Boolean { + fun isNetworkAvailable(activity: BaseActivity): Boolean { val connectivityManager = activity.getSystemService( Context.CONNECTIVITY_SERVICE ) as ConnectivityManager + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { val activeNetwork = connectivityManager.activeNetwork ?: return false @@ -63,11 +66,11 @@ class Common { //valid email check fun isValidEmail(target: String?): Boolean { - return Patterns.EMAIL_ADDRESS.matcher(target.toString()).matches() + return Patterns.EMAIL_ADDRESS.matcher(target.toString()).matches() } //valid Name Check - fun isValidName(nameText: String?): Boolean { + fun isValidName(nameText: String?): Boolean { val pattern = Pattern.compile(("^[a-zA-Z\\s]{2,70}$")) val matcher = pattern.matcher(nameText.toString()) return matcher.matches() @@ -95,7 +98,7 @@ class Common { fun removeError(textInputLayout: TextInputLayout) { if (textInputLayout.error != null) { textInputLayout.error = null - if(textInputLayout.isErrorEnabled){ + if (textInputLayout.isErrorEnabled) { textInputLayout.isErrorEnabled = false; } } @@ -127,7 +130,7 @@ class Common { } // set Default Step - fun defaultShape(): GradientDrawable { + fun defaultShape(): GradientDrawable { val shape = GradientDrawable() shape.shape = GradientDrawable.OVAL shape.setColor(Color.WHITE) @@ -136,7 +139,7 @@ class Common { } // set Selected Step - fun selectedShape(): GradientDrawable { + fun selectedShape(): GradientDrawable { val shape = GradientDrawable() shape.shape = GradientDrawable.OVAL shape.setColor(Color.parseColor(Colors.colorDefault)) @@ -144,13 +147,13 @@ class Common { return shape } - fun commonErrorMethod( + fun commonErrorMethod( inputText: TextInputEditText, inputError: TextInputLayout, strMessage: String ): Boolean { inputText.requestFocus() - inputError.error = strMessage + inputError.error = strMessage return false } @@ -164,7 +167,7 @@ class Common { return false } - fun commonSpinnerErrorMethod( + fun commonSpinnerErrorMethod( inputText: MaterialAutoCompleteTextView, inputError: TextInputLayout, strMessage: String @@ -174,12 +177,31 @@ class Common { return false } - fun getDate(string :String): String { + fun getDate(string: String): String { val input = SimpleDateFormat("dd/MM/yyyy", Locale.US) - val mDate : Date? = input.parse(string) - // val simpleDateFormat = SimpleDateFormat("dd MMM, yyyy", Locale.US) + val mDate: Date? = input.parse(string) val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US) return simpleDateFormat.format(mDate as Date) } + + fun handleRatesResponse(response: retrofit2.Response): Resource { + try { + if (response.isSuccessful && response.body() != null) { + response.body()?.let { resultResponse -> + return Resource.Success(resultResponse) + } + } + } catch (t: Throwable) { + return when (t) { + is IOException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause)) + is HttpException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause)) + else -> Resource.Error(t.localizedMessage?.toString() ?: "") + } + } + return Resource.Error(response.message()) + } + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt index 68fed01..e26e127 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt @@ -6,9 +6,9 @@ import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject import com.nivesh.production.bajajfd.model.CreateFDRequest import com.nivesh.production.bajajfd.model.FDStepsCountRequest -import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.model.getClientDetailsRequest import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch @@ -30,19 +30,27 @@ class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() } val getFDResponseMutableData: MutableLiveData> = MutableLiveData() - fun createFDApi(getRatesRequest: CreateFDRequest, token :String) = viewModelScope.launch { + fun createFDApi(getRatesRequest: CreateFDRequest, token: String) = viewModelScope.launch { getFDResponseMutableData.postValue(Resource.Loading()) val response = mainRepository.createFDKYCResponse(getRatesRequest, token) getFDResponseMutableData.postValue(handleRatesResponse(response)) } - private fun handleRatesResponse(response: retrofit2.Response): Resource { - if (response.isSuccessful) { - response.body()?.let { resultResponse -> - return Resource.Success(resultResponse) - } - } - return Resource.Error(response.message()) - } +// private fun handleRatesResponse(response: retrofit2.Response): Resource { +// try { +// if ( response.isSuccessful && response.body() != null) { +// response.body()?.let { resultResponse -> +// return Resource.Success(resultResponse) +// } +// } +// } catch (t: Throwable) { +// return when (t) { +// is IOException -> Resource.Error("Response : "+t.message.plus(" Cause: "+t.cause)) +// is HttpException -> Resource.Error("Response : "+t.message.plus(" Cause: "+t.cause)) +// else -> Resource.Error(t.localizedMessage?.toString() ?: "") +// } +// } +// return Resource.Error(response.message()) +// } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt index 7f55996..e68bff9 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt @@ -5,14 +5,15 @@ 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.GetFDDetailsRequest import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { - val getPaymentModeMutableData: MutableLiveData> = MutableLiveData() fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { getPaymentModeMutableData.postValue(Resource.Loading()) @@ -21,46 +22,33 @@ class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : Vie } val getFDDetailsMutableData: MutableLiveData> = MutableLiveData() - fun getFDDetails(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { + fun getFDDetails(getRatesRequest: GetFDDetailsRequest, token: String) = viewModelScope.launch { getFDDetailsMutableData.postValue(Resource.Loading()) val response = mainRepository.getFDDetailsResponse(getRatesRequest, token) getFDDetailsMutableData.postValue(handleRatesResponse(response)) } - - private val getRatesMutableData: MutableLiveData> = MutableLiveData() - fun saveFDOtherData(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { + fun saveFDOtherData(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) val response = mainRepository.saveFDOtherDataResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } - private fun handleRatesResponse(response: retrofit2.Response): Resource { - if (response.isSuccessful) { - response.body()?.let { resultResponse -> - return Resource.Success(resultResponse) - } + fun updateFDPaymentStatus(getRatesRequest: GetRatesRequest, token: String) = + viewModelScope.launch { + getRatesMutableData.postValue(Resource.Loading()) + val response = mainRepository.updateFDPaymentStatusResponse(getRatesRequest, token) + getRatesMutableData.postValue(handleRatesResponse(response)) } - return Resource.Error(response.message()) - - } - - - - fun updateFDPaymentStatus(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { - getRatesMutableData.postValue(Resource.Loading()) - val response = mainRepository.updateFDPaymentStatusResponse(getRatesRequest, token) - getRatesMutableData.postValue(handleRatesResponse(response)) - } - fun finaliseFD(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { + fun finaliseFD(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) val response = mainRepository.finaliseFDResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) } - fun finaliseKYC(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { + fun finaliseKYC(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch { getRatesMutableData.postValue(Resource.Loading()) val response = mainRepository.finaliseKYCResponse(getRatesRequest, token) getRatesMutableData.postValue(handleRatesResponse(response)) diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt index 5ee7803..940ab26 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt @@ -9,15 +9,14 @@ import com.nivesh.production.bajajfd.model.GetCodeRequest import com.nivesh.production.bajajfd.model.GetMaturityAmountRequest import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch class StepOneBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { - // TODO: Implement the ViewModel val getCodeMutableData: MutableLiveData> = MutableLiveData() - fun getCode(requestBody: GetCodeRequest, token : String) = viewModelScope.launch { getCodeMutableData.postValue(Resource.Loading()) val response = mainRepository.getCodesResponse(requestBody, token) @@ -59,14 +58,14 @@ class StepOneBajajFDViewModel(private val mainRepository: MainRepository) : View getFDKYCMutableData.postValue(handleRatesResponse(response)) } - private fun handleRatesResponse(response: retrofit2.Response): Resource { - if (response.isSuccessful) { - response.body()?.let { resultResponse -> - return Resource.Success(resultResponse) - } - } - return Resource.Error(response.message()) - - } +// private fun handleRatesResponse(response: retrofit2.Response): Resource { +// if (response.isSuccessful) { +// response.body()?.let { resultResponse -> +// return Resource.Success(resultResponse) +// } +// } +// return Resource.Error(response.message()) +// +// } } \ No newline at end of file diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt index ff04ab3..4c8a3d2 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt @@ -1,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.DocumentUpload import com.nivesh.production.bajajfd.model.GetCodeRequest 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 1260697..a284c59 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 @@ -6,25 +6,13 @@ import androidx.lifecycle.viewModelScope import com.google.gson.JsonObject import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.repositories.MainRepository +import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse import com.nivesh.production.bajajfd.util.Resource import kotlinx.coroutines.launch class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { - // TODO: Implement the ViewModel - private val getRatesMutableData: MutableLiveData> = MutableLiveData() val getPanCheckMutableData: MutableLiveData> = MutableLiveData() - - private fun handleRatesResponse(response: retrofit2.Response): Resource { - if (response.isSuccessful) { - response.body()?.let { resultResponse -> - return Resource.Success(resultResponse) - } - } - return Resource.Error(response.message()) - - } - fun panCheck(panCheck: PanCheckRequest, token: String) = viewModelScope.launch { getPanCheckMutableData.postValue(Resource.Loading()) val response = mainRepository.panCheck(panCheck, token) @@ -109,5 +97,11 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View getifscCodeDetailsCheckMutableData.postValue(handleRatesResponse(response)) } + val getPaymentModeMutableData: MutableLiveData> = MutableLiveData() + fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch { + getPaymentModeMutableData.postValue(Resource.Loading()) + val response = mainRepository.payModeCheck(getCodeRequest, token) + getPaymentModeMutableData.postValue(handleRatesResponse(response)) + } } \ 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 22a13de..110a22a 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_four.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_four.xml @@ -202,82 +202,27 @@ android:text="@string/termsAndCondition" android:textColor="@color/black" android:textSize="@dimen/text_size_14" - app:layout_constraintBottom_toTopOf="@+id/swDirectorBajajFinance" + app:layout_constraintBottom_toTopOf="@+id/llRVTerms" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/lblRateOfInterest" /> - + app:layout_constraintTop_toBottomOf="@+id/tvTermsCondition" + android:orientation="vertical"> - + - - - - - - - + + app:layout_constraintTop_toBottomOf="@+id/llRVTerms" /> + app:layout_constraintTop_toBottomOf="@+id/llRVTerms" /> diff --git a/app/src/main/res/layout/fragment_bajajfd_step_two.xml b/app/src/main/res/layout/fragment_bajajfd_step_two.xml index 836d2bb..d10b0e2 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_two.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_two.xml @@ -1010,28 +1010,18 @@ - - - + android:layout_margin="@dimen/margin_5" + android:orientation="vertical"> - + - + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_payment_list_preview.xml b/app/src/main/res/layout/item_payment_list_preview.xml new file mode 100644 index 0000000..0e095ca --- /dev/null +++ b/app/src/main/res/layout/item_payment_list_preview.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 5c430ce..a09b484 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -243,5 +243,7 @@ Gallery Camera Select Option + PaymentMode + CustomerCategory \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d6ab4a5..3c160f0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -244,6 +244,8 @@ Select Option Gallery Camera + PaymentMode + CustomerCategory Aadhaar Card