23 Commits

Author SHA1 Message Date
  pankaj 85575a10dc bank ifsc 2 years ago
  pankaj 4459169f33 fetch 2 years ago
  Hemant Khadase 64ffadb14d changes added 2 years ago
  pankaj a53e1452c4 Merge branch 'HemantBranch' of https://git.nivesh.com:443/hemant.khadase/BajajFDLib into PankajBranch 2 years ago
  pankaj 8155bb84de resource change 2 years ago
  Hemant Khadase c93f829cef minor changes 2 years ago
  Hemant Khadase c0fbd9fd56 added changes 2 years ago
  Hemant Khadase 7eee4b276f changes 2 years ago
  Hemant Khadase 38f8420ed4 added minor changes 2 years ago
  Hemant Khadase 0f6c54fe7a changes done 2 years ago
  pankaj e5060d07c8 Merge branch 'HemantBranch' of https://git.nivesh.com:443/hemant.khadase/BajajFDLib into PankajBranch 2 years ago
  pankaj 06aded85e0 step 2 years ago
  Hemant Khadase 14f72f3c9f updated code 2 years ago
  Hemant Khadase 0323379e9a completed stepfour coding 2 years ago
  Hemant Khadase 63fd4b6da8 added manoj's code 2 years ago
  pankaj a4780f71f1 v 2 years ago
  Hemant Khadase 8e4bb6a1e1 added code for stepfour 2 years ago
  Hemant Khadase 587bd7862a added missing code and resolved an error 2 years ago
  pankaj c7c86adc1a Merge branch 'HemantBranch' of https://git.nivesh.com:443/hemant.khadase/BajajFDLib into PankajBranch 2 years ago
  pankaj 78d0613eae send data fragment 2 years ago
  Hemant Khadase c7d1169160 changes 2 years ago
  Hemant Khadase c5252cc412 changes 2 years ago
  Hemant Khadase c169200566 missing code 2 years ago
44 changed files with 2173 additions and 1440 deletions
Unified View
  1. +16
    -0
      app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt
  2. +10
    -37
      app/src/main/java/com/nivesh/production/bajajfd/adapter/CustomerListAdapter.kt
  3. +24
    -0
      app/src/main/java/com/nivesh/production/bajajfd/adapter/DisableAdapter.kt
  4. +6
    -17
      app/src/main/java/com/nivesh/production/bajajfd/adapter/SectionsPagerAdapter.kt
  5. +25
    -0
      app/src/main/java/com/nivesh/production/bajajfd/adapter/SmartFragmentStatePagerAdapter.kt
  6. +35
    -0
      app/src/main/java/com/nivesh/production/bajajfd/api/ApiCallback.kt
  7. +34
    -1
      app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt
  8. +19
    -0
      app/src/main/java/com/nivesh/production/bajajfd/api/TokenAuthenticator.kt
  9. +14
    -5
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt
  10. +0
    -10
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt
  11. +4
    -2
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt
  12. +6
    -6
      app/src/main/java/com/nivesh/production/bajajfd/model/DocumentUpload.kt
  13. +2
    -1
      app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt
  14. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseX.kt
  15. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt
  16. +8
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXXX.kt
  17. +8
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/SaveFDOtherDataRequest.kt
  18. +5
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/SaveFDOtherDataResponse.kt
  19. +5
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/UploadResponse.kt
  20. +4
    -4
      app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt
  21. +147
    -172
      app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
  22. +14
    -0
      app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BaseActivity.kt
  23. +36
    -0
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/BaseFragment.kt
  24. +12
    -19
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt
  25. +148
    -78
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt
  26. +141
    -124
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt
  27. +318
    -130
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
  28. +637
    -549
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt
  29. +47
    -16
      app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt
  30. +22
    -6
      app/src/main/java/com/nivesh/production/bajajfd/util/Resource.kt
  31. +31
    -35
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt
  32. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFiveBajajFDViewModel.kt
  33. +57
    -31
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt
  34. +53
    -45
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepOneBajajFDViewModel.kt
  35. +34
    -11
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt
  36. +119
    -53
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt
  37. +1
    -1
      app/src/main/res/layout/activity_bajaj_fd.xml
  38. +8
    -4
      app/src/main/res/layout/fragment_bajajfd_step_four.xml
  39. +2
    -1
      app/src/main/res/layout/fragment_bajajfd_step_three.xml
  40. +36
    -14
      app/src/main/res/layout/fragment_bajajfd_step_two.xml
  41. +20
    -31
      app/src/main/res/layout/item_customer_list_preview.xml
  42. +43
    -0
      app/src/main/res/layout/row_fd_pay.xml
  43. +10
    -13
      app/src/main/res/values-hi-rIN/strings.xml
  44. +9
    -21
      app/src/main/res/values/strings.xml

+ 16
- 0
app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt View File

@ -1,6 +1,22 @@
package com.nivesh.production.bajajfd package com.nivesh.production.bajajfd
import android.app.Application import android.app.Application
import android.content.Context
class BajajApplication : Application() { class BajajApplication : Application() {
private var mInstance: BajajApplication? = null
// private val mRequestQueue: RequestQueue? = null
companion object {
var appContext: Context? = null
}
override fun onCreate() {
super.onCreate()
mInstance = this
appContext = applicationContext
}
@Synchronized
fun getInstanceApp(): BajajApplication? {
return mInstance
}
} }

+ 10
- 37
app/src/main/java/com/nivesh/production/bajajfd/adapter/CustomerListAdapter.kt View File

@ -3,23 +3,20 @@ package com.nivesh.production.bajajfd.adapter
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.switchmaterial.SwitchMaterial
import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.model.GetCodes import com.nivesh.production.bajajfd.model.GetCodes
class CustomerListAdapter( class CustomerListAdapter(
private val bankList: List<GetCodes>?
private val customerList: MutableList<GetCodes>?
) : RecyclerView.Adapter<CustomerListAdapter.BankListViewHolder>() { ) : RecyclerView.Adapter<CustomerListAdapter.BankListViewHolder>() {
inner class BankListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { inner class BankListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val bankSelector: ImageView = itemView.findViewById(R.id.bankSelector)
val tvBankName: TextView = itemView.findViewById(R.id.tvBankName)
val tvCustomerName: SwitchMaterial = itemView.findViewById(R.id.tvCustomerName)
val txtLabel: TextView = itemView.findViewById(R.id.txtLabel)
} }
private var checkedPosition: Int = -2
override fun onCreateViewHolder( override fun onCreateViewHolder(
parent: ViewGroup, parent: ViewGroup,
viewType: Int viewType: Int
@ -34,41 +31,17 @@ class CustomerListAdapter(
} }
override fun onBindViewHolder(holder: BankListViewHolder, position: Int) { 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
}
}
}
val cList = customerList?.get(position)
if (cList != null) {
holder.txtLabel.text = cList.Label
holder.tvCustomerName.setOnCheckedChangeListener { _, isChecked ->
cList.isSelected = isChecked
} }
} }
} }
override fun getItemCount(): Int { 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
return customerList?.size!!
} }
} }

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

@ -0,0 +1,24 @@
package com.nivesh.production.bajajfd.adapter
import android.annotation.SuppressLint
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.viewpager.widget.ViewPager
class DisableAdapter (context: Context, attrs: AttributeSet) : ViewPager(context, attrs) {
private var isPagingEnabled = true // change this value for enable and disable the viewpager swipe
@SuppressLint("ClickableViewAccessibility")
override fun onTouchEvent(event: MotionEvent?): Boolean {
return this.isPagingEnabled && super.onTouchEvent(event)
}
override fun onInterceptTouchEvent(event: MotionEvent?): Boolean {
return this.isPagingEnabled && super.onInterceptTouchEvent(event)
}
fun setPagingEnabled(b: Boolean) { isPagingEnabled = b
}
}

+ 6
- 17
app/src/main/java/com/nivesh/production/bajajfd/adapter/SectionsPagerAdapter.kt View File

@ -1,30 +1,19 @@
package com.nivesh.production.bajajfd.adapter package com.nivesh.production.bajajfd.adapter
import android.content.Context
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager 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<Fragment> = ArrayList()
class SectionsPagerAdapter(private val fm: FragmentManager, private val fragments: Array<Fragment>, private val NumberOfTabs: Int) : SmartFragmentStatePagerAdapter(fm) {
override fun getItem(position: Int): Fragment { 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
} }
} }

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

@ -0,0 +1,25 @@
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.FragmentPagerAdapter
import androidx.fragment.app.FragmentStatePagerAdapter
import androidx.viewpager2.adapter.FragmentStateAdapter
abstract class SmartFragmentStatePagerAdapter(fragmentManager: FragmentManager) : FragmentPagerAdapter(fragmentManager) {
private val registeredFragments = SparseArray<Fragment>()
override fun instantiateItem(container: ViewGroup, position: Int): Any {
val fragment = super.instantiateItem(container, position) as Fragment
registeredFragments.put(position, fragment)
return fragment
}
// Returns the fragment for the position (if instantiated)
fun getRegisteredFragment(position: Int): Fragment? {
return registeredFragments[position]
}
}

+ 35
- 0
app/src/main/java/com/nivesh/production/bajajfd/api/ApiCallback.kt View File

@ -0,0 +1,35 @@
package com.nivesh.production.bajajfd.api
import com.nivesh.production.bajajfd.util.Resource
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
abstract class ApiCallback<T : Any> : Callback<Resource<T>> {
abstract fun onSuccess(response: Resource<T>)
abstract fun onFailure(response: Resource<T>)
override fun onResponse(call: Call<Resource<T>>, response: Response<Resource<T>>) {
if (response.isSuccessful && response.body() != null && response.code() == 200) {
onSuccess(response.body()!!)
} else {
// handle 4xx & 5xx error codes here
// val resp = Resource<T>()
// resp.status = false
// resp.message = response.message()
// onFailure(resp)
}
}
override fun onFailure(call: Call<Resource<T>>, t: Throwable) {
// val response = Resource<T>()
// response.status = false
// response.message = t.message.toString()
// onFailure(response)
}
}

+ 34
- 1
app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt View File

@ -1,13 +1,20 @@
package com.nivesh.production.bajajfd.api package com.nivesh.production.bajajfd.api
import com.nivesh.production.bajajfd.BajajApplication
import com.nivesh.production.bajajfd.interfaces.ApiInterface import com.nivesh.production.bajajfd.interfaces.ApiInterface
import com.nivesh.production.bajajfd.util.Constants.Companion.BASE_URL import com.nivesh.production.bajajfd.util.Constants.Companion.BASE_URL
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory import retrofit2.converter.gson.GsonConverterFactory
import java.security.KeyStore
import java.util.*
import java.util.concurrent.TimeUnit
import javax.net.ssl.*
class ApiClient { class ApiClient {
val context = BajajApplication.appContext
companion object { companion object {
private val client by lazy { private val client by lazy {
//lazy means we only initialize this here once //lazy means we only initialize this here once
@ -16,10 +23,31 @@ class ApiClient {
logging.setLevel(HttpLoggingInterceptor.Level.BODY) logging.setLevel(HttpLoggingInterceptor.Level.BODY)
//see the body of response //see the body of response
//create client for retrofit //create client for retrofit
val trustManagerFactory: TrustManagerFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
trustManagerFactory.init(null as KeyStore?)
val trustManagers: Array<TrustManager> = trustManagerFactory.getTrustManagers()
check(!(trustManagers.size != 1 || trustManagers[0] !is X509TrustManager)) {
"Unexpected default trust managers:" + Arrays.toString(
trustManagers
)
}
val trustManager: X509TrustManager = trustManagers[0] as X509TrustManager
val sslContext = SSLContext.getInstance("SSL")
sslContext.init(null, arrayOf(trustManager), null)
val sslSocketFactory: SSLSocketFactory = sslContext.socketFactory
val client = OkHttpClient.Builder() val client = OkHttpClient.Builder()
.addInterceptor(logging) .addInterceptor(logging)
.sslSocketFactory(sslSocketFactory, trustManager)
.retryOnConnectionFailure(true) .retryOnConnectionFailure(true)
.callTimeout(2, TimeUnit.MINUTES)
.connectTimeout(20, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.build() .build()
Retrofit.Builder() Retrofit.Builder()
.baseUrl(BASE_URL) .baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create()) .addConverterFactory(GsonConverterFactory.create())
@ -30,4 +58,9 @@ class ApiClient {
client.create(ApiInterface::class.java) client.create(ApiInterface::class.java)
} }
} }
}
}

+ 19
- 0
app/src/main/java/com/nivesh/production/bajajfd/api/TokenAuthenticator.kt View File

@ -0,0 +1,19 @@
package com.nivesh.production.bajajfd.api
import okhttp3.Authenticator
import okhttp3.Request
import okhttp3.Response
import okhttp3.Route
class TokenAuthenticator {
// override fun authenticate(route: Route?, response: Response): Request? {
//// newAccessToken = service.refreshToken();
////
//// // Add new header to rejected request and retry it
//// return response.request().newBuilder()
//// .header(AUTHORIZATION, newAccessToken)
//// .build();
//
//
// }
}

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

@ -28,13 +28,13 @@ interface ApiInterface {
@POST("WebApi_Bajaj/api/DocumentsUpload") @POST("WebApi_Bajaj/api/DocumentsUpload")
suspend fun documentsUpload( suspend fun documentsUpload(
@Body requestBody: RequestBody,
@Body requestBody: DocumentUpload,
@Header("token") token: String @Header("token") token: String
): Response<JsonObject> ): Response<JsonObject>
@POST("WebApi_Bajaj/api/SaveFDOtherData") @POST("WebApi_Bajaj/api/SaveFDOtherData")
suspend fun saveFDOtherData( suspend fun saveFDOtherData(
@Body requestBody: RequestBody,
@Body requestBody: SaveFDOtherDataRequest,
@Header("token") token: String @Header("token") token: String
): Response<JsonObject> ): Response<JsonObject>
@ -148,11 +148,20 @@ interface ApiInterface {
@GET("WebAPI_Bajaj/api/GetFDBankList?FDProvider=Bajaj") @GET("WebAPI_Bajaj/api/GetFDBankList?FDProvider=Bajaj")
suspend fun bankListApi(@Header("token") token: String): Response<JsonObject> suspend fun bankListApi(@Header("token") token: String): Response<JsonObject>
@GET("WebApi/api/GetIFSC_Autofill?prefix={prefix}")
suspend fun getIFSCApi(@Path("prefix") ifsc : String): Response<JsonObject>
@GET("WebApi/api/GetIFSC_Autofill")
suspend fun getIFSCApi(
@Query("prefix")
ifsc : String
): Response<JsonObject>
@GET("WebApi/api/GetBankDetailsFromIFSC?") @GET("WebApi/api/GetBankDetailsFromIFSC?")
suspend fun getIFSCDetailsApi(@Query("ifsc") ifsc : String,@Header("token") token: String): Response<JsonObject>
suspend fun getIFSCDetailsApi(
@Query("ifsc")
ifsc : String,
@Header("token")
token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/api/GetCodes") @POST("WebApi_Bajaj/api/GetCodes")
suspend fun payModeApi( suspend fun payModeApi(


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

@ -1,10 +0,0 @@
package com.nivesh.production.bajajfd.interfaces
import com.nivesh.production.bajajfd.model.CreateFDRequest
interface BajajFDInterface {
fun stepOneApi(data: String?)
fun stepTwoApi(data: CreateFDRequest)
fun stepThreeApi(data: CreateFDRequest)
fun stepFourApi(data: String?)
}

+ 4
- 2
app/src/main/java/com/nivesh/production/bajajfd/interfaces/SendData.kt View File

@ -1,6 +1,8 @@
package com.nivesh.production.bajajfd.interfaces package com.nivesh.production.bajajfd.interfaces
interface SendData {
fun sendDataFragment(message: String?)
import com.nivesh.production.bajajfd.model.CreateFDApplicationResponse
interface SendData {
fun sendDataFragment(message: CreateFDApplicationResponse)
fun sendDataFragmentStepFour(message: CreateFDApplicationResponse)
} }

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

@ -1,10 +1,10 @@
package com.nivesh.production.bajajfd.model package com.nivesh.production.bajajfd.model
data class DocumentUpload( data class DocumentUpload(
val Description: String? = null,
val DocumentType: String? = null,
val FDProvider: String? = null,
val ImageEncodeToBase64: String? = null,
val NiveshClientCode: String? = null,
val UniqueId: String? = null
var Description: String? = null,
var DocumentType: String? = null,
var FDProvider: String? = null,
var ImageEncodeToBase64: String? = null,
var NiveshClientCode: String? = null,
var UniqueId: String? = null
) )

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

@ -2,7 +2,8 @@ package com.nivesh.production.bajajfd.model
data class GetCodes( data class GetCodes(
val Label: String, val Label: String,
val Value: String
val Value: String,
var isSelected : Boolean
) { ) {
override fun toString(): String { override fun toString(): String {
return Label return Label


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

@ -2,7 +2,7 @@ package com.nivesh.production.bajajfd.model
data class ResponseX( data class ResponseX(
val Errors: List<Errors>, val Errors: List<Errors>,
val GetCodesList: List<GetCodes>,
val GetCodesList: MutableList<GetCodes>,
val Message: String, val Message: String,
val Status: String, val Status: String,
val StatusCode: Int val StatusCode: Int

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

@ -1,7 +1,7 @@
package com.nivesh.production.bajajfd.model package com.nivesh.production.bajajfd.model
data class ResponseXXXXXXXXXXXX( data class ResponseXXXXXXXXXXXX(
val Errors: Any,
val Errors: List<Errors>,
val FDDataResponse: FDDataResponse, val FDDataResponse: FDDataResponse,
val Message: String, val Message: String,
val Status: String, val Status: String,


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

@ -0,0 +1,8 @@
package com.nivesh.production.bajajfd.model
data class ResponseXXXXXXXXXXXXX(
val Errors: List<Errors>,
val Message: String,
val Status: String,
val StatusCode: Int
)

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

@ -0,0 +1,8 @@
package com.nivesh.production.bajajfd.model
data class SaveFDOtherDataRequest(
var FDProvider: String?= "",
var NiveshClientCode: String? = "",
var UniqueId: String? = "",
var Values: String? = ""
)

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

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

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

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

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

@ -26,11 +26,11 @@ class MainRepository constructor(private val apiInterface: ApiInterface) {
suspend fun createFDKYCResponse(createFDRequest: CreateFDRequest, token: String) = suspend fun createFDKYCResponse(createFDRequest: CreateFDRequest, token: String) =
apiInterface.createFDApp(createFDRequest, token) apiInterface.createFDApp(createFDRequest, token)
suspend fun documentsUploadResponse(getRatesRequest: GetRatesRequest, token: String) =
apiInterface.getRates(getRatesRequest, token)
suspend fun documentsUploadResponse(getRatesRequest: DocumentUpload, token: String) =
apiInterface.documentsUpload(getRatesRequest, token)
suspend fun saveFDOtherDataResponse(getRatesRequest: GetRatesRequest, token: String) =
apiInterface.getRates(getRatesRequest, token)
suspend fun saveFDOtherDataResponse(getRatesRequest: SaveFDOtherDataRequest, token: String) =
apiInterface.saveFDOtherData(getRatesRequest, token)
suspend fun getFDDetailsResponse(getRatesRequest: GetFDDetailsRequest, token: String) = suspend fun getFDDetailsResponse(getRatesRequest: GetFDDetailsRequest, token: String) =
apiInterface.getFDDetails(getRatesRequest, token) apiInterface.getFDDetails(getRatesRequest, token)


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

@ -1,19 +1,24 @@
package com.nivesh.production.bajajfd.ui.activity package com.nivesh.production.bajajfd.ui.activity
import android.R
import android.annotation.SuppressLint
import android.app.Dialog
import android.graphics.Bitmap
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import android.view.WindowManager
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager
import com.google.gson.Gson import com.google.gson.Gson
import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.adapter.DisableAdapter
import com.nivesh.production.bajajfd.adapter.SectionsPagerAdapter import com.nivesh.production.bajajfd.adapter.SectionsPagerAdapter
import com.nivesh.production.bajajfd.api.ApiClient import com.nivesh.production.bajajfd.api.ApiClient
import com.nivesh.production.bajajfd.databinding.ActivityBajajFdBinding import com.nivesh.production.bajajfd.databinding.ActivityBajajFdBinding
import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.interfaces.SendData
import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.model.*
import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.ui.fragment.* import com.nivesh.production.bajajfd.ui.fragment.*
@ -28,48 +33,35 @@ import com.nivesh.production.bajajfd.util.Resource
import com.nivesh.production.bajajfd.viewModel.* import com.nivesh.production.bajajfd.viewModel.*
class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{
class BajajFdMainActivity : BaseActivity() {
lateinit var binding: ActivityBajajFdBinding lateinit var binding: ActivityBajajFdBinding
private lateinit var viewModel: BajajFDViewModel private lateinit var viewModel: BajajFDViewModel
lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel
lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel
lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel
lateinit var stepFourBajajFDViewModel: StepFourBajajFDViewModel
lateinit var stepFiveBajajFDViewModel: StepFiveBajajFDViewModel
var createFDRequest: CreateFDRequest
var createFDApplicantRequest: CreateFDApplicationRequest
var applicantDetails: ApplicantDetails
var fdInvestmentDetails: FDInvestmentDetails
var applicantRelationDetails: ApplicantRelationDetails
var fdBankDetails: FdBankDetails
var nomineeDetails: NomineeDetails
var nomineeGuardianDetails: NomineeGuardianDetails
var getClientDetailsResponse: getClientDetailsResponse
private val stepOneBajajFDFragment = StepOneBajajFDFragment()
private val stepTwoBajajFDFragment = StepTwoBajajFDFragment()
private val stepThreeBajajFDFragment = StepThreeBajajFDFragment()
private val stepFourBajajFDFragment = StepFourBajajFDFragment()
private val stepFiveBajajFDFragment = StepFiveBajajFDFragment()
var createFDRequest: CreateFDRequest = CreateFDRequest()
var createFDApplicantRequest: CreateFDApplicationRequest = CreateFDApplicationRequest()
var applicantDetails: ApplicantDetails = ApplicantDetails()
var fdInvestmentDetails: FDInvestmentDetails = FDInvestmentDetails()
var applicantRelationDetails: ApplicantRelationDetails = ApplicantRelationDetails()
var fdBankDetails: FdBankDetails = FdBankDetails()
var nomineeDetails: NomineeDetails = NomineeDetails()
var nomineeGuardianDetails: NomineeGuardianDetails = NomineeGuardianDetails()
var getClientDetailsResponse: getClientDetailsResponse = getClientDetailsResponse()
private var stepCount: Int = 0 private var stepCount: Int = 0
private lateinit var sectionsPagerAdapter: SectionsPagerAdapter
private lateinit var fragments: Array<Fragment>
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
init() init()
} }
init {
getClientDetailsResponse = getClientDetailsResponse()
createFDRequest = CreateFDRequest()
createFDApplicantRequest = CreateFDApplicationRequest()
fdInvestmentDetails = FDInvestmentDetails()
applicantDetails = ApplicantDetails()
applicantRelationDetails = ApplicantRelationDetails()
fdBankDetails = FdBankDetails()
nomineeDetails = NomineeDetails()
nomineeGuardianDetails = NomineeGuardianDetails()
}
private fun init() { private fun init() {
binding = ActivityBajajFdBinding.inflate(layoutInflater) binding = ActivityBajajFdBinding.inflate(layoutInflater)
@ -80,26 +72,6 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{
this, this,
FDModelProviderFactory(MainRepository(ApiClient.getApiClient)) FDModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[BajajFDViewModel::class.java] )[BajajFDViewModel::class.java]
stepOneBajajFDViewModel = ViewModelProvider(
this,
StepOneModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[StepOneBajajFDViewModel::class.java]
stepTwoBajajFDViewModel = ViewModelProvider(
this,
StepTwoModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[StepTwoBajajFDViewModel::class.java]
stepThreeBajajFDViewModel = ViewModelProvider(
this,
StepThreeModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[StepThreeBajajFDViewModel::class.java]
stepFourBajajFDViewModel = ViewModelProvider(
this,
StepFourModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[StepFourBajajFDViewModel::class.java]
stepFiveBajajFDViewModel = ViewModelProvider(
this,
StepFiveModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[StepFiveBajajFDViewModel::class.java]
if (Common.isNetworkAvailable(this)) { if (Common.isNetworkAvailable(this)) {
getStepsCountApi() getStepsCountApi()
@ -111,69 +83,80 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{
} }
private fun getStepsCountApi() { private fun getStepsCountApi() {
val fdStepsCount = FDStepsCountRequest()
fdStepsCount.FDProvider = getString(com.nivesh.production.bajajfd.R.string.bajaj)
fdStepsCount.NiveshClientCode = "8872"
viewModel.getStepsCount(fdStepsCount, token)
viewModel.getStepsCountMutableData.observe(this) { response ->
when (response) {
is Resource.Success -> {
Log.e("response", "-->$response")
val stepsCountResponse: StepsCountResponse =
Gson().fromJson(response.data?.toString(), StepsCountResponse::class.java)
stepsCountResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
stepCount = stepsCountResponse.Response.StepsCount
getClientDetailsApi(stepsCountResponse.Response.StepsCount)
}
650 -> refreshToken(fdStepsCount)
else -> {
showDialogValidation(
this@BajajFdMainActivity,
stepsCountResponse.Response.Errors[0].ErrorMessage
)
if (Common.isNetworkAvailable(this)) {
val fdStepsCount = FDStepsCountRequest()
fdStepsCount.FDProvider = getString(R.string.bajaj)
fdStepsCount.NiveshClientCode = "60476"
//hemant client code =8872 /60476
viewModel.getStepsCount(fdStepsCount, token, this)
viewModel.getStepsCountMutableData.observe(this) { response ->
when (response) {
is Resource.Success -> {
Log.e("response", "-->$response")
val stepsCountResponse: StepsCountResponse =
Gson().fromJson(
response.data?.toString(),
StepsCountResponse::class.java
)
stepsCountResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
stepCount = stepsCountResponse.Response.StepsCount
getClientDetailsApi(stepsCountResponse.Response.StepsCount)
}
650 -> refreshToken(fdStepsCount)
else -> {
showDialogValidation(
this@BajajFdMainActivity,
stepsCountResponse.Response.Errors[0].ErrorMessage
)
}
} }
} }
} }
}
is Resource.Error -> {
response.message?.let { message ->
showDialogValidation(this@BajajFdMainActivity, message)
is Resource.Error -> {
response.message?.let { message ->
showDialogValidation(this@BajajFdMainActivity, message)
}
} }
}
is Resource.Loading -> {
is Resource.Loading -> {
}
is Resource.DataError -> {
}
} }
} }
} }
} }
private fun refreshToken(fdStepsCount: FDStepsCountRequest) { private fun refreshToken(fdStepsCount: FDStepsCountRequest) {
if (Common.isNetworkAvailable(this@BajajFdMainActivity)) {
}
} }
private fun getClientDetailsApi(stepsCount: Int) { private fun getClientDetailsApi(stepsCount: Int) {
if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { if (Common.isNetworkAvailable(this@BajajFdMainActivity)) {
val getClientDetailsRequest = getClientDetailsRequest() val getClientDetailsRequest = getClientDetailsRequest()
getClientDetailsRequest.client_code = "8872"
getClientDetailsRequest.AppOrWeb = getString(com.nivesh.production.bajajfd.R.string.app)
getClientDetailsRequest.sub_broker_code = "1038"
getClientDetailsRequest.client_code = "60476"
getClientDetailsRequest.AppOrWeb = getString(R.string.app)
getClientDetailsRequest.sub_broker_code = "3435"
//hemant 8872/1038
val userRequest = UserRequest() val userRequest = UserRequest()
userRequest.UID = 19060
userRequest.UID = 0
userRequest.IPAddress = "" userRequest.IPAddress = ""
userRequest.Source = getString(com.nivesh.production.bajajfd.R.string.source)
userRequest.AppOrWeb = getString(com.nivesh.production.bajajfd.R.string.app)
userRequest.Source = getString(R.string.source)
userRequest.AppOrWeb = getString(R.string.app)
userRequest.LoggedInRoleId = 5 userRequest.LoggedInRoleId = 5
val deviceInfo = DeviceInfo() val deviceInfo = DeviceInfo()
deviceInfo.device_id = "" deviceInfo.device_id = ""
deviceInfo.device_id_for_UMSId = "" deviceInfo.device_id_for_UMSId = ""
deviceInfo.device_type = getString(com.nivesh.production.bajajfd.R.string.app)
deviceInfo.device_type = getString(R.string.app)
deviceInfo.device_model = "" deviceInfo.device_model = ""
deviceInfo.device_token = "" deviceInfo.device_token = ""
deviceInfo.device_name = "" deviceInfo.device_name = ""
@ -182,7 +165,7 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{
userRequest.deviceInfo = deviceInfo userRequest.deviceInfo = deviceInfo
getClientDetailsRequest.UserRequest = userRequest getClientDetailsRequest.UserRequest = userRequest
Log.e("getClientDetailRequest", "-->" + Gson().toJson(getClientDetailsRequest)) Log.e("getClientDetailRequest", "-->" + Gson().toJson(getClientDetailsRequest))
viewModel.getClientDetails(getClientDetailsRequest, token)
viewModel.getClientDetails(getClientDetailsRequest, token, this)
viewModel.getClientDetailsMutableData.observe(this) { response -> viewModel.getClientDetailsMutableData.observe(this) { response ->
when (response) { when (response) {
is Resource.Success -> { is Resource.Success -> {
@ -213,6 +196,9 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{
} }
is Resource.Loading -> { is Resource.Loading -> {
}
is Resource.DataError -> {
} }
} }
} }
@ -224,19 +210,28 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{
// steps setting // steps setting
setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape()) setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape())
// set viewPager
val sectionsPagerAdapter =
SectionsPagerAdapter(this@BajajFdMainActivity, supportFragmentManager)
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))
if (stepCount == 3) {
fragments = arrayOf(
stepOneBajajFDFragment,
stepTwoBajajFDFragment,
stepFourBajajFDFragment,
stepFiveBajajFDFragment
)
} else if (stepCount == 4) {
fragments = arrayOf(
stepOneBajajFDFragment,
stepTwoBajajFDFragment,
stepThreeBajajFDFragment,
stepFourBajajFDFragment,
stepFiveBajajFDFragment
)
} }
sectionsPagerAdapter.addFragment(StepFourBajajFDFragment.getInstance(this@BajajFdMainActivity))
sectionsPagerAdapter.addFragment(StepFiveBajajFDFragment.getInstance(this@BajajFdMainActivity))
viewPager.adapter = sectionsPagerAdapter
// set viewPager
sectionsPagerAdapter = SectionsPagerAdapter(supportFragmentManager, fragments, stepsCount)
val viewPager: DisableAdapter = binding.viewPager
viewPager.setPagingEnabled(false)
viewPager.adapter = sectionsPagerAdapter
viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled( override fun onPageScrolled(
position: Int, position: Int,
@ -311,8 +306,8 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{
getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PAN getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PAN
checkFDKYCRequest.NiveshClientCode = checkFDKYCRequest.NiveshClientCode =
getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE.toString() getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE.toString()
stepOneBajajFDViewModel.checkFDKYC( checkFDKYCRequest, token)
stepOneBajajFDViewModel.getFDKYCMutableData.observe(this) { response ->
viewModel.checkFDKYC(checkFDKYCRequest, token, this)
viewModel.getFDKYCMutableData.observe(this) { response ->
when (response) { when (response) {
is Resource.Success -> { is Resource.Success -> {
Log.e("response", "-->$response") Log.e("response", "-->$response")
@ -345,6 +340,9 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{
} }
is Resource.Loading -> { is Resource.Loading -> {
}
is Resource.DataError -> {
} }
} }
} }
@ -368,93 +366,70 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface ,SendData{
} }
// step 1 response // step 1 response
override fun stepOneApi(data: String?) {
fun stepOneApi(data: String?) {
Log.e("stepOneApi", " response ---> $data") Log.e("stepOneApi", " response ---> $data")
binding.viewPager.currentItem = 1 binding.viewPager.currentItem = 1
} }
// step 2 response // step 2 response
override fun stepTwoApi(data: CreateFDRequest) {
Log.e("stepTwoApi", " response ---> $data")
if (stepCount == 4) {
// go to step 3 image Upload
binding.viewPager.currentItem = 2
} else {
// call create fd api bypass step 3
createFDApi(data, 2)
}
fun stepTwoApi(data: CreateFDApplicationResponse) {
Log.e("stepTwoApi", " response ---> " + Gson().toJson(data))
binding.viewPager.currentItem = 2
stepThreeBajajFDFragment.displayReceivedData(data)
} }
// step 3 response // step 3 response
override fun stepThreeApi(data: CreateFDRequest) {
Log.e("stepThreeApi", " response ---> $data")
fun stepThreeApi(data: CreateFDApplicationResponse) {
Log.e("stepThreeApi", " response --->" + Gson().toJson(data))
// call create fd api // call create fd api
createFDApi(data, 3)
binding.viewPager.currentItem = 3
stepFourBajajFDFragment.displayReceivedData(data)
} }
// step 4 response // step 4 response
override fun stepFourApi(data: String?) {
Log.e("stepFourApi", " response ---> $data")
binding.viewPager.currentItem = 4
fun stepFourApi(payUrl: String, value: String) {
paymentDialog(payUrl, value)
} }
private fun createFDApi(data: CreateFDRequest, currentItem: Int) {
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 =
Gson().fromJson(
response.data?.toString(),
CreateFDApplicationResponse::class.java
)
createFDApplicationResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
binding.viewPager.currentItem = currentItem
StepFourBajajFDFragment.getInstance(this)
.getFDData(createFDApplicationResponse ,this)
sendDataFragment("yaha data dalo")
}
@SuppressLint("SetJavaScriptEnabled")
fun paymentDialog(payUrl: String, value: String) {
Log.e("payUrl", "-->$payUrl")
Log.e("value", "-->$value")
val dialogWebView = Dialog(this@BajajFdMainActivity)
dialogWebView.setContentView(R.layout.row_fd_pay)
dialogWebView.setCancelable(true)
val tvCancel = dialogWebView.findViewById<TextView>(R.id.tvCancel)
tvCancel.setOnClickListener {
dialogWebView.dismiss()
}
// 650 -> refreshToken()
else -> {
showDialogValidation(
this@BajajFdMainActivity,
createFDApplicationResponse.Response.Errors[0].ErrorMessage
)
}
}
}
}
val lp = WindowManager.LayoutParams()
lp.copyFrom(dialogWebView.window?.attributes)
lp.width = WindowManager.LayoutParams.MATCH_PARENT
lp.height = WindowManager.LayoutParams.MATCH_PARENT
dialogWebView.window?.attributes = lp
val wVPay = dialogWebView.findViewById<WebView>(R.id.wVPay)
wVPay.webViewClient = MyWebViewClient()
wVPay.settings.javaScriptEnabled = true
wVPay.settings.domStorageEnabled = true
wVPay.loadUrl(payUrl)
dialogWebView.show()
}
is Resource.Error -> {
response.message?.let { message ->
showDialogValidation(this@BajajFdMainActivity, message)
}
}
is Resource.Loading -> {
class MyWebViewClient : WebViewClient() {
override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
Log.e("onPageStarted", "-->$url")
if (url.isNotEmpty() && url.contains("CustomerPaymentResponse")) {
}
}
} }
} }
}
override fun sendDataFragment(message: String?) {
val tag = "android:switcher:" + com.nivesh.production.bajajfd.R.id.viewPager.toString() + ":" + 1
val f: StepFourBajajFDFragment? = supportFragmentManager.findFragmentByTag(tag) as StepFourBajajFDFragment?
f.displayReceivedData(message)
override fun onPageFinished(view: WebView, url: String) {
super.onPageFinished(view, url)
}
} }

+ 14
- 0
app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BaseActivity.kt View File

@ -0,0 +1,14 @@
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
}
}

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

@ -0,0 +1,36 @@
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()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onStart() {
super.onStart()
}
override fun onStop() {
super.onStop()
}
}

+ 12
- 19
app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt View File

@ -6,33 +6,18 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.api.ApiClient
import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFiveBinding import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFiveBinding
import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.ui.providerfactory.StepFiveModelProviderFactory
import com.nivesh.production.bajajfd.viewModel.StepFiveBajajFDViewModel import com.nivesh.production.bajajfd.viewModel.StepFiveBajajFDViewModel
class StepFiveBajajFDFragment : Fragment() { class StepFiveBajajFDFragment : Fragment() {
private lateinit var stepFourViewModel: StepFiveBajajFDViewModel
private lateinit var stepFiveBajajFDViewModel: StepFiveBajajFDViewModel
private var _binding: FragmentBajajfdStepFiveBinding? = null private var _binding: FragmentBajajfdStepFiveBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
private lateinit var bajajFDInterface: BajajFDInterface
companion object {
fun getInstance(fdInterface: BajajFDInterface): StepFiveBajajFDFragment {
val stepFourFragment = StepFiveBajajFDFragment()
stepFourFragment.setApi(fdInterface)
return stepFourFragment
}
}
private fun setApi(bajajFDInterfaces: BajajFDInterface) {
bajajFDInterface = bajajFDInterfaces
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
@ -53,6 +38,14 @@ class StepFiveBajajFDFragment : Fragment() {
return root return root
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
stepFiveBajajFDViewModel = ViewModelProvider(
this,
StepFiveModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[StepFiveBajajFDViewModel::class.java]
}
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
_binding = null _binding = null


+ 148
- 78
app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt View File

@ -5,42 +5,34 @@ import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.google.gson.Gson import com.google.gson.Gson
import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.adapter.CustomerListAdapter import com.nivesh.production.bajajfd.adapter.CustomerListAdapter
import com.nivesh.production.bajajfd.api.ApiClient
import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFourBinding import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFourBinding
import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.model.*
import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import com.nivesh.production.bajajfd.ui.providerfactory.StepFourModelProviderFactory
import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common
import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation
import com.nivesh.production.bajajfd.util.Constants 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.util.Resource
import com.nivesh.production.bajajfd.viewModel.StepFourBajajFDViewModel import com.nivesh.production.bajajfd.viewModel.StepFourBajajFDViewModel
class StepFourBajajFDFragment : Fragment() {
class StepFourBajajFDFragment : BaseFragment() {
private lateinit var stepFourBajajFDViewModel: StepFourBajajFDViewModel private lateinit var stepFourBajajFDViewModel: StepFourBajajFDViewModel
private var _binding: FragmentBajajfdStepFourBinding? = null private var _binding: FragmentBajajfdStepFourBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
private var uniqueId: String? = ""
private lateinit var bajajFDInterface: BajajFDInterface
companion object {
fun getInstance(fdInterface: BajajFDInterface): StepFourBajajFDFragment {
val stepThreeFragment = StepFourBajajFDFragment()
stepThreeFragment.setApi(fdInterface)
return stepThreeFragment
}
}
private fun setApi(bajajFDInterfaces: BajajFDInterface) {
bajajFDInterface = bajajFDInterfaces
}
private lateinit var listOfCustomer: MutableList<GetCodes>
private var selectedList: String = ""
private var uniqueId: String = ""
private var payUrl: String = ""
private var value: String = ""
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
@ -48,17 +40,41 @@ class StepFourBajajFDFragment : Fragment() {
): View { ): View {
_binding = FragmentBajajfdStepFourBinding.inflate(inflater, container, false) _binding = FragmentBajajfdStepFourBinding.inflate(inflater, container, false)
val root = binding.root
return binding.root
}
stepFourBajajFDViewModel = (activity as BajajFdMainActivity).stepFourBajajFDViewModel
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
stepFourBajajFDViewModel = ViewModelProvider(
this,
StepFourModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[StepFourBajajFDViewModel::class.java]
binding.checkBox.setOnCheckedChangeListener { _, _ -> binding.checkBox.setOnCheckedChangeListener { _, _ ->
} }
binding.btnNext.setOnClickListener { binding.btnNext.setOnClickListener {
selectedList = ""
for (getCodes in listOfCustomer) {
if (getCodes.isSelected) {
selectedList = if (selectedList.isEmpty()) {
getCodes.Value
} else {
selectedList.plus(",").plus(getCodes.Value)
}
}
}
Log.e("selectedList", "-->$selectedList")
if (binding.checkBox.isChecked) { if (binding.checkBox.isChecked) {
bajajFDInterface.stepFourApi("stepFourResponse")
val saveFDOtherDataRequest = SaveFDOtherDataRequest()
saveFDOtherDataRequest.FDProvider = getString(R.string.bajaj)
saveFDOtherDataRequest.UniqueId = uniqueId
saveFDOtherDataRequest.Values = selectedList
saveFDOtherDataRequest.NiveshClientCode =
(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE
// bajajFDInterface.stepFourApi(saveFDOtherDataRequest, payUrl, Value)
saveFDOtherData(saveFDOtherDataRequest, payUrl, value)
} else { } else {
showDialogValidation( showDialogValidation(
activity as BajajFdMainActivity, activity as BajajFdMainActivity,
@ -66,77 +82,116 @@ class StepFourBajajFDFragment : Fragment() {
) )
} }
} }
return root
}
fun getFDData(
createFDApplicationResponse: CreateFDApplicationResponse,
activity: BajajFdMainActivity
)
{
uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId
//
getFDDetailsApi(createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId, activity)
customerListApi()
binding.btnBack.setOnClickListener {
(activity as BajajFdMainActivity).binding.viewPager.currentItem = 2
}
} }
private fun saveFDOtherData(data: SaveFDOtherDataRequest, payUrl: String, value: String) {
stepFourBajajFDViewModel.saveFDOtherData(data, token, activity as BajajFdMainActivity)
stepFourBajajFDViewModel.getFDOtherMutableData.observe(viewLifecycleOwner) { response ->
when (response) {
is Resource.Success -> {
Log.e("response", "-->" + response.data.toString())
val saveFDOtherDataResponse: SaveFDOtherDataResponse =
Gson().fromJson(
response.data?.toString(),
SaveFDOtherDataResponse::class.java
)
saveFDOtherDataResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
(activity as BajajFdMainActivity).stepFourApi(payUrl, value)
// paymentDialog(payUrl, value)
}
// 650 -> refreshToken()
else -> {
showDialogValidation(
activity as BajajFdMainActivity,
saveFDOtherDataResponse.Response.Errors[0].ErrorMessage
)
}
}
}
}
fun displayReceivedData(message: String) {
is Resource.Error -> {
response.message?.let { message ->
showDialogValidation(activity as BajajFdMainActivity, message)
}
}
is Resource.Loading -> {
Log.d("received data","Data received : $message")
}
is Resource.DataError -> {
}
}
}
} }
fun displayReceivedData(createFDApplicationResponse: CreateFDApplicationResponse) {
uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId
getFDDetailsApi(createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId)
customerListApi()
}
private fun customerListApi() { private fun customerListApi() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val getCodeRequest = GetCodeRequest()
getCodeRequest.ProductName = getString(R.string.bajajFD)
getCodeRequest.Category = getString(R.string.customerCategory)
getCodeRequest.Language = getString(R.string.language)
getCodeRequest.InputValue = ""
stepFourBajajFDViewModel.paymentModeApi(getCodeRequest, Constants.token)
stepFourBajajFDViewModel.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()) {
setUpRecyclerView(getCodeResponse.Response.GetCodesList)
}
val getCodeRequest = GetCodeRequest()
getCodeRequest.ProductName = getString(R.string.bajajFD)
getCodeRequest.Category = getString(R.string.customerCategory)
getCodeRequest.Language = getString(R.string.language)
getCodeRequest.InputValue = ""
stepFourBajajFDViewModel.paymentModeApi(
getCodeRequest,
Constants.token,
activity as BajajFdMainActivity
)
stepFourBajajFDViewModel.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()) {
listOfCustomer = getCodeResponse.Response.GetCodesList
setUpRecyclerView(listOfCustomer)
} }
// 650 -> refreshToken()
else -> {}
}
// 650 -> refreshToken()
else -> {
showDialogValidation(
activity as BajajFdMainActivity,
getCodeResponse.Response.Message
)
} }
} }
} }
}
is Resource.Error -> {
response.message?.let { message ->
Log.e(" ", "An error occurred:$message")
}
is Resource.Error -> {
response.message?.let { message ->
showDialogValidation(activity as BajajFdMainActivity, message)
} }
is Resource.Loading -> {
}
is Resource.Loading -> {
}
} }
}
is Resource.DataError -> {
}
}
} }
} }
private fun setUpRecyclerView(getCustomerList: List<GetCodes>) {
private fun setUpRecyclerView(getCustomerList: MutableList<GetCodes>) {
binding.rvTerms.layoutManager = binding.rvTerms.layoutManager =
LinearLayoutManager(activity as BajajFdMainActivity) LinearLayoutManager(activity as BajajFdMainActivity)
val customerListAdapter = CustomerListAdapter(getCustomerList) val customerListAdapter = CustomerListAdapter(getCustomerList)
@ -144,14 +199,18 @@ class StepFourBajajFDFragment : Fragment() {
} }
private fun getFDDetailsApi(uniqueId: String, activity: BajajFdMainActivity) {
if (Common.isNetworkAvailable(activity)) {
private fun getFDDetailsApi(uniqueId: String) {
if (Common.isNetworkAvailable(mActivity!!)) {
val getFDDetailsRequest = GetFDDetailsRequest() val getFDDetailsRequest = GetFDDetailsRequest()
getFDDetailsRequest.FDProvider = activity.resources.getString(R.string.bajaj)
getFDDetailsRequest.FDProvider = mActivity!!.getString(R.string.bajaj)
getFDDetailsRequest.NiveshClientCode = getFDDetailsRequest.NiveshClientCode =
activity.getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE
(mActivity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE
getFDDetailsRequest.UniqueId = uniqueId getFDDetailsRequest.UniqueId = uniqueId
stepFourBajajFDViewModel.getFDDetails(getFDDetailsRequest, Constants.token)
stepFourBajajFDViewModel.getFDDetails(
getFDDetailsRequest,
Constants.token,
activity as BajajFdMainActivity
)
stepFourBajajFDViewModel.getFDDetailsMutableData.observe(viewLifecycleOwner) { response -> stepFourBajajFDViewModel.getFDDetailsMutableData.observe(viewLifecycleOwner) { response ->
when (response) { when (response) {
is Resource.Success -> { is Resource.Success -> {
@ -165,31 +224,42 @@ class StepFourBajajFDFragment : Fragment() {
when (code) { when (code) {
200 -> { 200 -> {
binding.tvInvestedAmount.text = binding.tvInvestedAmount.text =
getFDDetailsResponse.Response.FDDataResponse.FDAmount.toString()
getString(R.string.rs).plus(getFDDetailsResponse.Response.FDDataResponse.FDAmount.toString())
binding.tvTenure.text = binding.tvTenure.text =
getFDDetailsResponse.Response.FDDataResponse.Tenure.toString() getFDDetailsResponse.Response.FDDataResponse.Tenure.toString()
.plus(" Months")
binding.tvInterestPayout.text = binding.tvInterestPayout.text =
getFDDetailsResponse.Response.FDDataResponse.Frequency getFDDetailsResponse.Response.FDDataResponse.Frequency
binding.tvRateOfInterest.text = binding.tvRateOfInterest.text =
getFDDetailsResponse.Response.FDDataResponse.RateOfInterest.toString() getFDDetailsResponse.Response.FDDataResponse.RateOfInterest.toString()
.plus(" % p.a.")
payUrl = getFDDetailsResponse.Response.FDDataResponse.PaymentUrl
value = getFDDetailsResponse.Response.FDDataResponse.Value
} }
// 650 -> refreshToken() // 650 -> refreshToken()
else -> {}
else -> {
showDialogValidation(
activity as BajajFdMainActivity,
getFDDetailsResponse.Response.Errors[0].ErrorMessage
)
}
} }
} }
} }
is Resource.Error -> { is Resource.Error -> {
response.message?.let { message -> response.message?.let { message ->
Log.e(" ", "An error occurred:$message")
showDialogValidation(activity as BajajFdMainActivity, message)
} }
} }
is Resource.Loading -> { is Resource.Loading -> {
}
is Resource.DataError -> {
} }
} }
} }
} }
} }


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

@ -12,17 +12,19 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import android.widget.RadioButton import android.widget.RadioButton
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView.LayoutManager import androidx.recyclerview.widget.RecyclerView.LayoutManager
import com.google.gson.Gson import com.google.gson.Gson
import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.adapter.HorizontalRecyclerViewAdapter import com.nivesh.production.bajajfd.adapter.HorizontalRecyclerViewAdapter
import com.nivesh.production.bajajfd.api.ApiClient
import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepOneBinding import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepOneBinding
import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.model.*
import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import com.nivesh.production.bajajfd.ui.providerfactory.StepOneModelProviderFactory
import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common
import com.nivesh.production.bajajfd.util.Common.Companion.commonErrorMethod import com.nivesh.production.bajajfd.util.Common.Companion.commonErrorMethod
import com.nivesh.production.bajajfd.util.Common.Companion.removeError import com.nivesh.production.bajajfd.util.Common.Companion.removeError
@ -31,11 +33,10 @@ import com.nivesh.production.bajajfd.util.Resource
import com.nivesh.production.bajajfd.viewModel.StepOneBajajFDViewModel import com.nivesh.production.bajajfd.viewModel.StepOneBajajFDViewModel
class StepOneBajajFDFragment : Fragment() {
class StepOneBajajFDFragment : BaseFragment() {
private var _binding: FragmentBajajfdStepOneBinding? = null private var _binding: FragmentBajajfdStepOneBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
private lateinit var bajajFDInterface: BajajFDInterface
private lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel private lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel
private lateinit var rgMaturity: RadioButton private lateinit var rgMaturity: RadioButton
private lateinit var listOfTenure: MutableList<ROIDataList> private lateinit var listOfTenure: MutableList<ROIDataList>
@ -47,25 +48,19 @@ class StepOneBajajFDFragment : Fragment() {
private var tenure: Int = 0 private var tenure: Int = 0
private var interest: Double = 0.0 private var interest: Double = 0.0
companion object {
fun getInstance(fdInterface: BajajFDInterface): StepOneBajajFDFragment {
val stepStartFragment = StepOneBajajFDFragment()
stepStartFragment.setApi(fdInterface)
return stepStartFragment
}
}
private fun setApi(bajajFDInterfaces: BajajFDInterface) {
bajajFDInterface = bajajFDInterfaces
}
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View { ): View {
_binding = FragmentBajajfdStepOneBinding.inflate(inflater, container, false) _binding = FragmentBajajfdStepOneBinding.inflate(inflater, container, false)
val root = binding.root
return binding.root
}
stepOneBajajFDViewModel = (activity as BajajFdMainActivity).stepOneBajajFDViewModel
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
stepOneBajajFDViewModel = ViewModelProvider(
this,
StepOneModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[StepOneBajajFDViewModel::class.java]
listOfTenure = ArrayList() listOfTenure = ArrayList()
binding.edtAmount.filters = arrayOf<InputFilter>(InputFilter.LengthFilter(8)) // upto 1 Cr binding.edtAmount.filters = arrayOf<InputFilter>(InputFilter.LengthFilter(8)) // upto 1 Cr
@ -142,7 +137,7 @@ class StepOneBajajFDFragment : Fragment() {
binding.spInterestPayout.text.toString() binding.spInterestPayout.text.toString()
(activity as BajajFdMainActivity).fdInvestmentDetails.Tenure = tenure (activity as BajajFdMainActivity).fdInvestmentDetails.Tenure = tenure
(activity as BajajFdMainActivity).fdInvestmentDetails.Interest = interest (activity as BajajFdMainActivity).fdInvestmentDetails.Interest = interest
(activity as BajajFdMainActivity).fdInvestmentDetails.NiveshClientCode = "8872"
(activity as BajajFdMainActivity).fdInvestmentDetails.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE
(activity as BajajFdMainActivity).fdInvestmentDetails.Provider = (activity as BajajFdMainActivity).fdInvestmentDetails.Provider =
getString(R.string.bajaj) getString(R.string.bajaj)
(activity as BajajFdMainActivity).fdInvestmentDetails.IPAddress = "192.168.1.23" (activity as BajajFdMainActivity).fdInvestmentDetails.IPAddress = "192.168.1.23"
@ -160,16 +155,19 @@ class StepOneBajajFDFragment : Fragment() {
(activity as BajajFdMainActivity).fdInvestmentDetails.CustomerType = "" (activity as BajajFdMainActivity).fdInvestmentDetails.CustomerType = ""
(activity as BajajFdMainActivity).fdInvestmentDetails.CKYCNumber = "" (activity as BajajFdMainActivity).fdInvestmentDetails.CKYCNumber = ""
(activity as BajajFdMainActivity).createFDApplicantRequest.FDInvestmentDetails = (activity as BajajFdMainActivity).fdInvestmentDetails
Log.e("Maturity", "-->" + rgMaturity.text)
bajajFDInterface.stepOneApi("stepOneResponse")
(activity as BajajFdMainActivity).createFDApplicantRequest.FDInvestmentDetails =
(activity as BajajFdMainActivity).fdInvestmentDetails
Log.e(
"StepOneData",
"-->" + Gson().toJson((activity as BajajFdMainActivity).fdInvestmentDetails)
)
(activity as BajajFdMainActivity).stepOneApi("stepOneResponse")
} }
} }
minAmountApi() minAmountApi()
interestPayoutApi() interestPayoutApi()
return root
} }
private fun interestPayoutApi() { private fun interestPayoutApi() {
@ -178,7 +176,7 @@ class StepOneBajajFDFragment : Fragment() {
getCodeRequest.Category = getString(R.string.category) getCodeRequest.Category = getString(R.string.category)
getCodeRequest.Language = getString(R.string.language) getCodeRequest.Language = getString(R.string.language)
getCodeRequest.InputValue = "" getCodeRequest.InputValue = ""
stepOneBajajFDViewModel.getCode(getCodeRequest, token)
stepOneBajajFDViewModel.getCode(getCodeRequest, token, activity as BajajFdMainActivity)
stepOneBajajFDViewModel.getCodeMutableData.observe(viewLifecycleOwner) { response -> stepOneBajajFDViewModel.getCodeMutableData.observe(viewLifecycleOwner) { response ->
when (response) { when (response) {
is Resource.Success -> { is Resource.Success -> {
@ -223,6 +221,9 @@ class StepOneBajajFDFragment : Fragment() {
} }
is Resource.Loading -> { is Resource.Loading -> {
}
is Resource.DataError -> {
} }
} }
} }
@ -234,7 +235,7 @@ class StepOneBajajFDFragment : Fragment() {
getCodeRequest.Category = getString(R.string.minAmountCategory) getCodeRequest.Category = getString(R.string.minAmountCategory)
getCodeRequest.Language = getString(R.string.language) getCodeRequest.Language = getString(R.string.language)
getCodeRequest.InputValue = "" getCodeRequest.InputValue = ""
stepOneBajajFDViewModel.getMinAmount(getCodeRequest, token)
stepOneBajajFDViewModel.getMinAmount(getCodeRequest, token, activity as BajajFdMainActivity)
stepOneBajajFDViewModel.getMinAmountMutableData.observe(viewLifecycleOwner) { response -> stepOneBajajFDViewModel.getMinAmountMutableData.observe(viewLifecycleOwner) { response ->
when (response) { when (response) {
is Resource.Success -> { is Resource.Success -> {
@ -270,6 +271,9 @@ class StepOneBajajFDFragment : Fragment() {
} }
is Resource.Loading -> { is Resource.Loading -> {
}
is Resource.DataError -> {
} }
} }
} }
@ -281,7 +285,7 @@ class StepOneBajajFDFragment : Fragment() {
getCodeRequest.Category = getString(R.string.MaxAmountCategory) getCodeRequest.Category = getString(R.string.MaxAmountCategory)
getCodeRequest.Language = getString(R.string.language) getCodeRequest.Language = getString(R.string.language)
getCodeRequest.InputValue = "" getCodeRequest.InputValue = ""
stepOneBajajFDViewModel.getMaxAmount(getCodeRequest, token)
stepOneBajajFDViewModel.getMaxAmount(getCodeRequest, token, activity as BajajFdMainActivity)
stepOneBajajFDViewModel.getMaxAmountMutableData.observe(viewLifecycleOwner) { response -> stepOneBajajFDViewModel.getMaxAmountMutableData.observe(viewLifecycleOwner) { response ->
when (response) { when (response) {
is Resource.Success -> { is Resource.Success -> {
@ -311,6 +315,9 @@ class StepOneBajajFDFragment : Fragment() {
} }
is Resource.Loading -> { is Resource.Loading -> {
}
is Resource.DataError -> {
} }
} }
} }
@ -336,50 +343,59 @@ class StepOneBajajFDFragment : Fragment() {
} }
private fun maturityAmountApi(tenure: Int, interest: Double) { private fun maturityAmountApi(tenure: Int, interest: Double) {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
if (binding.edtAmount.text.toString().length >= 4 && interest != 0.0 && tenure != 0) {
val maturityAmountRequest = GetMaturityAmountRequest()
maturityAmountRequest.FDProvider = getString(R.string.bajaj)
maturityAmountRequest.FDAmount = binding.edtAmount.text.toString().toInt()
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(" ").plus(
getMaturityAmountResponse.Response.MaturityAmount.toString()
)
}
// 650 -> refreshToken()
else -> {
Common.showDialogValidation(
activity as BajajFdMainActivity,
getMaturityAmountResponse.Response.Errors[0].ErrorMessage
if (binding.edtAmount.text.toString().length >= 4 && interest != 0.0 && tenure != 0 && binding.spInterestPayout.text.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,
activity as BajajFdMainActivity
)
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(" ").plus(
getMaturityAmountResponse.Response.MaturityAmount.toString()
) )
}
}
// 650 -> refreshToken()
else -> {
Common.showDialogValidation(
activity as BajajFdMainActivity,
getMaturityAmountResponse.Response.Errors[0].ErrorMessage
)
} }
} }
} }
}
is Resource.Error -> {
response.message?.let { message ->
Common.showDialogValidation(activity as BajajFdMainActivity, message)
}
is Resource.Error -> {
response.message?.let { message ->
Common.showDialogValidation(
activity as BajajFdMainActivity,
message
)
} }
is Resource.Loading -> {
}
is Resource.Loading -> {
}
is Resource.DataError -> {
}
} }
} }
} }
@ -427,77 +443,78 @@ class StepOneBajajFDFragment : Fragment() {
} }
private fun getRatesApi() { private fun getRatesApi() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val getRatesRequest = GetRatesRequest()
getRatesRequest.fdProvider = getString(R.string.bajaj)
getRatesRequest.frequency = binding.spInterestPayout.text.toString()
if (binding.swSeniorCitizen.isChecked) {
getRatesRequest.type = getString(R.string.seniorCitizen)
} else {
getRatesRequest.type = getString(R.string.nonSeniorCitizen)
}
stepOneBajajFDViewModel.getRates(getRatesRequest, token)
stepOneBajajFDViewModel.getRatesMutableData.observe(viewLifecycleOwner) { response ->
when (response) {
is Resource.Success -> {
val getRatesResponse: GetRatesResponse =
Gson().fromJson(response.data?.toString(), GetRatesResponse::class.java)
getRatesResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
if (listOfTenure.isNotEmpty()) {
listOfTenure.clear()
}
listOfTenure = getRatesResponse.Response.ROIDatalist
// 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)
binding.spTenure.setText(
tenureAdapter.getItem(0)?.Tenure.plus(
" Months | "
).plus(tenureAdapter.getItem(0)?.ROI).plus(" %"), false
val getRatesRequest = GetRatesRequest()
getRatesRequest.fdProvider = getString(R.string.bajaj)
getRatesRequest.frequency = binding.spInterestPayout.text.toString()
if (binding.swSeniorCitizen.isChecked) {
getRatesRequest.type = getString(R.string.seniorCitizen)
} else {
getRatesRequest.type = getString(R.string.nonSeniorCitizen)
}
stepOneBajajFDViewModel.getRates(getRatesRequest, token, activity as BajajFdMainActivity)
stepOneBajajFDViewModel.getRatesMutableData.observe(viewLifecycleOwner) { response ->
when (response) {
is Resource.Success -> {
val getRatesResponse: GetRatesResponse =
Gson().fromJson(response.data?.toString(), GetRatesResponse::class.java)
getRatesResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
if (listOfTenure.isNotEmpty()) {
listOfTenure.clear()
}
listOfTenure = getRatesResponse.Response.ROIDatalist
// Tenure
if (listOfTenure.isNotEmpty()) {
listOfTenure.sortWith { lhs: ROIDataList, rhs: ROIDataList ->
rhs.Tenure.compareTo(
lhs.Tenure
) )
tenure = tenureAdapter.getItem(0)?.Tenure.toString().toInt()
interest = tenureAdapter.getItem(0)?.ROI ?: 0.0
binding.tvROI.text =
tenureAdapter.getItem(0)?.ROI.toString().plus(" %")
setUpRecyclerView()
} else {
binding.ORLayout.visibility = View.GONE
} }
}
// 650 -> refreshToken()
else -> {
Common.showDialogValidation(
activity as BajajFdMainActivity,
getRatesResponse.Response.Errors[0].ErrorMessage
binding.ORLayout.visibility = View.VISIBLE
val tenureAdapter =
ArrayAdapter(
activity as BajajFdMainActivity,
R.layout.spinner_dropdown,
listOfTenure
)
binding.spTenure.setAdapter(tenureAdapter)
binding.spTenure.setText(
tenureAdapter.getItem(0)?.Tenure.plus(
" Months | "
).plus(tenureAdapter.getItem(0)?.ROI).plus(" %"), false
) )
tenure = tenureAdapter.getItem(0)?.Tenure.toString().toInt()
interest = tenureAdapter.getItem(0)?.ROI ?: 0.0
binding.tvROI.text =
tenureAdapter.getItem(0)?.ROI.toString().plus(" %")
setUpRecyclerView()
} else {
binding.ORLayout.visibility = View.GONE
} }
} }
// 650 -> refreshToken()
else -> {
Common.showDialogValidation(
activity as BajajFdMainActivity,
getRatesResponse.Response.Errors[0].ErrorMessage
)
}
} }
} }
}
is Resource.Error -> {
response.message?.let { message ->
Common.showDialogValidation(activity as BajajFdMainActivity, message)
}
is Resource.Error -> {
response.message?.let { message ->
Common.showDialogValidation(activity as BajajFdMainActivity, message)
} }
is Resource.Loading -> {
}
is Resource.Loading -> {
}
is Resource.DataError -> {
}
} }
} }
} }


+ 318
- 130
app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt View File

@ -1,80 +1,64 @@
package com.nivesh.production.bajajfd.ui.fragment package com.nivesh.production.bajajfd.ui.fragment
import android.Manifest import android.Manifest
import android.annotation.SuppressLint
import android.app.ActionBar.LayoutParams import android.app.ActionBar.LayoutParams
import android.app.Dialog import android.app.Dialog
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.database.Cursor
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.MediaStore
import android.provider.OpenableColumns
import android.util.Base64
import android.util.Log import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.ImageView
import android.widget.TextView
import android.widget.*
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson import com.google.gson.Gson
import com.nivesh.production.bajajfd.BuildConfig import com.nivesh.production.bajajfd.BuildConfig
import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.api.ApiClient
import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepThreeBinding import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepThreeBinding
import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.model.*
import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import com.nivesh.production.bajajfd.ui.providerfactory.StepThreeModelProviderFactory
import com.nivesh.production.bajajfd.util.Common import com.nivesh.production.bajajfd.util.Common
import com.nivesh.production.bajajfd.util.Constants import com.nivesh.production.bajajfd.util.Constants
import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.util.Resource
import com.nivesh.production.bajajfd.viewModel.StepThreeBajajFDViewModel import com.nivesh.production.bajajfd.viewModel.StepThreeBajajFDViewModel
import java.io.File import java.io.File
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 latestTmpUri: Uri? = null
private var _binding: FragmentBajajfdStepThreeBinding? = null private var _binding: FragmentBajajfdStepThreeBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
private lateinit var listOfDocType: List<GetCodes> private lateinit var listOfDocType: List<GetCodes>
private lateinit var bajajFDInterface: BajajFDInterface
private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel
private lateinit var dialog: Dialog private lateinit var dialog: Dialog
private var takeImageResult: ActivityResultLauncher<Uri>? = null
private var selectImageIntent: ActivityResultLauncher<String>? = null
private val mapImage: HashMap<String, String> = HashMap()
companion object {
fun getInstance(fdInterface: BajajFDInterface): StepThreeBajajFDFragment {
val stepTwoFragment = StepThreeBajajFDFragment()
stepTwoFragment.setApi(fdInterface)
return stepTwoFragment
}
}
private fun setApi(bajajFDInterfaces: BajajFDInterface) {
bajajFDInterface = bajajFDInterfaces
}
private val selectImageIntent = registerForActivityResult(ActivityResultContracts.GetContent())
{ uri ->
val bitmap: Bitmap = MediaStore.Images.Media.getBitmap(context?.contentResolver, uri)
binding.iv.setImageBitmap(bitmap)
}
private val takeImageResult =
registerForActivityResult(ActivityResultContracts.TakePicture()) { isSuccess ->
if (isSuccess) {
latestTmpUri?.let { uri ->
// binding.iv.setImageURI(uri)
uploadDocument()
}
}
}
private var front: String = ""
private var fileExt: String? = ""
private var uniqueId: String? = ""
private var selectedImage: String? = ""
private var checkPANUploadFile: Boolean? = false
private var checkPhotoUploadFile: Boolean? = false
private val requestPermission = registerForActivityResult( private val requestPermission = registerForActivityResult(
ActivityResultContracts.RequestPermission() ActivityResultContracts.RequestPermission()
@ -93,21 +77,71 @@ class StepThreeBajajFDFragment : Fragment() {
): View { ): View {
_binding = FragmentBajajfdStepThreeBinding.inflate(inflater, container, false) _binding = FragmentBajajfdStepThreeBinding.inflate(inflater, container, false)
val root = binding.root
stepThreeBajajFDViewModel = (activity as BajajFdMainActivity).stepThreeBajajFDViewModel
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
stepThreeBajajFDViewModel = ViewModelProvider(
this,
StepThreeModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[StepThreeBajajFDViewModel::class.java]
selectImageIntent = registerForActivityResult(ActivityResultContracts.GetContent())
{ uri: Uri? ->
if (uri != null) {
uploadDocument(uri)
}
}
takeImageResult =
registerForActivityResult(ActivityResultContracts.TakePicture()) { isSuccess ->
if (isSuccess) {
latestTmpUri?.let { uri ->
uploadDocument(uri)
}
}
}
binding.btnNext.setOnClickListener { binding.btnNext.setOnClickListener {
// if (validate()) {
//
bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest)
// }
if (validate()) {
var uploadPosition = 0
for (entry in mapImage.iterator()) {
uploadPosition++
if (entry.key.contains("Main ")) {
uploadDocApi(entry.key.replace("Main ", ""), entry.value, uploadPosition)
} else {
uploadDocApi(entry.key, entry.value, uploadPosition)
}
}
}
} }
binding.btnBack.setOnClickListener { binding.btnBack.setOnClickListener {
(activity as BajajFdMainActivity).binding.viewPager.currentItem = 1 (activity as BajajFdMainActivity).binding.viewPager.currentItem = 1
} }
binding.btnPANUpload.setOnClickListener {
checkPANUploadFile = true
checkPhotoUploadFile = false
selectImage("PAN")
}
binding.btnPhotoUpload.setOnClickListener {
checkPhotoUploadFile = true
checkPANUploadFile = false
selectImage("Photograph")
}
binding.btnAadhaarFrontUpload.setOnClickListener { binding.btnAadhaarFrontUpload.setOnClickListener {
selectImage()
checkPANUploadFile = false
checkPhotoUploadFile = false
selectImage(binding.spDocType.text.toString())
}
binding.btnAadhaarBackUpload.setOnClickListener {
checkPANUploadFile = false
checkPhotoUploadFile = false
selectImage(binding.spDocType.text.toString())
} }
binding.spDocType.onItemClickListener = binding.spDocType.onItemClickListener =
@ -124,10 +158,32 @@ class StepThreeBajajFDFragment : Fragment() {
} }
docTypeApi() docTypeApi()
return root
} }
private fun selectImage() {
@SuppressLint("Range")
fun getFileName(uri: Uri): String {
var result = ""
if (uri.scheme == "content") {
val cursor: Cursor =
requireActivity().contentResolver.query(uri, null, null, null, null)!!
cursor.use { cursor1 ->
if (cursor1.moveToFirst()) {
result = cursor1.getString(cursor1.getColumnIndex(OpenableColumns.DISPLAY_NAME))
}
}
}
if (result.isEmpty()) {
result = uri.path!!
val cut = result.lastIndexOf('/')
if (cut != -1) {
result = result.substring(cut + 1)
}
}
return result
}
private fun selectImage(fileType: String) {
selectedImage = fileType
dialog = Dialog(activity as BajajFdMainActivity) dialog = Dialog(activity as BajajFdMainActivity)
dialog.setContentView(R.layout.camera_gallery_layout) dialog.setContentView(R.layout.camera_gallery_layout)
val ivCut: ImageView = dialog.findViewById(R.id.ivCut) val ivCut: ImageView = dialog.findViewById(R.id.ivCut)
@ -140,55 +196,31 @@ class StepThreeBajajFDFragment : Fragment() {
tvGallery.setOnClickListener { tvGallery.setOnClickListener {
dialog.cancel() dialog.cancel()
when {
ContextCompat.checkSelfPermission(
activity as BajajFdMainActivity,
Manifest.permission.READ_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED -> {
selectImageIntent.launch("image/*")
}
ActivityCompat.shouldShowRequestPermissionRationale(
activity as BajajFdMainActivity,
val permission = ContextCompat.checkSelfPermission(
activity as BajajFdMainActivity,
Manifest.permission.READ_EXTERNAL_STORAGE
)
if (permission == PackageManager.PERMISSION_GRANTED) {
selectImageIntent?.launch("image/*")
} else {
requestPermission.launch(
Manifest.permission.READ_EXTERNAL_STORAGE Manifest.permission.READ_EXTERNAL_STORAGE
) -> {
requestPermission.launch(
Manifest.permission.READ_EXTERNAL_STORAGE
)
}
else -> {
requestPermission.launch(
Manifest.permission.READ_EXTERNAL_STORAGE
)
}
)
} }
} }
tvCamera.setOnClickListener { tvCamera.setOnClickListener {
dialog.cancel() dialog.cancel()
when {
ContextCompat.checkSelfPermission(
activity as BajajFdMainActivity,
Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED -> {
takeImage()
}
ActivityCompat.shouldShowRequestPermissionRationale(
activity as BajajFdMainActivity,
val permission = ContextCompat.checkSelfPermission(
activity as BajajFdMainActivity,
Manifest.permission.CAMERA
)
if (permission == PackageManager.PERMISSION_GRANTED) {
takeImage()
} else {
requestPermission.launch(
Manifest.permission.CAMERA Manifest.permission.CAMERA
) -> {
requestPermission.launch(
Manifest.permission.CAMERA
)
}
else -> {
requestPermission.launch(
Manifest.permission.CAMERA
)
}
)
} }
} }
@ -196,13 +228,6 @@ class StepThreeBajajFDFragment : Fragment() {
dialog.window?.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT) dialog.window?.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
} }
private fun checkCameraStoragePermission(
permission: String,
selectImageIntent: ActivityResultLauncher<String>
) {
TODO("Not yet implemented")
}
private fun setOtherUploadLayout(itemName: String) { private fun setOtherUploadLayout(itemName: String) {
binding.tvAadhaarFront.text = itemName.plus(" Front *") binding.tvAadhaarFront.text = itemName.plus(" Front *")
if (binding.tvAadhaarBack.visibility == View.VISIBLE) binding.tvAadhaarBack.visibility = if (binding.tvAadhaarBack.visibility == View.VISIBLE) binding.tvAadhaarBack.visibility =
@ -222,46 +247,139 @@ class StepThreeBajajFDFragment : Fragment() {
binding.btnAadhaarFrontUpload.visibility = View.VISIBLE binding.btnAadhaarFrontUpload.visibility = View.VISIBLE
} }
private fun uploadDocument() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val documentUpload = DocumentUpload()
private fun uploadDocument(uri: Uri) {
val fileDir: File = requireActivity().cacheDir
val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri)))
fileExt = fileExtension.extension
encodedFileToBase64(fileExtension)
if (checkPANUploadFile == true || checkPhotoUploadFile == true) {
mapImage["Main ".plus(selectedImage)] = front
} else {
selectedImage?.let { mapImage.put(it, front) }
} }
} }
private fun docTypeApi() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val getCodeRequest = GetCodeRequest()
getCodeRequest.ProductName = getString(R.string.bajajFD)
getCodeRequest.Category = getString(R.string.docType)
getCodeRequest.Language = getString(R.string.language)
getCodeRequest.InputValue = ""
stepThreeBajajFDViewModel.titleApi(getCodeRequest, Constants.token)
stepThreeBajajFDViewModel.getTitleMutableData.observe(viewLifecycleOwner) { response ->
private fun encodedFileToBase64(fileName: File?) {
front = try {
val bytes: ByteArray? = fileName?.let { loadFile(it) }
Base64.encodeToString(bytes, Base64.DEFAULT).trim { it <= ' ' }
.replace("\n".toRegex(), "").replace("\\s+".toRegex(), "")
} catch (e: Exception) {
e.printStackTrace()
""
}
}
@Throws(IOException::class)
private fun loadFile(file: File): ByteArray {
val inputStream: InputStream = FileInputStream(file)
val length = file.length()
val bytes = ByteArray(length.toInt())
var offset = 0
var numRead = 0
while (offset < bytes.size && inputStream.read(bytes, offset, bytes.size - offset).also {
numRead = it
} >= 0) {
offset += numRead
}
if (offset < bytes.size) {
throw IOException("Could not completely read file " + file.name)
}
inputStream.close()
return bytes
}
private fun uploadDocApi(key: String, imageBase64: String, uploadPosition: Int) {
val du = DocumentUpload()
du.Description = key
du.DocumentType = key
du.FDProvider = getString(R.string.bajaj)
du.ImageEncodeToBase64 =
"data:image/" + "." + fileExt + ";base64,".plus(imageBase64) //"data:image/png;base64"
du.NiveshClientCode =
(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE
du.UniqueId = uniqueId
stepThreeBajajFDViewModel.documentsUpload(
du,
Constants.token,
activity as BajajFdMainActivity
)
stepThreeBajajFDViewModel.getDocumentUploadMutableData.observe(viewLifecycleOwner) { response ->
when (response) {
is Resource.Success -> {
Log.e("UploadImage", "Response-->" + response.data.toString())
val getUploadResponse: UploadResponse =
Gson().fromJson(response.data?.toString(), UploadResponse::class.java)
getUploadResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
Log.e("check_upload_res", response.message.toString())
if (uploadPosition == mapImage.size) {
Toast.makeText(
requireActivity(),
"".plus(mapImage.size.toString() + " Last Image Uploaded ") +
uploadPosition,
Toast.LENGTH_LONG
).show()
// bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest)
createFDApi((activity as BajajFdMainActivity).createFDRequest)
}
}
// 650 -> refreshToken()
else -> {
Common.showDialogValidation(
activity as BajajFdMainActivity,
getUploadResponse.Response.Message
)
}
}
}
}
is Resource.Error -> {
response.message?.let { message ->
Common.showDialogValidation(activity as BajajFdMainActivity, message)
}
}
is Resource.Loading -> {
}
is Resource.DataError -> {
}
}
}
}
private fun createFDApi(data: CreateFDRequest) {
stepThreeBajajFDViewModel.createFDApi(
data,
Constants.token,
activity as BajajFdMainActivity
)
stepThreeBajajFDViewModel.getFDResponseMutableData.observe(viewLifecycleOwner) { response ->
when (response) { when (response) {
is Resource.Success -> { is Resource.Success -> {
Log.e("response", "-->$response")
val getCodeResponse: GetCodeResponse =
Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java)
getCodeResponse.Response.StatusCode.let { code ->
Log.e("createFDApi", "response--> " + response.data.toString())
val createFDApplicationResponse: CreateFDApplicationResponse =
Gson().fromJson(
response.data?.toString(),
CreateFDApplicationResponse::class.java
)
createFDApplicationResponse.Response.StatusCode.let { code ->
when (code) { when (code) {
200 -> { 200 -> {
listOfDocType = getCodeResponse.Response.GetCodesList
if (listOfDocType.isNotEmpty()) {
val adapter = ArrayAdapter(
activity as BajajFdMainActivity,
R.layout.spinner_dropdown,
listOfDocType
)
binding.spDocType.setAdapter(adapter)
binding.spDocType.setText(
adapter.getItem(0)?.Value,
false
)
setOtherUploadLayout(listOfDocType[0].Value)
}
(activity as BajajFdMainActivity).stepThreeApi(
createFDApplicationResponse
)
} }
// 650 -> refreshToken() // 650 -> refreshToken()
else -> {}
else -> {
Common.showDialogValidation(
activity as BajajFdMainActivity,
createFDApplicationResponse.Response.Errors[0].ErrorMessage
)
}
} }
} }
} }
@ -273,22 +391,88 @@ class StepThreeBajajFDFragment : Fragment() {
} }
is Resource.Loading -> { is Resource.Loading -> {
}
is Resource.DataError -> {
} }
} }
} }
}
private fun docTypeApi() {
val getCodeRequest = GetCodeRequest()
getCodeRequest.ProductName = getString(R.string.bajajFD)
getCodeRequest.Category = getString(R.string.docType)
getCodeRequest.Language = getString(R.string.language)
getCodeRequest.InputValue = ""
stepThreeBajajFDViewModel.titleApi(
getCodeRequest,
Constants.token,
activity as BajajFdMainActivity
)
stepThreeBajajFDViewModel.getTitleMutableData.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 -> {
listOfDocType = getCodeResponse.Response.GetCodesList
if (listOfDocType.isNotEmpty()) {
val adapter = ArrayAdapter(
activity as BajajFdMainActivity,
R.layout.spinner_dropdown,
listOfDocType
)
binding.spDocType.setAdapter(adapter)
binding.spDocType.setText(
adapter.getItem(0)?.Value,
false
)
setOtherUploadLayout(listOfDocType[0].Value)
}
}
// 650 -> refreshToken()
else -> {
Common.showDialogValidation(
activity as BajajFdMainActivity,
getCodeResponse.Response.Message
)
}
}
}
}
is Resource.Error -> {
response.message?.let { message ->
Common.showDialogValidation(activity as BajajFdMainActivity, message)
}
}
is Resource.Loading -> {
}
is Resource.DataError -> {
}
}
} }
} }
private fun validate(): Boolean { private fun validate(): Boolean {
return false
return true
} }
private fun takeImage() { private fun takeImage() {
lifecycleScope.launchWhenStarted { lifecycleScope.launchWhenStarted {
getTmpFileUri().let { uri -> getTmpFileUri().let { uri ->
latestTmpUri = uri latestTmpUri = uri
takeImageResult.launch(uri)
takeImageResult?.launch(uri)
} }
} }
} }
@ -308,9 +492,13 @@ class StepThreeBajajFDFragment : Fragment() {
} }
override fun onDestroyView() { override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
_binding = null _binding = null
} }
fun displayReceivedData(createFDApplicationResponse: CreateFDApplicationResponse) {
uniqueId = createFDApplicationResponse.Response.FDCreationDetailsResponse.UniqueId
}
} }

+ 637
- 549
app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt
File diff suppressed because it is too large
View File


+ 47
- 16
app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt View File

@ -9,12 +9,14 @@ import android.net.ConnectivityManager
import android.net.NetworkCapabilities import android.net.NetworkCapabilities
import android.os.Build import android.os.Build
import android.provider.ContactsContract import android.provider.ContactsContract
import android.text.format.DateFormat
import android.util.Patterns import android.util.Patterns
import com.google.android.material.textfield.MaterialAutoCompleteTextView import com.google.android.material.textfield.MaterialAutoCompleteTextView
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout import com.google.android.material.textfield.TextInputLayout
import com.google.gson.JsonObject import com.google.gson.JsonObject
import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.R
import kotlinx.coroutines.CoroutineExceptionHandler
import retrofit2.HttpException import retrofit2.HttpException
import java.io.IOException import java.io.IOException
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
@ -106,8 +108,9 @@ class Common {
fun showDialogValidation(activity: Activity?, message: CharSequence?) { fun showDialogValidation(activity: Activity?, message: CharSequence?) {
val builder = AlertDialog.Builder(activity) val builder = AlertDialog.Builder(activity)
builder.setMessage(message) builder.setMessage(message)
builder.setCancelable(false)
if (activity != null) { if (activity != null) {
builder.setPositiveButton(activity.getString(R.string.ok)) { dialogInterface, _ ->
builder.setPositiveButton(activity.getString(R.string.Ok)) { dialogInterface, _ ->
dialogInterface.dismiss() dialogInterface.dismiss()
} }
} }
@ -118,7 +121,7 @@ class Common {
val builder = AlertDialog.Builder(activity) val builder = AlertDialog.Builder(activity)
builder.setMessage(message) builder.setMessage(message)
if (activity != null) { if (activity != null) {
builder.setPositiveButton(activity.getString(R.string.ok)) { dialogInterface, _ ->
builder.setPositiveButton(activity.getString(R.string.Ok)) { dialogInterface, _ ->
dialogInterface.dismiss() dialogInterface.dismiss()
} }
builder.setNegativeButton(activity.getString(R.string.cancel)) { dialogInterface, _ -> builder.setNegativeButton(activity.getString(R.string.cancel)) { dialogInterface, _ ->
@ -183,24 +186,52 @@ class Common {
return simpleDateFormat.format(mDate as Date) return simpleDateFormat.format(mDate as Date)
} }
fun handleRatesResponse(response: retrofit2.Response<JsonObject>): Resource<JsonObject> {
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() ?: "")
fun handleResponse(response: retrofit2.Response<JsonObject>): Resource<JsonObject> {
// 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))
// is SocketTimeoutException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause))
// is UnknownHostException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause))
// else -> Resource.Error(t.localizedMessage?.toString() ?: "")
// }
// }
return Resource.Error(response.message()) return Resource.Error(response.message())
} }
}
fun handleError(activity: Activity): CoroutineExceptionHandler {
val handler = CoroutineExceptionHandler { _, exception ->
if (exception is IOException || exception is HttpException) {
showDialogValidation(
activity,
"Response : ".plus(exception.message).plus(" Cause: ").plus(exception.cause)
)
} else {
showDialogValidation(
activity,
"Response : ".plus(exception.localizedMessage?.toString())
)
}
}
return handler
}
fun isMinor(date: String): Boolean {
val simpleDateFormat = SimpleDateFormat("yyyy-mm-dd")
val dt1: Date = simpleDateFormat.parse(date)
val year: Int = DateFormat.format("yyyy", dt1).toString().toInt()
val month: Int = DateFormat.format("mm", dt1).toString().toInt()
val day = DateFormat.format("dd", dt1).toString().toInt()
val userAge: Calendar = GregorianCalendar(year, month, day)
val minAdultAge: Calendar = GregorianCalendar()
minAdultAge.add(Calendar.YEAR, -18)
return minAdultAge.before(userAge)
}
}
} }

+ 22
- 6
app/src/main/java/com/nivesh/production/bajajfd/util/Resource.kt View File

@ -1,10 +1,26 @@
package com.nivesh.production.bajajfd.util package com.nivesh.production.bajajfd.util
sealed class Resource<T>( sealed class Resource<T>(
val data:T?=null,
val message:String?=null)
{
class Success<T>(data: T):Resource<T>(data)
class Error<T>(message: String,data: T?= null):Resource<T>(data,message)
class Loading<T>:Resource<T>()
val data: T? = null,
var message: String? = null,
val errorCode: Int? = null,
var status: Boolean = true
) {
class Success<T>(data: T) : Resource<T>(data)
class Error<T>(message: String, data: T? = null) : Resource<T>(data, message)
class Loading<T> : Resource<T>()
class DataError<T>(errorCode: Int, message: String, data: T? = null) :
Resource<T>(null, message, errorCode)
override fun toString(): String {
return when (this) {
is Success<*> -> "Success[data=$data]"
is DataError -> "ErrorCode[exception=$errorCode]"
is Loading<T> -> "Loading"
is Error -> "Error[exception=${error(Any())}]"
}
}
} }

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

@ -1,56 +1,52 @@
package com.nivesh.production.bajajfd.viewModel package com.nivesh.production.bajajfd.viewModel
import android.app.Activity
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.google.gson.JsonObject 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.getClientDetailsRequest
import com.nivesh.production.bajajfd.model.*
import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import com.nivesh.production.bajajfd.util.Common
import com.nivesh.production.bajajfd.util.Common.Companion.handleError
import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse
import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.util.Resource
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
val getStepsCountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getStepsCountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getStepsCount(requestBody: FDStepsCountRequest, token: String) = viewModelScope.launch {
getStepsCountMutableData.postValue(Resource.Loading())
val response = mainRepository.getStepsCountResponse(requestBody, token)
getStepsCountMutableData.postValue(handleRatesResponse(response))
fun getStepsCount(
requestBody: FDStepsCountRequest,
token: String,
activity: Activity
) = viewModelScope.launch(handleError(activity)) {
if (Common.isNetworkAvailable(activity)) {
getStepsCountMutableData.postValue(Resource.Loading())
val response = mainRepository.getStepsCountResponse(requestBody, token)
getStepsCountMutableData.postValue(handleResponse(response))
}
} }
val getClientDetailsMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getClientDetailsMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getClientDetails(getClientDetailsRequest: getClientDetailsRequest, token: String) =
viewModelScope.launch {
getClientDetailsMutableData.postValue(Resource.Loading())
val response = mainRepository.getClientDetailsResponse(getClientDetailsRequest, token)
getClientDetailsMutableData.postValue(handleRatesResponse(response))
fun getClientDetails(getClientDetailsRequest: getClientDetailsRequest, token: String, activity: Activity) =
viewModelScope.launch(handleError(activity)) {
if (Common.isNetworkAvailable(activity)) {
getClientDetailsMutableData.postValue(Resource.Loading())
val response =
mainRepository.getClientDetailsResponse(getClientDetailsRequest, token)
getClientDetailsMutableData.postValue(handleResponse(response))
}
} }
val getFDResponseMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun createFDApi(getRatesRequest: CreateFDRequest, token: String) = viewModelScope.launch {
getFDResponseMutableData.postValue(Resource.Loading())
val response = mainRepository.createFDKYCResponse(getRatesRequest, token)
getFDResponseMutableData.postValue(handleRatesResponse(response))
val getFDKYCMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun checkFDKYC(requestBody: CheckFDKYCRequest, token : String, activity: Activity) = viewModelScope.launch(handleError(activity)) {
if (Common.isNetworkAvailable(activity)) {
getFDKYCMutableData.postValue(Resource.Loading())
val response = mainRepository.checkFDKYCRequest(requestBody, token)
getFDKYCMutableData.postValue(handleResponse(response))
}
} }
// private fun handleRatesResponse(response: retrofit2.Response<JsonObject>): Resource<JsonObject> {
// 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())
// }
} }

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

@ -3,7 +3,7 @@ package com.nivesh.production.bajajfd.viewModel
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.repositories.MainRepository
class StepFiveBajajFDViewModel (private val mainRepository: MainRepository) : ViewModel() {
class StepFiveBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
} }

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

@ -1,5 +1,6 @@
package com.nivesh.production.bajajfd.viewModel package com.nivesh.production.bajajfd.viewModel
import android.app.Activity
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
@ -7,56 +8,81 @@ import com.google.gson.JsonObject
import com.nivesh.production.bajajfd.model.GetCodeRequest import com.nivesh.production.bajajfd.model.GetCodeRequest
import com.nivesh.production.bajajfd.model.GetFDDetailsRequest import com.nivesh.production.bajajfd.model.GetFDDetailsRequest
import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.model.GetRatesRequest
import com.nivesh.production.bajajfd.model.SaveFDOtherDataRequest
import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse
import com.nivesh.production.bajajfd.util.Common
import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse
import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.util.Resource
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
val getPaymentModeMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getPaymentModeMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
getPaymentModeMutableData.postValue(Resource.Loading())
val response = mainRepository.payModeCheck(getCodeRequest, token)
getPaymentModeMutableData.postValue(handleRatesResponse(response))
fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String,
activity: Activity
) = viewModelScope.launch(Common.handleError(activity)) {
if (Common.isNetworkAvailable(activity)) {
getPaymentModeMutableData.postValue(Resource.Loading())
val response = mainRepository.payModeCheck(getCodeRequest, token)
getPaymentModeMutableData.postValue(handleResponse(response))
}
} }
val getFDDetailsMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getFDDetailsMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getFDDetails(getRatesRequest: GetFDDetailsRequest, token: String) = viewModelScope.launch {
getFDDetailsMutableData.postValue(Resource.Loading())
val response = mainRepository.getFDDetailsResponse(getRatesRequest, token)
getFDDetailsMutableData.postValue(handleRatesResponse(response))
fun getFDDetails(getRatesRequest: GetFDDetailsRequest, token: String,
activity: Activity) = viewModelScope.launch(Common.handleError(activity)) {
if (Common.isNetworkAvailable(activity)) {
getFDDetailsMutableData.postValue(Resource.Loading())
val response = mainRepository.getFDDetailsResponse(getRatesRequest, token)
getFDDetailsMutableData.postValue(handleResponse(response))
}
} }
private val getRatesMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun saveFDOtherData(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.saveFDOtherDataResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleRatesResponse(response))
}
val getRatesMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun updateFDPaymentStatus(getRatesRequest: GetRatesRequest, token: String,
activity: Activity) =
viewModelScope.launch(Common.handleError(activity)) {
if (Common.isNetworkAvailable(activity)) {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.updateFDPaymentStatusResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleResponse(response))
}
}
fun updateFDPaymentStatus(getRatesRequest: GetRatesRequest, token: String) =
viewModelScope.launch {
fun finaliseFD(getRatesRequest: GetRatesRequest, token: String,
activity: Activity) = viewModelScope.launch(Common.handleError(activity)) {
if (Common.isNetworkAvailable(activity)) {
getRatesMutableData.postValue(Resource.Loading()) getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.updateFDPaymentStatusResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleRatesResponse(response))
val response = mainRepository.finaliseFDResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleResponse(response))
} }
}
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,
activity: Activity) = viewModelScope.launch(Common.handleError(activity)) {
if (Common.isNetworkAvailable(activity)) {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.finaliseKYCResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleResponse(response))
}
} }
fun finaliseKYC(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.finaliseKYCResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleRatesResponse(response))
fun paymentReQuery(getRatesRequest: GetRatesRequest, token: String,
activity: Activity) = viewModelScope.launch(Common.handleError(activity)) {
if (Common.isNetworkAvailable(activity)) {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.paymentReQueryResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleResponse(response))
}
} }
fun paymentReQuery(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.paymentReQueryResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleRatesResponse(response))
val getFDOtherMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun saveFDOtherData(getRatesRequest: SaveFDOtherDataRequest, token: String,
activity: Activity) = viewModelScope.launch(Common.handleError(activity)) {
if (Common.isNetworkAvailable(activity)) {
getFDOtherMutableData.postValue(Resource.Loading())
val response = mainRepository.saveFDOtherDataResponse(getRatesRequest, token)
getFDOtherMutableData.postValue(handleResponse(response))
}
} }
} }

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

@ -1,15 +1,16 @@
package com.nivesh.production.bajajfd.viewModel package com.nivesh.production.bajajfd.viewModel
import android.app.Activity
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.google.gson.JsonObject import com.google.gson.JsonObject
import com.nivesh.production.bajajfd.model.CheckFDKYCRequest
import com.nivesh.production.bajajfd.model.GetCodeRequest import com.nivesh.production.bajajfd.model.GetCodeRequest
import com.nivesh.production.bajajfd.model.GetMaturityAmountRequest import com.nivesh.production.bajajfd.model.GetMaturityAmountRequest
import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.model.GetRatesRequest
import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse
import com.nivesh.production.bajajfd.util.Common
import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse
import com.nivesh.production.bajajfd.util.Constants.Companion.token import com.nivesh.production.bajajfd.util.Constants.Companion.token
import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.util.Resource
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -17,55 +18,62 @@ import kotlinx.coroutines.launch
class StepOneBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { class StepOneBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
val getCodeMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getCodeMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getCode(requestBody: GetCodeRequest, token : String) = viewModelScope.launch {
getCodeMutableData.postValue(Resource.Loading())
val response = mainRepository.getCodesResponse(requestBody, token)
getCodeMutableData.postValue(handleRatesResponse(response))
}
fun getCode(requestBody: GetCodeRequest, token: String, activity: Activity) =
viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getCodeMutableData.postValue(Resource.Loading())
val response = mainRepository.getCodesResponse(requestBody, token)
getCodeMutableData.postValue(handleResponse(response))
}
}
val getRatesMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getRatesMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getRates(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.getRatesResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleRatesResponse(response))
}
fun getRates(getRatesRequest: GetRatesRequest, token: String, activity: Activity) =
viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.getRatesResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleResponse(response))
}
}
val getMaturityAmountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getMaturityAmountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getMaturityAmount(requestBody: GetMaturityAmountRequest) = viewModelScope.launch {
getMaturityAmountMutableData.postValue(Resource.Loading())
val response = mainRepository.createCalculateFDMaturityAmount(requestBody, token)
getMaturityAmountMutableData.postValue(handleRatesResponse(response))
}
fun getMaturityAmount(requestBody: GetMaturityAmountRequest, activity: Activity) =
viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getMaturityAmountMutableData.postValue(Resource.Loading())
val response = mainRepository.createCalculateFDMaturityAmount(requestBody, token)
getMaturityAmountMutableData.postValue(handleResponse(response))
}
}
val getMinAmountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getMinAmountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getMinAmount(requestBody: GetCodeRequest, token : String) = viewModelScope.launch {
getMinAmountMutableData.postValue(Resource.Loading())
val response = mainRepository.getCodesResponse(requestBody, token)
getMinAmountMutableData.postValue(handleRatesResponse(response))
}
fun getMinAmount(requestBody: GetCodeRequest, token: String, activity: Activity) =
viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getMinAmountMutableData.postValue(Resource.Loading())
val response = mainRepository.getCodesResponse(requestBody, token)
getMinAmountMutableData.postValue(handleResponse(response))
}
}
val getMaxAmountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getMaxAmountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getMaxAmount(requestBody: GetCodeRequest, token : String) = viewModelScope.launch {
getMaxAmountMutableData.postValue(Resource.Loading())
val response = mainRepository.getCodesResponse(requestBody, token)
getMaxAmountMutableData.postValue(handleRatesResponse(response))
}
val getFDKYCMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun checkFDKYC(requestBody: CheckFDKYCRequest, token : String) = viewModelScope.launch {
getFDKYCMutableData.postValue(Resource.Loading())
val response = mainRepository.checkFDKYCRequest(requestBody, token)
getFDKYCMutableData.postValue(handleRatesResponse(response))
}
// private fun handleRatesResponse(response: retrofit2.Response<JsonObject>): Resource<JsonObject> {
// if (response.isSuccessful) {
// response.body()?.let { resultResponse ->
// return Resource.Success(resultResponse)
// }
// }
// return Resource.Error(response.message())
//
// }
fun getMaxAmount(requestBody: GetCodeRequest, token: String, activity: Activity) =
viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getMaxAmountMutableData.postValue(Resource.Loading())
val response = mainRepository.getCodesResponse(requestBody, token)
getMaxAmountMutableData.postValue(handleResponse(response))
}
}
} }

+ 34
- 11
app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt View File

@ -1,30 +1,53 @@
package com.nivesh.production.bajajfd.viewModel package com.nivesh.production.bajajfd.viewModel
import android.app.Activity
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.google.gson.JsonObject import com.google.gson.JsonObject
import com.nivesh.production.bajajfd.model.CreateFDRequest
import com.nivesh.production.bajajfd.model.DocumentUpload
import com.nivesh.production.bajajfd.model.GetCodeRequest import com.nivesh.production.bajajfd.model.GetCodeRequest
import com.nivesh.production.bajajfd.model.GetRatesRequest import com.nivesh.production.bajajfd.model.GetRatesRequest
import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse
import com.nivesh.production.bajajfd.util.Common
import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse
import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.util.Resource
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
private val getRatesMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun documentsUpload(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.documentsUploadResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleRatesResponse(response))
val getTitleMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun titleApi(getCodeRequest: GetCodeRequest, token: String, activity: Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getTitleMutableData.postValue(Resource.Loading())
val response = mainRepository.titleCheck(getCodeRequest, token)
getTitleMutableData.postValue(handleResponse(response))
}
} }
val getTitleMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun titleApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
getTitleMutableData.postValue(Resource.Loading())
val response = mainRepository.titleCheck(getCodeRequest, token)
getTitleMutableData.postValue(handleRatesResponse(response))
val getDocumentUploadMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun documentsUpload(documentUpload: DocumentUpload, token: String, activity: Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getDocumentUploadMutableData.postValue(Resource.Loading())
val response = mainRepository.documentsUploadResponse(documentUpload, token)
getDocumentUploadMutableData.postValue(handleResponse(response))
}
}
val getFDResponseMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun createFDApi(getRatesRequest: CreateFDRequest, token: String, activity: Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getFDResponseMutableData.postValue(Resource.Loading())
val response = mainRepository.createFDKYCResponse(getRatesRequest, token)
getFDResponseMutableData.postValue(handleResponse(response))
}
} }
} }

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

@ -1,107 +1,173 @@
package com.nivesh.production.bajajfd.viewModel package com.nivesh.production.bajajfd.viewModel
import android.app.Activity
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.google.gson.JsonObject import com.google.gson.JsonObject
import com.nivesh.production.bajajfd.model.* import com.nivesh.production.bajajfd.model.*
import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.util.Common.Companion.handleRatesResponse
import com.nivesh.production.bajajfd.util.Common
import com.nivesh.production.bajajfd.util.Common.Companion.handleResponse
import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.util.Resource
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
val getPanCheckMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getPanCheckMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun panCheck(panCheck: PanCheckRequest, token: String) = viewModelScope.launch {
getPanCheckMutableData.postValue(Resource.Loading())
val response = mainRepository.panCheck(panCheck, token)
getPanCheckMutableData.postValue(handleRatesResponse(response))
fun panCheck(panCheck: PanCheckRequest, token: String, activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getPanCheckMutableData.postValue(Resource.Loading())
val response = mainRepository.panCheck(panCheck, token)
getPanCheckMutableData.postValue(handleResponse(response))
}
} }
val getTitleMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getTitleMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun titleApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
getTitleMutableData.postValue(Resource.Loading())
val response = mainRepository.titleCheck(getCodeRequest, token)
getTitleMutableData.postValue(handleRatesResponse(response))
fun titleApi(getCodeRequest: GetCodeRequest, token: String, activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getTitleMutableData.postValue(Resource.Loading())
val response = mainRepository.titleCheck(getCodeRequest, token)
getTitleMutableData.postValue(handleResponse(response))
}
} }
val getGenderMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getGenderMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun genderApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
getGenderMutableData.postValue(Resource.Loading())
val response = mainRepository.genderCheck(getCodeRequest, token)
getGenderMutableData.postValue(handleRatesResponse(response))
fun genderApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getGenderMutableData.postValue(Resource.Loading())
val response = mainRepository.genderCheck(getCodeRequest, token)
getGenderMutableData.postValue(handleResponse(response))
}
} }
val getAnnualIncomeMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getAnnualIncomeMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun annualIncomeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
getAnnualIncomeMutableData.postValue(Resource.Loading())
val response = mainRepository.annualIncomeCheck(getCodeRequest, token)
getAnnualIncomeMutableData.postValue(handleRatesResponse(response))
fun annualIncomeApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getAnnualIncomeMutableData.postValue(Resource.Loading())
val response = mainRepository.annualIncomeCheck(getCodeRequest, token)
getAnnualIncomeMutableData.postValue(handleResponse(response))
}
} }
val getRelationShipMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getRelationShipMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun relationShipApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
getRelationShipMutableData.postValue(Resource.Loading())
val response = mainRepository.relationShipCheck(getCodeRequest, token)
getRelationShipMutableData.postValue(handleRatesResponse(response))
fun relationShipApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getRelationShipMutableData.postValue(Resource.Loading())
val response = mainRepository.relationShipCheck(getCodeRequest, token)
getRelationShipMutableData.postValue(handleResponse(response))
}
} }
val getMaritalStatusMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getMaritalStatusMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun maritalStatusApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
getMaritalStatusMutableData.postValue(Resource.Loading())
val response = mainRepository.maritalStatusCheck(getCodeRequest, token)
getMaritalStatusMutableData.postValue(handleRatesResponse(response))
fun maritalStatusApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getMaritalStatusMutableData.postValue(Resource.Loading())
val response = mainRepository.maritalStatusCheck(getCodeRequest, token)
getMaritalStatusMutableData.postValue(handleResponse(response))
}
} }
val getOccupationMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getOccupationMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun occupationApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
getOccupationMutableData.postValue(Resource.Loading())
val response = mainRepository.occupationCheck(getCodeRequest, token)
getOccupationMutableData.postValue(handleRatesResponse(response))
fun occupationApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getOccupationMutableData.postValue(Resource.Loading())
val response = mainRepository.occupationCheck(getCodeRequest, token)
getOccupationMutableData.postValue(handleResponse(response))
}
} }
val getStateMasterMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getStateMasterMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun stateApi(token: String) = viewModelScope.launch {
getStateMasterMutableData.postValue(Resource.Loading())
val response = mainRepository.stateCheck( token)
getStateMasterMutableData.postValue(handleRatesResponse(response))
fun stateApi(token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getStateMasterMutableData.postValue(Resource.Loading())
val response = mainRepository.stateCheck(token)
getStateMasterMutableData.postValue(handleResponse(response))
}
} }
val getCityListMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getCityListMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun cityListApi(cityRequest: CityRequest, token: String) = viewModelScope.launch {
getCityListMutableData.postValue(Resource.Loading())
val response = mainRepository.cityCheck(cityRequest, token)
getCityListMutableData.postValue(handleRatesResponse(response))
fun cityListApi(cityRequest: CityRequest, token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getCityListMutableData.postValue(Resource.Loading())
val response = mainRepository.cityCheck(cityRequest, token)
getCityListMutableData.postValue(handleResponse(response))
}
} }
val getFDBankListMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getFDBankListMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun bankListApi( token: String) = viewModelScope.launch {
getFDBankListMutableData.postValue(Resource.Loading())
val response = mainRepository.bankListCheck( token)
getFDBankListMutableData.postValue(handleRatesResponse(response))
fun bankListApi( token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getFDBankListMutableData.postValue(Resource.Loading())
val response = mainRepository.bankListCheck(token)
getFDBankListMutableData.postValue(handleResponse(response))
}
} }
val getifscCodeCheckMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getifscCodeCheckMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun ifscCodeApi(ifsc : String) = viewModelScope.launch {
getifscCodeCheckMutableData.postValue(Resource.Loading())
val response = mainRepository.ifscCodeCheck(ifsc)
getifscCodeCheckMutableData.postValue(handleRatesResponse(response))
fun ifscCodeApi(ifsc : String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getifscCodeCheckMutableData.postValue(Resource.Loading())
val response = mainRepository.ifscCodeCheck(ifsc)
getifscCodeCheckMutableData.postValue(handleResponse(response))
}
} }
val getifscCodeDetailsCheckMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getifscCodeDetailsCheckMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun ifscCodeDetailsApi(ifsc : String, token: String) = viewModelScope.launch {
getifscCodeDetailsCheckMutableData.postValue(Resource.Loading())
val response = mainRepository.ifscCodeDetailsCheck(ifsc, token)
getifscCodeDetailsCheckMutableData.postValue(handleRatesResponse(response))
fun ifscCodeDetailsApi(ifsc : String, token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getifscCodeDetailsCheckMutableData.postValue(Resource.Loading())
val response = mainRepository.ifscCodeDetailsCheck(ifsc, token)
getifscCodeDetailsCheckMutableData.postValue(handleResponse(response))
}
} }
val getPaymentModeMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getPaymentModeMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
getPaymentModeMutableData.postValue(Resource.Loading())
val response = mainRepository.payModeCheck(getCodeRequest, token)
getPaymentModeMutableData.postValue(handleRatesResponse(response))
fun paymentModeApi(getCodeRequest: GetCodeRequest, token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getPaymentModeMutableData.postValue(Resource.Loading())
val response = mainRepository.payModeCheck(getCodeRequest, token)
getPaymentModeMutableData.postValue(handleResponse(response))
}
}
val getFDResponseMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun createFDApi(getRatesRequest: CreateFDRequest, token: String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {
if (Common.isNetworkAvailable(activity)) {
getFDResponseMutableData.postValue(Resource.Loading())
val response = mainRepository.createFDKYCResponse(getRatesRequest, token)
getFDResponseMutableData.postValue(handleResponse(response))
}
} }
} }

+ 1
- 1
app/src/main/res/layout/activity_bajaj_fd.xml View File

@ -137,7 +137,7 @@
</LinearLayout> </LinearLayout>
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
<com.nivesh.production.bajajfd.adapter.DisableAdapter
android:id="@+id/viewPager" android:id="@+id/viewPager"
android:contentDescription="@string/viewpager" android:contentDescription="@string/viewpager"
android:layout_width="match_parent" android:layout_width="match_parent"


+ 8
- 4
app/src/main/res/layout/fragment_bajajfd_step_four.xml View File

@ -220,7 +220,11 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvTerms" android:id="@+id/rvTerms"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
tools:listitem="@layout/item_customer_list_preview"
/>
</LinearLayout> </LinearLayout>
@ -284,10 +288,10 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginTop="@dimen/margin_5"
android:layout_marginBottom="@dimen/margin_15" android:layout_marginBottom="@dimen/margin_15"
android:backgroundTint="@color/colorPrimary"
android:text="@string/viewOrder"
android:backgroundTint="@color/green"
android:text="@string/pay"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/text_size_14" android:textSize="@dimen/text_size_14"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"


+ 2
- 1
app/src/main/res/layout/fragment_bajajfd_step_three.xml View File

@ -165,8 +165,9 @@
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/addressProofType" android:hint="@string/addressProofType"
android:inputType="none" android:inputType="none"
android:padding="@dimen/margin_5"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" android:textSize="@dimen/text_size_14"
tools:layout_editor_absoluteY="230dp" /> tools:layout_editor_absoluteY="230dp" />


+ 36
- 14
app/src/main/res/layout/fragment_bajajfd_step_two.xml View File

@ -193,11 +193,12 @@
android:id="@+id/spTitle" android:id="@+id/spTitle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="@dimen/margin_5"
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectTitle" android:hint="@string/selectTitle"
android:inputType="none" android:inputType="none"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -222,8 +223,9 @@
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectGender" android:hint="@string/selectGender"
android:inputType="none" android:inputType="none"
android:padding="@dimen/margin_5"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -296,7 +298,10 @@
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_5"
android:layout_marginStart="@dimen/margin_5"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_5"
android:layout_marginBottom="@dimen/margin_5"
app:hintEnabled="false"> app:hintEnabled="false">
<com.google.android.material.textfield.MaterialAutoCompleteTextView <com.google.android.material.textfield.MaterialAutoCompleteTextView
@ -305,9 +310,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/enterOccupation" android:hint="@string/enterOccupation"
android:padding="@dimen/margin_5"
android:inputType="none" android:inputType="none"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -317,7 +323,10 @@
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_5"
android:layout_marginStart="@dimen/margin_5"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_5"
android:layout_marginBottom="@dimen/margin_5"
app:hintEnabled="false"> app:hintEnabled="false">
<com.google.android.material.textfield.MaterialAutoCompleteTextView <com.google.android.material.textfield.MaterialAutoCompleteTextView
@ -326,9 +335,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectIncome" android:hint="@string/selectIncome"
android:padding="@dimen/margin_5"
android:inputType="none" android:inputType="none"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -374,8 +384,9 @@
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectMaritalStatus" android:hint="@string/selectMaritalStatus"
android:inputType="none" android:inputType="none"
android:padding="@dimen/margin_5"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -465,7 +476,10 @@
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_5"
android:layout_marginStart="@dimen/margin_5"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_5"
android:layout_marginBottom="@dimen/margin_5"
app:hintEnabled="false"> app:hintEnabled="false">
<com.google.android.material.textfield.MaterialAutoCompleteTextView <com.google.android.material.textfield.MaterialAutoCompleteTextView
@ -474,9 +488,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectState" android:hint="@string/selectState"
android:padding="@dimen/margin_5"
android:inputType="none" android:inputType="none"
android:labelFor="@+id/tlState" android:labelFor="@+id/tlState"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -486,7 +501,10 @@
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_5"
android:layout_marginStart="@dimen/margin_5"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_5"
android:layout_marginBottom="@dimen/margin_5"
app:hintEnabled="false"> app:hintEnabled="false">
<com.google.android.material.textfield.MaterialAutoCompleteTextView <com.google.android.material.textfield.MaterialAutoCompleteTextView
@ -495,9 +513,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectCity" android:hint="@string/selectCity"
android:padding="@dimen/margin_5"
android:inputType="none" android:inputType="none"
android:labelFor="@+id/tlCity" android:labelFor="@+id/tlCity"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -567,9 +586,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectTitle" android:hint="@string/selectTitle"
android:padding="@dimen/margin_5"
android:inputType="none" android:inputType="none"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -675,9 +695,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectRelation" android:hint="@string/selectRelation"
android:padding="@dimen/margin_5"
android:inputType="none" android:inputType="none"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -750,9 +771,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_with_line" android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectRelation" android:hint="@string/selectRelation"
android:padding="@dimen/margin_5"
android:inputType="none" android:inputType="none"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textColorHint="@color/greyColor2"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>


+ 20
- 31
app/src/main/res/layout/item_customer_list_preview.xml View File

@ -1,39 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="@dimen/margin_1"
android:orientation="horizontal"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="3dp"
app:cardElevation="3dp"
app:cardMaxElevation="1dp"
app:cardPreventCornerOverlap="true"
app:cardUseCompatPadding="true">
<LinearLayout
android:padding="@dimen/margin_3"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/bankSelector"
android:layout_width="@dimen/margin_25"
android:layout_height="@dimen/margin_25"
android:layout_marginStart="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_10"
android:layout_marginBottom="@dimen/margin_10"
android:padding="@dimen/margin_5"
android:contentDescription="@null" />
android:layout_height="wrap_content">
<TextView <TextView
android:id="@+id/tvBankName"
android:layout_width="match_parent"
android:id="@+id/txtLabel"
android:gravity="start"
android:layout_gravity="center_vertical"
android:padding="@dimen/margin_2"
android:layout_weight="0.87"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_4"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/text_size_14"
android:textStyle="bold" />
android:textSize="@dimen/text_size_12"/>
<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/tvCustomerName"
android:layout_width="wrap_content"
android:padding="@dimen/margin_4"
android:layout_height="wrap_content"
android:layout_weight="0.13"
android:checked="false"
android:drawablePadding="@dimen/margin_2" />
</LinearLayout> </LinearLayout>
</com.google.android.material.card.MaterialCardView>

+ 43
- 0
app/src/main/res/layout/row_fd_pay.xml View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="@style/BoldStyle"
android:gravity="center"
android:layout_weight="0.1"
android:layout_marginEnd="@dimen/margin_15"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/payment"
android:padding="@dimen/margin_15"
android:textSize="@dimen/text_size_18"/>
<TextView
android:id="@+id/tvCancel"
style="@style/BoldStyle"
android:layout_gravity="end"
android:layout_marginEnd="@dimen/margin_15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/x"
android:padding="@dimen/margin_15"
android:textSize="@dimen/text_size_18"/>
</LinearLayout>
<WebView
android:layout_marginTop="@dimen/margin_5"
app:layout_constraintTop_toBottomOf="@+id/tvCancel"
android:id="@+id/wVPay"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

+ 10
- 13
app/src/main/res/values-hi-rIN/strings.xml View File

@ -128,6 +128,9 @@
<string name="netBanking">NetBanking</string> <string name="netBanking">NetBanking</string>
<string name="upto1LakhOnly">Upto Rs. 1 Lakh Only</string> <string name="upto1LakhOnly">Upto Rs. 1 Lakh Only</string>
<string name="eligibleBankOption">Eligible Bank Option</string> <string name="eligibleBankOption">Eligible Bank Option</string>
<string name="paymentModeCategory">PaymentMode</string>
<string name="customerCategory">CustomerCategory</string>
<string name="validGuardianDetails">Please enter Guardian Details</string>
<!-- Validations --> <!-- Validations -->
<string name="emptyMobileNumber">Please enter mobile number</string> <string name="emptyMobileNumber">Please enter mobile number</string>
@ -181,7 +184,6 @@
<string name="emptyPaymentMode">Please select payment mode</string> <string name="emptyPaymentMode">Please select payment mode</string>
<!-- Step Three --> <!-- Step Three -->
<string name="uploadKycDocuments">Upload KYC Documents</string> <string name="uploadKycDocuments">Upload KYC Documents</string>
<string name="addressProofType">Address Proof Type <font color='#E9161E'>*</font></string> <string name="addressProofType">Address Proof Type <font color='#E9161E'>*</font></string>
@ -193,6 +195,9 @@
<string name="photograph">Photograph <font color='#E9161E'>*</font></string> <string name="photograph">Photograph <font color='#E9161E'>*</font></string>
<string name="pan">PAN <font color='#E9161E'>*</font></string> <string name="pan">PAN <font color='#E9161E'>*</font></string>
<string name="docType">Doctype</string> <string name="docType">Doctype</string>
<string name="selectOption">Select Option</string>
<string name="gallery">Gallery</string>
<string name="camera">Camera</string>
<!-- Step Four --> <!-- Step Four -->
@ -202,14 +207,9 @@
<string name="interestPayout">Interest Payout</string> <string name="interestPayout">Interest Payout</string>
<string name="rateOfInterest">Rate of Interest</string> <string name="rateOfInterest">Rate of Interest</string>
<string name="termsAndCondition"><![CDATA[Terms & condition]]></string> <string name="termsAndCondition"><![CDATA[Terms & condition]]></string>
<string name="directorOfBajajFinance">Director of Bajaj Finance Ltd.</string>
<string name="promoterOfBajajFinanceLtd">Promoter of Bajaj Finance Ltd.</string>
<string name="relativeOfBajajFinanceLtd">Relative of director or promoter of Bajaj Finance Ltd.</string>
<string name="shareholderOfBajajFinanceLtd">Shareholder of Bajaj Finance Ltd.</string>
<string name="politicallyExposedPerson">Are you a politically exposed person</string>
<string name="outsideOfIndia">I am not a citizen, national or tax resident of any country outside of India</string>
<string name="termsCondition">I undertake to inform company any change in status of my nationality or tax residence. I am making investment from my Indian resident Individual Savings bank account. I/ We confirm that 1/we have read and understood the detailed terms and conditions annexed to this Application including the interest rate and other charges. I have gone through the financials and other statements/particulars representations furnished/made by the company and after careful consideration I am making the deposit with the company at my own risk and volition. I have read and agree to the <font color='#5077FF'>Terms &amp; conditions</font></string> <string name="termsCondition">I undertake to inform company any change in status of my nationality or tax residence. I am making investment from my Indian resident Individual Savings bank account. I/ We confirm that 1/we have read and understood the detailed terms and conditions annexed to this Application including the interest rate and other charges. I have gone through the financials and other statements/particulars representations furnished/made by the company and after careful consideration I am making the deposit with the company at my own risk and volition. I have read and agree to the <font color='#5077FF'>Terms &amp; conditions</font></string>
<string name="pay">PAY</string>
<string name="payment">Payment</string>
<string name="validTermsConditions">Please accept terms &amp; conditions.</string> <string name="validTermsConditions">Please accept terms &amp; conditions.</string>
@ -237,12 +237,9 @@
<string name="nonSeniorCitizen">Non Senior Citizen</string> <string name="nonSeniorCitizen">Non Senior Citizen</string>
<string name="add_new_account">Add New Account</string> <string name="add_new_account">Add New Account</string>
<string name="ok">OK</string>
<string name="Ok"><font fgcolor='#FF8E8E93'>OK</font></string>
<string name="cancel">Cancel</string> <string name="cancel">Cancel</string>
<string name="aadhar">Aadhar</string> <string name="aadhar">Aadhar</string>
<string name="gallery">Gallery</string>
<string name="camera">Camera</string>
<string name="paymentModeCategory">PaymentMode</string>
<string name="customerCategory">CustomerCategory</string>
</resources> </resources>

+ 9
- 21
app/src/main/res/values/strings.xml View File

@ -128,6 +128,9 @@
<string name="netBanking">NetBanking</string> <string name="netBanking">NetBanking</string>
<string name="upto1LakhOnly">Upto Rs. 1 Lakh Only</string> <string name="upto1LakhOnly">Upto Rs. 1 Lakh Only</string>
<string name="eligibleBankOption">Eligible Bank Option</string> <string name="eligibleBankOption">Eligible Bank Option</string>
<string name="paymentModeCategory">PaymentMode</string>
<string name="customerCategory">CustomerCategory</string>
<string name="validGuardianDetails">Please enter Guardian Details</string>
<!-- Validations --> <!-- Validations -->
<string name="emptyMobileNumber">Please enter mobile number</string> <string name="emptyMobileNumber">Please enter mobile number</string>
@ -181,7 +184,6 @@
<string name="emptyPaymentMode">Please select payment mode</string> <string name="emptyPaymentMode">Please select payment mode</string>
<!-- Step Three --> <!-- Step Three -->
<string name="uploadKycDocuments">Upload KYC Documents</string> <string name="uploadKycDocuments">Upload KYC Documents</string>
<string name="addressProofType">Address Proof Type <font color='#E9161E'>*</font></string> <string name="addressProofType">Address Proof Type <font color='#E9161E'>*</font></string>
@ -193,6 +195,9 @@
<string name="photograph">Photograph <font color='#E9161E'>*</font></string> <string name="photograph">Photograph <font color='#E9161E'>*</font></string>
<string name="pan">PAN <font color='#E9161E'>*</font></string> <string name="pan">PAN <font color='#E9161E'>*</font></string>
<string name="docType">Doctype</string> <string name="docType">Doctype</string>
<string name="selectOption">Select Option</string>
<string name="gallery">Gallery</string>
<string name="camera">Camera</string>
<!-- Step Four --> <!-- Step Four -->
@ -202,14 +207,9 @@
<string name="interestPayout">Interest Payout</string> <string name="interestPayout">Interest Payout</string>
<string name="rateOfInterest">Rate of Interest</string> <string name="rateOfInterest">Rate of Interest</string>
<string name="termsAndCondition"><![CDATA[Terms & condition]]></string> <string name="termsAndCondition"><![CDATA[Terms & condition]]></string>
<string name="directorOfBajajFinance">Director of Bajaj Finance Ltd.</string>
<string name="promoterOfBajajFinanceLtd">Promoter of Bajaj Finance Ltd.</string>
<string name="relativeOfBajajFinanceLtd">Relative of director or promoter of Bajaj Finance Ltd.</string>
<string name="shareholderOfBajajFinanceLtd">Shareholder of Bajaj Finance Ltd.</string>
<string name="politicallyExposedPerson">Are you a politically exposed person</string>
<string name="outsideOfIndia">I am not a citizen, national or tax resident of any country outside of India</string>
<string name="termsCondition">I undertake to inform company any change in status of my nationality or tax residence. I am making investment from my Indian resident Individual Savings bank account. I/ We confirm that 1/we have read and understood the detailed terms and conditions annexed to this Application including the interest rate and other charges. I have gone through the financials and other statements/particulars representations furnished/made by the company and after careful consideration I am making the deposit with the company at my own risk and volition. I have read and agree to the <font color='#5077FF'>Terms &amp; conditions</font></string> <string name="termsCondition">I undertake to inform company any change in status of my nationality or tax residence. I am making investment from my Indian resident Individual Savings bank account. I/ We confirm that 1/we have read and understood the detailed terms and conditions annexed to this Application including the interest rate and other charges. I have gone through the financials and other statements/particulars representations furnished/made by the company and after careful consideration I am making the deposit with the company at my own risk and volition. I have read and agree to the <font color='#5077FF'>Terms &amp; conditions</font></string>
<string name="pay">PAY</string>
<string name="payment">Payment</string>
<string name="validTermsConditions">Please accept terms &amp; conditions.</string> <string name="validTermsConditions">Please accept terms &amp; conditions.</string>
@ -237,21 +237,9 @@
<string name="nonSeniorCitizen">Non Senior Citizen</string> <string name="nonSeniorCitizen">Non Senior Citizen</string>
<string name="add_new_account">Add New Account</string> <string name="add_new_account">Add New Account</string>
<string name="ok">OK</string>
<string name="Ok"><font fgcolor='#FF8E8E93'>OK</font></string>
<string name="cancel">Cancel</string> <string name="cancel">Cancel</string>
<string name="aadhar">Aadhar</string> <string name="aadhar">Aadhar</string>
<string name="selectOption">Select Option</string>
<string name="gallery">Gallery</string>
<string name="camera">Camera</string>
<string name="paymentModeCategory">PaymentMode</string>
<string name="customerCategory">CustomerCategory</string>
<array name="addressType">
<item>Aadhaar Card</item>
<item>PAN</item>
<item>Voter Id</item>
<item>Driving Licence</item>
</array>
</resources> </resources>

Loading…
Cancel
Save

Powered by TurnKey Linux.