| @ -0,0 +1,39 @@ | |||
| #built application files | |||
| *.apk | |||
| *.ap_ | |||
| # files for the dex VM | |||
| *.dex | |||
| # Java class files | |||
| *.class | |||
| # generated files | |||
| bin/ | |||
| gen/ | |||
| # Local configuration file (sdk path, etc) | |||
| local.properties | |||
| # Windows thumbnail db | |||
| Thumbs.db | |||
| # OSX files | |||
| .DS_Store | |||
| # Android Studio | |||
| *.iml | |||
| .idea | |||
| #.idea/workspace.xml - remove # and delete .idea if it better suit your needs. | |||
| .gradle | |||
| build/ | |||
| .navigation | |||
| captures/ | |||
| output.json | |||
| #NDK | |||
| obj/ | |||
| .externalNativeBuild | |||
| @ -0,0 +1 @@ | |||
| /build | |||
| @ -0,0 +1,93 @@ | |||
| plugins { | |||
| id 'com.android.application' | |||
| id 'org.jetbrains.kotlin.android' | |||
| id 'kotlin-parcelize' | |||
| id 'maven-publish' | |||
| } | |||
| publishing { | |||
| publications { | |||
| mavenJava(MavenPublication) { | |||
| groupId = 'com.nivesh.production.bajajfd.Manoj.Singh' | |||
| artifactId = 'library' | |||
| version = '1.0' | |||
| } | |||
| } | |||
| } | |||
| android { | |||
| namespace 'com.nivesh.production.bajajfd' | |||
| compileSdk 33 | |||
| defaultConfig { | |||
| applicationId "com.nivesh.production.bajajfd" | |||
| minSdk 21 | |||
| targetSdk 33 | |||
| versionCode 1 | |||
| versionName "1.0" | |||
| testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | |||
| } | |||
| buildTypes { | |||
| release { | |||
| minifyEnabled false | |||
| proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' | |||
| consumerProguardFiles 'proguard-rules.pro' | |||
| } | |||
| } | |||
| compileOptions { | |||
| sourceCompatibility JavaVersion.VERSION_1_8 | |||
| targetCompatibility JavaVersion.VERSION_1_8 | |||
| } | |||
| kotlinOptions { | |||
| jvmTarget = '1.8' | |||
| } | |||
| buildFeatures { | |||
| viewBinding true | |||
| } | |||
| } | |||
| ext{ | |||
| roomVersion="2.4.3" | |||
| glideVersion="4.11.0" | |||
| } | |||
| dependencies { | |||
| implementation 'androidx.core:core-ktx:1.9.0' | |||
| implementation 'androidx.appcompat:appcompat:1.5.1' | |||
| implementation 'com.google.android.material:material:1.7.0' | |||
| implementation 'androidx.constraintlayout:constraintlayout:2.1.4' | |||
| implementation 'androidx.legacy:legacy-support-v4:1.0.0' | |||
| implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.1' | |||
| testImplementation 'junit:junit:4.13.2' | |||
| androidTestImplementation 'androidx.test.ext:junit:1.1.5' | |||
| androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' | |||
| // Architectural Components | |||
| implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" | |||
| // Coroutines | |||
| implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1' | |||
| implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' | |||
| // Coroutine Lifecycle Scopes | |||
| implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" | |||
| implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.5.1" | |||
| //test | |||
| // Retrofit | |||
| implementation 'com.squareup.retrofit2:retrofit:2.9.0' | |||
| implementation 'com.squareup.retrofit2:converter-gson:2.9.0' | |||
| implementation "com.squareup.okhttp3:logging-interceptor:4.7.2" | |||
| // Navigation Components | |||
| implementation "androidx.navigation:navigation-fragment-ktx:2.5.3" | |||
| implementation "androidx.navigation:navigation-ui-ktx:2.5.3" | |||
| //Preference | |||
| implementation 'androidx.preference:preference:1.2.0' | |||
| } | |||
| @ -0,0 +1,21 @@ | |||
| # Add project specific ProGuard rules here. | |||
| # You can control the set of applied configuration files using the | |||
| # proguardFiles setting in build.gradle. | |||
| # | |||
| # For more details, see | |||
| # http://developer.android.com/guide/developing/tools/proguard.html | |||
| # If your project uses WebView with JS, uncomment the following | |||
| # and specify the fully qualified class name to the JavaScript interface | |||
| # class: | |||
| #-keepclassmembers class fqcn.of.javascript.interface.for.webview { | |||
| # public *; | |||
| #} | |||
| # Uncomment this to preserve the line number information for | |||
| # debugging stack traces. | |||
| #-keepattributes SourceFile,LineNumberTable | |||
| # If you keep the line number information, uncomment this to | |||
| # hide the original source file name. | |||
| #-renamesourcefileattribute SourceFile | |||
| @ -0,0 +1,24 @@ | |||
| package com.nivesh.production.bajajfd | |||
| import androidx.test.platform.app.InstrumentationRegistry | |||
| import androidx.test.ext.junit.runners.AndroidJUnit4 | |||
| import org.junit.Test | |||
| import org.junit.runner.RunWith | |||
| import org.junit.Assert.* | |||
| /** | |||
| * Instrumented test, which will execute on an Android device. | |||
| * | |||
| * See [testing documentation](http://d.android.com/tools/testing). | |||
| */ | |||
| @RunWith(AndroidJUnit4::class) | |||
| class ExampleInstrumentedTest { | |||
| @Test | |||
| fun useAppContext() { | |||
| // Context of the app under test. | |||
| val appContext = InstrumentationRegistry.getInstrumentation().targetContext | |||
| assertEquals("com.nivesh.production.bajajfd", appContext.packageName) | |||
| } | |||
| } | |||
| @ -0,0 +1,61 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | |||
| xmlns:tools="http://schemas.android.com/tools"> | |||
| <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | |||
| <uses-permission android:name="android.permission.INTERNET" /> | |||
| <uses-permission | |||
| android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | |||
| <uses-permission android:name="android.permission.CAMERA" /> | |||
| <uses-permission android:name="ANDROID.PERMISSION.READ_EXTERNAL_STORAGE" /> | |||
| <uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/> | |||
| <uses-feature | |||
| android:name="android.hardware.camera" | |||
| android:required="false" /> | |||
| <uses-feature | |||
| android:name="android.hardware.camera.autofocus" | |||
| android:required="false" /> | |||
| <uses-feature | |||
| android:name="android.hardware.camera.flash" | |||
| android:required="false" /> | |||
| <application | |||
| android:allowBackup="false" | |||
| android:dataExtractionRules="@xml/data_extraction_rules" | |||
| android:fullBackupContent="@xml/backup_rules" | |||
| android:icon="@mipmap/ic_launcher" | |||
| android:label="@string/appName" | |||
| android:roundIcon="@mipmap/ic_launcher_round" | |||
| android:supportsRtl="true" | |||
| android:theme="@style/Theme.NiveshFDSDK" | |||
| tools:targetApi="31"> | |||
| <activity | |||
| android:name=".ui.activity.BajajFdMainActivity" | |||
| android:exported="true" | |||
| android:windowSoftInputMode="adjustPan"> | |||
| <intent-filter> | |||
| <action android:name="android.intent.action.MAIN" /> | |||
| <category android:name="android.intent.category.LAUNCHER" /> | |||
| </intent-filter> | |||
| <meta-data | |||
| android:name="android.app.lib_name" | |||
| android:value="" /> | |||
| </activity> | |||
| <provider | |||
| android:name="androidx.core.content.FileProvider" | |||
| android:authorities="${applicationId}.provider" | |||
| android:exported="false" | |||
| android:grantUriPermissions="true"> | |||
| <meta-data | |||
| android:name="android.support.FILE_PROVIDER_PATHS" | |||
| android:resource="@xml/file_paths" /> | |||
| </provider> | |||
| </application> | |||
| </manifest> | |||
| @ -0,0 +1,17 @@ | |||
| package com.nivesh.production.bajajfd | |||
| import android.app.Application | |||
| import android.content.Context | |||
| class BajajApplication : Application() { | |||
| private var mInstance: BajajApplication? = null | |||
| companion object { | |||
| var appContext: Context? = null | |||
| } | |||
| override fun onCreate() { | |||
| super.onCreate() | |||
| mInstance = this | |||
| appContext = applicationContext | |||
| } | |||
| } | |||
| @ -0,0 +1,83 @@ | |||
| package com.nivesh.production.bajajfd.adapter | |||
| import android.view.LayoutInflater | |||
| import android.view.View | |||
| import android.view.ViewGroup | |||
| import android.widget.ImageView | |||
| import android.widget.TextView | |||
| import androidx.recyclerview.widget.RecyclerView | |||
| import com.nivesh.production.bajajfd.R | |||
| import com.nivesh.production.bajajfd.model.ClientBanklist | |||
| class BankListAdapter( | |||
| private val bankList: List<ClientBanklist>?, | |||
| private val selectedAccount: String? = null, | |||
| private val width: Double? | |||
| ) : RecyclerView.Adapter<BankListAdapter.BankListViewHolder>() { | |||
| 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 tvBankAccountNumber: TextView = itemView.findViewById(R.id.tvBankAccountNumber) | |||
| val tvBankIFSC: TextView = itemView.findViewById(R.id.tvBankIFSC) | |||
| } | |||
| private var checkedPosition: Int = -2 | |||
| override fun onCreateViewHolder( | |||
| parent: ViewGroup, | |||
| viewType: Int | |||
| ): BankListViewHolder { | |||
| val view = LayoutInflater.from(parent.context) | |||
| .inflate(R.layout.item_bank_list_preview, parent, false); | |||
| view.layoutParams = width?.div(1.35) | |||
| ?.let { ViewGroup.LayoutParams(it.toInt(), ViewGroup.LayoutParams.WRAP_CONTENT) } | |||
| return BankListViewHolder(view) | |||
| } | |||
| override fun onBindViewHolder(holder: BankListViewHolder, position: Int) { | |||
| val bankList = bankList?.get(position) | |||
| if (bankList != null) { | |||
| holder.itemView.apply { | |||
| holder.tvBankName.text = bankList.BankName | |||
| holder.tvBankIFSC.text = bankList.IFSCCode | |||
| holder.tvBankAccountNumber.text = bankList.AccountNumber | |||
| if (selectedAccount == bankList.AccountNumber && (checkedPosition == -2)) { | |||
| holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) | |||
| checkedPosition = holder.adapterPosition | |||
| } else if (checkedPosition == -1) { | |||
| holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline) | |||
| } else if (checkedPosition == holder.adapterPosition) { | |||
| holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) | |||
| } else { | |||
| holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline) | |||
| } | |||
| holder.itemView.setOnClickListener { | |||
| holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) | |||
| if (checkedPosition != holder.adapterPosition) { | |||
| notifyItemChanged(checkedPosition) | |||
| checkedPosition = holder.adapterPosition | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| override fun getItemCount(): Int { | |||
| return bankList?.size!! | |||
| } | |||
| private var onItemClickListener: ((ClientBanklist) -> Unit)? = null | |||
| fun setOnItemClickListener(listener: (ClientBanklist) -> Unit) { | |||
| onItemClickListener = listener | |||
| } | |||
| fun getSelected(): ClientBanklist? { | |||
| return if (checkedPosition != -1) { | |||
| bankList?.get(checkedPosition) | |||
| } else null | |||
| } | |||
| } | |||
| @ -0,0 +1,47 @@ | |||
| package com.nivesh.production.bajajfd.adapter | |||
| import android.view.LayoutInflater | |||
| import android.view.View | |||
| import android.view.ViewGroup | |||
| import android.widget.TextView | |||
| import androidx.recyclerview.widget.RecyclerView | |||
| import com.google.android.material.switchmaterial.SwitchMaterial | |||
| import com.nivesh.production.bajajfd.R | |||
| import com.nivesh.production.bajajfd.model.GetCodes | |||
| class CustomerListAdapter( | |||
| private val customerList: MutableList<GetCodes>? | |||
| ) : RecyclerView.Adapter<CustomerListAdapter.BankListViewHolder>() { | |||
| inner class BankListViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { | |||
| val tvCustomerName: SwitchMaterial = itemView.findViewById(R.id.tvCustomerName) | |||
| val txtLabel: TextView = itemView.findViewById(R.id.txtLabel) | |||
| } | |||
| override fun onCreateViewHolder( | |||
| parent: ViewGroup, | |||
| viewType: Int | |||
| ): BankListViewHolder { | |||
| return BankListViewHolder( | |||
| LayoutInflater.from(parent.context).inflate( | |||
| R.layout.item_customer_list_preview, | |||
| parent, | |||
| false | |||
| ) | |||
| ) | |||
| } | |||
| override fun onBindViewHolder(holder: BankListViewHolder, position: Int) { | |||
| val cList = customerList?.get(position) | |||
| if (cList != null) { | |||
| holder.txtLabel.text = cList.Label | |||
| holder.tvCustomerName.setOnCheckedChangeListener { _, isChecked -> | |||
| cList.isSelected = isChecked | |||
| } | |||
| } | |||
| } | |||
| override fun getItemCount(): Int { | |||
| return customerList?.size!! | |||
| } | |||
| } | |||
| @ -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 | |||
| } | |||
| } | |||
| @ -0,0 +1,124 @@ | |||
| package com.nivesh.production.bajajfd.adapter | |||
| import ROIDataList | |||
| import android.annotation.SuppressLint | |||
| import android.app.Activity | |||
| import android.view.LayoutInflater | |||
| import android.view.View | |||
| import android.view.ViewGroup | |||
| import android.widget.LinearLayout | |||
| import android.widget.TextView | |||
| import androidx.core.content.ContextCompat | |||
| import androidx.core.content.res.ResourcesCompat | |||
| import androidx.recyclerview.widget.RecyclerView | |||
| import com.nivesh.production.bajajfd.R | |||
| import com.nivesh.production.bajajfd.adapter.HorizontalRecyclerViewAdapter.HistoryAdapterViewHolder2 | |||
| import com.nivesh.production.bajajfd.interfaces.OnClickListener | |||
| class HorizontalRecyclerViewAdapter( | |||
| private val activity: Activity, | |||
| dropdownList: MutableList<ROIDataList>, | |||
| onClickListener: OnClickListener | |||
| ) : RecyclerView.Adapter<HistoryAdapterViewHolder2>() { | |||
| private var dropdownList: MutableList<ROIDataList> | |||
| private var rowIndex = -1 | |||
| private var onClickListener: OnClickListener | |||
| inner class HistoryAdapterViewHolder2(view: View?) : RecyclerView.ViewHolder( | |||
| view!! | |||
| ) { | |||
| var txtYear: TextView = itemView.findViewById(R.id.txtYear) | |||
| var txtInterestRate: TextView = itemView.findViewById(R.id.txtInterestRate) | |||
| var rlParent: LinearLayout = itemView.findViewById(R.id.rlParent) | |||
| } | |||
| init { | |||
| this.dropdownList = dropdownList | |||
| this.onClickListener = onClickListener | |||
| } | |||
| override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HistoryAdapterViewHolder2 { | |||
| val itemView = | |||
| LayoutInflater.from(parent.context).inflate(R.layout.row_dropdown, parent, false) | |||
| return HistoryAdapterViewHolder2(itemView) | |||
| } | |||
| override fun onBindViewHolder( | |||
| holder: HistoryAdapterViewHolder2, | |||
| @SuppressLint("RecyclerView") position: Int | |||
| ) { | |||
| if (dropdownList.isNotEmpty()) { | |||
| val roiDataList: ROIDataList = dropdownList[position] | |||
| getYear(holder.txtYear, roiDataList, holder) | |||
| holder.txtInterestRate.text = roiDataList.ROI.toString().plus(" % ") | |||
| holder.rlParent.setOnClickListener { | |||
| rowIndex = position | |||
| notifyDataSetChanged() | |||
| } | |||
| if (rowIndex == position) { | |||
| onClickListener.onclickCategory(position) | |||
| holder.txtYear.background = | |||
| ResourcesCompat.getDrawable( | |||
| activity.resources, | |||
| R.drawable.rounded_corner_green_fill, | |||
| null | |||
| ) | |||
| holder.txtYear.setTextColor(ContextCompat.getColor(activity, R.color.white)) | |||
| } else { | |||
| holder.txtYear.background = | |||
| ResourcesCompat.getDrawable( | |||
| activity.resources, | |||
| R.drawable.rounded_corner_with_line, | |||
| null | |||
| ) | |||
| holder.txtYear.setTextColor( | |||
| ContextCompat.getColor(activity, R.color.black) | |||
| ) | |||
| } | |||
| } | |||
| } | |||
| private fun getYear(txtYear: TextView, option: ROIDataList, holder: HistoryAdapterViewHolder2) { | |||
| when (option.Tenure) { | |||
| "12" -> { | |||
| holder.rlParent.visibility = View.VISIBLE | |||
| txtYear.text = activity.getString(R.string.OneYear) | |||
| } | |||
| "24" -> { | |||
| holder.rlParent.visibility = View.VISIBLE | |||
| txtYear.text = activity.getString(R.string.TwoYears) | |||
| } | |||
| "36" -> { | |||
| holder.rlParent.visibility = View.VISIBLE | |||
| txtYear.text = activity.getString(R.string.ThreeYears) | |||
| } | |||
| "48" -> { | |||
| holder.rlParent.visibility = View.VISIBLE | |||
| txtYear.text = activity.getString(R.string.FourYears) | |||
| } | |||
| "60" -> { | |||
| holder.rlParent.visibility = View.VISIBLE | |||
| txtYear.text = activity.getString(R.string.FiveYears) | |||
| } | |||
| else -> { | |||
| holder.rlParent.visibility = View.GONE | |||
| } | |||
| } | |||
| } | |||
| override fun getItemCount(): Int { | |||
| return dropdownList.size | |||
| } | |||
| override fun getItemViewType(position: Int): Int { | |||
| return position | |||
| } | |||
| fun refresh() { | |||
| rowIndex = -1 | |||
| notifyDataSetChanged() | |||
| } | |||
| } | |||
| @ -0,0 +1,94 @@ | |||
| package com.nivesh.production.bajajfd.adapter | |||
| import android.view.LayoutInflater | |||
| import android.view.View | |||
| import android.view.ViewGroup | |||
| import android.widget.ImageView | |||
| import android.widget.TextView | |||
| import androidx.recyclerview.widget.RecyclerView | |||
| import com.nivesh.production.bajajfd.R | |||
| import com.nivesh.production.bajajfd.model.GetCodes | |||
| class PaymentModeAdapter( | |||
| private val bankList: List<GetCodes>?, | |||
| private val selectedAccount: String? = null | |||
| ) : RecyclerView.Adapter<PaymentModeAdapter.BankListViewHolder>() { | |||
| 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 tvUpiMsg: TextView = itemView.findViewById(R.id.tvUpiMsg) | |||
| } | |||
| private var checkedPosition: Int = -2 | |||
| override fun onCreateViewHolder( | |||
| parent: ViewGroup, | |||
| viewType: Int | |||
| ): BankListViewHolder { | |||
| return BankListViewHolder( | |||
| LayoutInflater.from(parent.context).inflate( | |||
| R.layout.item_payment_list_preview, | |||
| parent, | |||
| false | |||
| ) | |||
| ) | |||
| } | |||
| override fun onBindViewHolder(holder: BankListViewHolder, position: Int) { | |||
| val bankList = bankList?.get(position) | |||
| if (bankList != null) { | |||
| holder.itemView.apply { | |||
| holder.tvBankName.text = bankList.Value | |||
| if (bankList.Value.equals("UPI")){ | |||
| holder.tvUpiMsg.text = context.getString(R.string.upto1LakhOnly) | |||
| }else{ | |||
| holder.tvUpiMsg.text = "" | |||
| } | |||
| if (selectedAccount == bankList.Value && checkedPosition == -2 | |||
| ) { | |||
| holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) | |||
| checkedPosition = holder.adapterPosition | |||
| } else if (checkedPosition == -1) { | |||
| holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline) | |||
| } else if (checkedPosition == holder.adapterPosition) { | |||
| holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) | |||
| } else { | |||
| holder.bankSelector.setBackgroundResource(R.drawable.ic_select_outline) | |||
| } | |||
| setOnClickListener { | |||
| onItemClickListener?.let { | |||
| it(bankList) | |||
| holder.bankSelector.setBackgroundResource(R.drawable.ic_select_green) | |||
| if (checkedPosition != holder.adapterPosition) { | |||
| notifyItemChanged(checkedPosition) | |||
| checkedPosition = holder.adapterPosition | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| override fun getItemCount(): Int { | |||
| return bankList?.size!! | |||
| } | |||
| private var onItemClickListener: ((GetCodes) -> Unit)? = null | |||
| fun setOnItemClickListener(listener: (GetCodes) -> Unit) { | |||
| onItemClickListener = listener | |||
| } | |||
| fun getSelected(): GetCodes? { | |||
| return if (checkedPosition != -1) { | |||
| bankList?.get(checkedPosition) | |||
| } else null | |||
| } | |||
| } | |||
| @ -0,0 +1,39 @@ | |||
| package com.nivesh.production.bajajfd.adapter | |||
| import android.view.LayoutInflater | |||
| import android.view.View | |||
| import android.view.ViewGroup | |||
| import android.widget.TextView | |||
| import androidx.recyclerview.widget.RecyclerView | |||
| import com.nivesh.production.bajajfd.R | |||
| import com.nivesh.production.bajajfd.model.Bank | |||
| class RecommendedBankListAdapter( | |||
| private val bankList: List<Bank> | |||
| ) : RecyclerView.Adapter<RecommendedBankListAdapter.MyViewHolder>() { | |||
| class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { | |||
| val txtYear: TextView | |||
| init { | |||
| txtYear = view.findViewById(R.id.txtYear) | |||
| } | |||
| } | |||
| override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { | |||
| val itemView: View = LayoutInflater.from(parent.context) | |||
| .inflate(R.layout.row_bank_list, parent, false) | |||
| return MyViewHolder(itemView) | |||
| } | |||
| override fun onBindViewHolder(holder: MyViewHolder, position: Int) { | |||
| val bank: Bank = bankList[position] | |||
| holder.txtYear.text = bank.BankName | |||
| } | |||
| override fun getItemCount(): Int { | |||
| return bankList.size | |||
| } | |||
| } | |||
| @ -0,0 +1,18 @@ | |||
| package com.nivesh.production.bajajfd.adapter | |||
| import androidx.fragment.app.Fragment | |||
| import androidx.fragment.app.FragmentManager | |||
| import androidx.fragment.app.FragmentPagerAdapter | |||
| class SectionsPagerAdapter(manager: FragmentManager,private val fragments: Array<Fragment>) : FragmentPagerAdapter(manager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { | |||
| private val titles = ArrayList<String>() | |||
| override fun getItem(position: Int): Fragment = fragments[position] | |||
| override fun getCount(): Int = fragments.size | |||
| override fun getPageTitle(position: Int): CharSequence = titles[position] | |||
| } | |||
| @ -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) | |||
| } | |||
| } | |||
| @ -0,0 +1,65 @@ | |||
| package com.nivesh.production.bajajfd.api | |||
| import com.nivesh.production.bajajfd.BajajApplication | |||
| import com.nivesh.production.bajajfd.interfaces.ApiInterface | |||
| import com.nivesh.production.bajajfd.util.Constants.Companion.BASE_URL | |||
| import okhttp3.OkHttpClient | |||
| import okhttp3.logging.HttpLoggingInterceptor | |||
| import retrofit2.Retrofit | |||
| import retrofit2.converter.gson.GsonConverterFactory | |||
| import java.security.KeyStore | |||
| import java.util.* | |||
| import java.util.concurrent.TimeUnit | |||
| import javax.net.ssl.* | |||
| class ApiClient { | |||
| val context = BajajApplication.appContext | |||
| companion object { | |||
| private val client by lazy { | |||
| //lazy means we only initialize this here once | |||
| val logging = HttpLoggingInterceptor() | |||
| //loggingInterceptor use for see making request and for see what responses are | |||
| logging.setLevel(HttpLoggingInterceptor.Level.BODY) | |||
| //see the body of response | |||
| //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() | |||
| .addInterceptor(logging) | |||
| .sslSocketFactory(sslSocketFactory, trustManager) | |||
| .retryOnConnectionFailure(true) | |||
| .callTimeout(2, TimeUnit.MINUTES) | |||
| .connectTimeout(20, TimeUnit.SECONDS) | |||
| .readTimeout(30, TimeUnit.SECONDS) | |||
| .writeTimeout(30, TimeUnit.SECONDS) | |||
| .build() | |||
| Retrofit.Builder() | |||
| .baseUrl(BASE_URL) | |||
| .addConverterFactory(GsonConverterFactory.create()) | |||
| .client(client) | |||
| .build() | |||
| } | |||
| val getApiClient: ApiInterface by lazy { | |||
| client.create(ApiInterface::class.java) | |||
| } | |||
| } | |||
| } | |||
| @ -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(); | |||
| // | |||
| // | |||
| // } | |||
| } | |||
| @ -0,0 +1,180 @@ | |||
| package com.nivesh.production.bajajfd.interfaces | |||
| import com.google.gson.JsonObject | |||
| import com.nivesh.production.bajajfd.model.* | |||
| import okhttp3.RequestBody | |||
| import retrofit2.Response | |||
| import retrofit2.http.* | |||
| interface ApiInterface { | |||
| @POST("GetRates") | |||
| suspend fun getRates( | |||
| @Body getRatesRequest: GetRatesRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("CheckFDCKYC") | |||
| suspend fun checkFDKYC( | |||
| @Body checkFDKYCRequest: CheckFDKYCRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("CreateFDApplication") | |||
| suspend fun createFDApp( | |||
| @Body createFDRequest: CreateFDRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("DocumentsUpload") | |||
| suspend fun documentsUpload( | |||
| @Body requestBody: DocumentUpload, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("SaveFDOtherData") | |||
| suspend fun saveFDOtherData( | |||
| @Body requestBody: SaveFDOtherDataRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetFDDetails") | |||
| suspend fun getFDDetails( | |||
| @Body requestBody: GetFDDetailsRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("UpdateFDPaymentStatus") | |||
| suspend fun updateFDPaymentStatus( | |||
| @Body requestBody: RequestBody, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("FinaliseFD") | |||
| suspend fun finaliseFD( | |||
| @Body requestBody: FinalizeFDRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("FinaliseKYC") | |||
| suspend fun finaliseKYC( | |||
| @Body requestBody: FinalizeKYCRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("PaymentRequery") | |||
| suspend fun paymentReQuery( | |||
| @Body requestBody: PaymentReQueryRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| // @FormUrlEncoded | |||
| @POST("GetCodes") | |||
| suspend fun getCodes( | |||
| @Body requestBody: GetCodeRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("CalculateFDMaturityAmount") | |||
| suspend fun getCalculateFDMaturityAmount( | |||
| @Body requestBody: GetMaturityAmountRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("PanCheck_S") | |||
| suspend fun panCheckApi( | |||
| @Body panCheck: PanCheckRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("getFDStepsCount") | |||
| suspend fun getFDStepsCount( | |||
| @Body fdStepsCountRequest: FDStepsCountRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetClientDetailV2_S") | |||
| suspend fun getClientDetails( | |||
| @Body getClientDetailsRequest: getClientDetailsRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetCodes") | |||
| suspend fun titleApi( | |||
| @Body getCodeRequest: GetCodeRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetCodes") | |||
| suspend fun genderApi( | |||
| @Body getCodeRequest: GetCodeRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetCodes") | |||
| suspend fun annualIncomeApi( | |||
| @Body getCodeRequest: GetCodeRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetCodes") | |||
| suspend fun relationShipApi( | |||
| @Body getCodeRequest: GetCodeRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetCodes") | |||
| suspend fun maritalStatusApi( | |||
| @Body getCodeRequest: GetCodeRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetCodes") | |||
| suspend fun occupationApi( | |||
| @Body getCodeRequest: GetCodeRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetStateMaster") | |||
| suspend fun stateApi(@Header("token") token: String): Response<JsonObject> | |||
| @POST("GetCity") | |||
| suspend fun cityApi( | |||
| @Body cityRequest: CityRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @GET("GetFDBankList?FDProvider=Bajaj") | |||
| suspend fun bankListApi(@Header("token") token: String, @Query("Language") language : String): Response<JsonObject> | |||
| @GET("GetIFSC_Autofill?") | |||
| suspend fun getIFSCApi(@Query("prefix") ifsc : String): Response<JsonObject> | |||
| @GET("GetbankNames") | |||
| suspend fun getIFSCBankDetailsApi(@Query( "bankname") ifsc : String, @Header("token") token: String): Response<String> | |||
| @POST("GetCodes") | |||
| suspend fun payModeApi( | |||
| @Body getCodeRequest: GetCodeRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetCodes") | |||
| suspend fun customerListApi( | |||
| @Body getCodeRequest: GetCodeRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("BankValidationAPI_S") | |||
| suspend fun bankValidationApi( | |||
| @Body bankValidationApiRequest: BankValidationApiRequest, | |||
| @Header("token") token: String | |||
| ): Response<JsonObject> | |||
| @POST("GetToken_V2") | |||
| suspend fun freshToken( | |||
| @Body requestBody: RequestBody | |||
| ):Response<JsonObject> | |||
| } | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.interfaces; | |||
| public interface OnClickListener { | |||
| void onclickCategory(int position); | |||
| } | |||
| @ -0,0 +1,8 @@ | |||
| package com.nivesh.production.bajajfd.interfaces | |||
| import com.nivesh.production.bajajfd.model.CreateFDApplicationResponse | |||
| interface SendData { | |||
| fun sendDataFragment(message: CreateFDApplicationResponse) | |||
| fun sendDataFragmentStepFour(message: CreateFDApplicationResponse) | |||
| } | |||
| @ -0,0 +1,24 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ApplicantDetails( | |||
| var AnnualIncome: String?= null, | |||
| var ApplicantAddress1: String?= null, | |||
| var ApplicantAddress2: String?= null, | |||
| var ApplicantAddress3: String?= null, | |||
| var ApplicantCity: String?= null, | |||
| var ApplicantCountry: String?= null, | |||
| var ApplicantDOB: String?= null, | |||
| var ApplicantEmail: String?= null, | |||
| var ApplicantFirstName: String?= null, | |||
| var ApplicantGender: String?= null, | |||
| var ApplicantLastName: String?= null, | |||
| var ApplicantMaritalStatus: String?= null, | |||
| var ApplicantMiddleName: String?= null, | |||
| var ApplicantMobile: String?= null, | |||
| var ApplicantOccupation: String?= null, | |||
| var ApplicantPAN: String?= null, | |||
| var ApplicantPincode: Int?= 0, | |||
| var ApplicantQualification: String?= null, | |||
| var ApplicantSalutation: String?= null, | |||
| var ApplicantState: String?= null | |||
| ) | |||
| @ -0,0 +1,10 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ApplicantRelationDetails( | |||
| var ApplicantMotherFirstName: String? = null, | |||
| var ApplicantMotherLastName: String? = null, | |||
| var ApplicantRelation: String? = null, | |||
| var ApplicantRelationFirstName: String? = null, | |||
| var ApplicantRelationLastName: String? = null, | |||
| var ApplicantRelationSalutation: String? = null | |||
| ) | |||
| @ -0,0 +1,6 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class Bank( | |||
| val BankName: String, | |||
| val IFSC4Mapping: String | |||
| ) | |||
| @ -0,0 +1,15 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| import java.io.Serializable | |||
| data class BankList( | |||
| val BankName: String?, | |||
| val IFSCCode: String?, | |||
| val AccountNumber: String?, | |||
| val BranchName: String?, | |||
| val DefaultBankFlag: String?, | |||
| val IsValBank: String?, | |||
| val AccountType: String? | |||
| ): Serializable | |||
| @ -0,0 +1,10 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class BankValidationApiRequest( | |||
| var BankAccountNo: String?="", | |||
| var BankNo: Int?= 0, | |||
| var IFSC: String?= "", | |||
| var Name: String? = "", | |||
| var PhoneNo: String? = "", | |||
| var RoleId: Int? = 0 | |||
| ) | |||
| @ -0,0 +1,8 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class BankValidationApiResponse( | |||
| val DataObject: Any, | |||
| val Message: String, | |||
| val ObjectResponse: Any, | |||
| val response: ResponseXXXXXXXXXXXXXX | |||
| ) | |||
| @ -0,0 +1,8 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class CheckFDKYCRequest( | |||
| var DOB: String? ="", | |||
| var Mobile: String? = "", | |||
| var NiveshClientCode: String? = "", | |||
| var PAN: String?= "" | |||
| ) | |||
| @ -0,0 +1,6 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class CityListResponse( | |||
| val DataObject: List<DataObjectX>, | |||
| val response: ResponseXXXXXX | |||
| ) | |||
| @ -0,0 +1,15 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class CityRequest( | |||
| var APIName: String? = "", | |||
| var APP_Web: String?="", | |||
| var ClientCode: String?="", | |||
| var HOCode: String?="", | |||
| var RMCode: String?="", | |||
| var RoleID: Int = 0, | |||
| var Source: String? = "", | |||
| var StateCode: Int? = 0, | |||
| var Subbroker_Code: String? = "", | |||
| var Type: String?= "", | |||
| var UID: Int = 0 | |||
| ) | |||
| @ -0,0 +1,11 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ClientBanklist( | |||
| var AccountNumber: String?="", | |||
| var AccountType: String?="", | |||
| var BankName: String?="", | |||
| var BranchName: String?="", | |||
| val DefaultBankFlag: String?="", | |||
| var IFSCCode: String?="", | |||
| var IsValBank: Int? = 0 | |||
| ) | |||
| @ -0,0 +1,22 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ClientDetails( | |||
| val ARNexpiredFlag: Boolean, | |||
| val EditProfileMessage: String, | |||
| val IsPartiallyFilled: Boolean, | |||
| val KYCstatus: String, | |||
| val ProfileMessage: String, | |||
| val ProfileStatus: String, | |||
| val UnifiedMessage: String, | |||
| val appliaction1_image_name: String, | |||
| val city_of_birth: String, | |||
| val clientMasterMFD: ClientMasterMFD, | |||
| val country_of_birth: String, | |||
| val created_by: String, | |||
| val created_date: String, | |||
| val email: String, | |||
| val mobile: String, | |||
| val modified_by: String, | |||
| val modified_date: String, | |||
| val sub_broker_code: String | |||
| ) | |||
| @ -0,0 +1,40 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ClientMasterMFD( | |||
| val CLIENT_ACCNO1: String, | |||
| val CLIENT_ACCTYPE1: String, | |||
| val CLIENT_ADD1: String, | |||
| val CLIENT_ADD2: String, | |||
| val CLIENT_ADD3: String, | |||
| val CLIENT_APPNAME1: String, | |||
| val CLIENT_CITY: String, | |||
| val CLIENT_CODE: String, | |||
| val CLIENT_COMMMODE: String, | |||
| val CLIENT_COUNTRY: String, | |||
| val CLIENT_DIVPAYMODE: String, | |||
| val CLIENT_DOB: String, | |||
| val CLIENT_EMAIL: String, | |||
| val CLIENT_FATHER_HUSBAND_GUARDIAN: String, | |||
| val CLIENT_GENDER: String, | |||
| val CLIENT_GUARDIANPAN: String, | |||
| val CLIENT_HOLDING: String, | |||
| val CLIENT_NEFT_IFSCCODE1: String, | |||
| val CLIENT_OCCUPATION_CODE: String, | |||
| val CLIENT_PAN: String, | |||
| val CLIENT_PINCODE: String, | |||
| val CLIENT_STATE: String, | |||
| val CLIENT_TAXSTATUS: String, | |||
| val CLIENT_TYPE: String, | |||
| val CM_MOBILE: String, | |||
| val Client_Title: String, | |||
| val DEFAULT_BLANK_FLAG1: String, | |||
| val Filler1: String, | |||
| val Filler2: String, | |||
| val Filler3: Any, | |||
| val NominationAuthMode: String, | |||
| val NominationOptFlag: String, | |||
| val Nominee_Title: String, | |||
| val Nominees: List<Nominee>, | |||
| val ParentName: String, | |||
| val ums_id: String | |||
| ) | |||
| @ -0,0 +1,10 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class CreateFDApplicationRequest( | |||
| var ApplicantDetails: ApplicantDetails ? = null, | |||
| var ApplicantRelationDetails: ApplicantRelationDetails? = null, | |||
| var FDInvestmentDetails: FDInvestmentDetails? = null, | |||
| var FdBankDetails: FdBankDetails? = null, | |||
| var NomineeDetails: NomineeDetails? = null, | |||
| var NomineeGuardianDetails: NomineeGuardianDetails ? = null | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class CreateFDApplicationResponse( | |||
| val Response: ResponseXXXXXXXXXXX | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class CreateFDRequest( | |||
| var CreateFDApplicationRequest: CreateFDApplicationRequest? = null | |||
| ) | |||
| @ -0,0 +1,17 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| import java.io.Serializable | |||
| data class DataObject( | |||
| var BSE_State_Code: String? = "", | |||
| var CAMS_statecode: String? = "", | |||
| var Country_Id: Int? = 0, | |||
| var State_Code: String?= "", | |||
| var State_Id: Int? = 0, | |||
| var State_Name: String? = "", | |||
| var signzyCode: String? = "" | |||
| ): Serializable { | |||
| override fun toString(): String { | |||
| return State_Name.toString() | |||
| } | |||
| } | |||
| @ -0,0 +1,10 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class DataObjectX( | |||
| val city_id: Int, | |||
| val city_name: String | |||
| ) { | |||
| override fun toString(): String { | |||
| return city_name | |||
| } | |||
| } | |||
| @ -0,0 +1,12 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class DeviceInfo( | |||
| var app_version: String? = "", | |||
| var device_id: String? = "", | |||
| var device_model: String? = "", | |||
| var device_name: String? ="", | |||
| var device_os_version: String? = "", | |||
| var device_token: String? = "", | |||
| var device_type: String? = "", | |||
| var device_id_for_UMSId : String? = "" | |||
| ) | |||
| @ -0,0 +1,10 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class DocumentUpload( | |||
| var Description: String? = null, | |||
| var DocumentType: String? = null, | |||
| var FDProvider: String? = null, | |||
| var ImageEncodeToBase64: String? = null, | |||
| var NiveshClientCode: String? = null, | |||
| var UniqueId: String? = null | |||
| ) | |||
| @ -0,0 +1,6 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class Errors( | |||
| val ErrorCode: Int, | |||
| val ErrorMessage: String | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class FDCreationDetailsResponse( | |||
| val DocumentUploadFlag: Int, | |||
| val UniqueId: String, | |||
| val kycFlag: Int | |||
| ) | |||
| @ -0,0 +1,12 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class FDDataResponse( | |||
| val FDAmount: Double, | |||
| val Frequency: String, | |||
| val ParameterName: String, | |||
| val PaymentUrl: String, | |||
| val RateOfInterest: Double, | |||
| val Tenure: Int, | |||
| val UniqueId: String, | |||
| val Value: String | |||
| ) | |||
| @ -0,0 +1,18 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class FDInvestmentDetails( | |||
| var CKYCNumber: String? = null, | |||
| var CitizenType: String? = null, | |||
| var CustomerType: String? = null, | |||
| var Device: String? = null, | |||
| var FDAmount: Double? = 0.0, | |||
| var Frequency: String? = null, | |||
| var IPAddress: String? = null, | |||
| var Interest: Double? = 0.0, | |||
| var NiveshClientCode: String? = null, | |||
| var Provider: String? = null, | |||
| var Source: String? = null, | |||
| var Tenure: Int? = 0, | |||
| var UniqueId: String? = "" | |||
| ) | |||
| @ -0,0 +1,6 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class FDStepsCountRequest( | |||
| var FDProvider: String? = "", | |||
| var NiveshClientCode: String? = "" | |||
| ) | |||
| @ -0,0 +1,10 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class FdBankDetails( | |||
| var AccountNumber: String?= null, | |||
| var AccountType: String?= null, | |||
| var BankBranch: String?= null, | |||
| var BankName: String?= null, | |||
| var IFSCCode: String?= null, | |||
| var PaymentMode: String?= null | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class FinaliseFD( | |||
| var FDProvider: String? = "", | |||
| var NiveshClientCode: String? = "", | |||
| var UniqueId: String? = "" | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class FinalizeFDRequest( | |||
| var FinaliseFD: FinaliseFD? = null | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class FinalizeFDResponse( | |||
| val Response: ResponseXXXXXXXXXXXXXXXX | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class FinalizeKYCRequest( | |||
| var FDProvider: String? = "", | |||
| var NiveshClientCode: String? = "", | |||
| var UniqueId: String? = "" | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class GetCalculateMaturityAmountResponse( | |||
| val Response: ResponseXX | |||
| ) | |||
| @ -0,0 +1,8 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class GetCodeRequest( | |||
| var Category: String ? = null, | |||
| var InputValue: String? = null, | |||
| var Language: String ? = null, | |||
| var ProductName: String? = null | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class GetCodeResponse( | |||
| val Response: ResponseX | |||
| ) | |||
| @ -0,0 +1,11 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class GetCodes( | |||
| val Label: String, | |||
| var Value: String, | |||
| var isSelected : Boolean | |||
| ) { | |||
| override fun toString(): String { | |||
| return Label | |||
| } | |||
| } | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class GetFDBankListResponse( | |||
| val Response: ResponseXXXXXXXX | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class GetFDDetailsRequest( | |||
| var FDProvider: String? = "", | |||
| var NiveshClientCode: String? = "", | |||
| var UniqueId: String? = "" | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class GetFDDetailsResponse( | |||
| val Response: ResponseXXXXXXXXXXXX | |||
| ) | |||
| @ -0,0 +1,6 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class GetIFSCCodeListResponse( | |||
| val IFSCCodes: MutableList<String>, | |||
| val Response: ResponseXXXXXXXXXX | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class GetIFSCCodeResponse( | |||
| val IFSCCODEServiceResult: List<IFSCCODEServiceResult> | |||
| ) | |||
| @ -0,0 +1,9 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class GetMaturityAmountRequest( | |||
| var FDAmount: Int? = 0, | |||
| var FDProvider: String? = "", | |||
| var Frequency: String? = "", | |||
| var Interest: Double? = 0.0, | |||
| var Tenure: Int? = 0 | |||
| ) | |||
| @ -0,0 +1,9 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| import com.google.gson.annotations.SerializedName | |||
| data class GetRatesRequest( | |||
| @SerializedName("FDProvider") var fdProvider: String? = null, | |||
| @SerializedName("Frequency") var frequency: String? = null, | |||
| @SerializedName("Type") var type: String? = null | |||
| ) | |||
| @ -0,0 +1,3 @@ | |||
| data class GetRatesResponse( | |||
| val Response: Response | |||
| ) | |||
| @ -0,0 +1,10 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class IFSCCODEServiceResult( | |||
| val BankBranch: String, | |||
| val BnkDescr: String, | |||
| val BnkShrtDescr: String, | |||
| val Code: String, | |||
| val IfscCode: String, | |||
| val intCustbnk_pk: String | |||
| ) | |||
| @ -0,0 +1,12 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class Nominee( | |||
| val NomineeApplicablePercent: Double, | |||
| val NomineeDOB: String, | |||
| val NomineeGuardian: String, | |||
| val NomineeGuardianPAN: String, | |||
| val NomineeMinorFlag: String, | |||
| val NomineeName: String, | |||
| val NomineePAN: String, | |||
| val NomineeRelationship: String | |||
| ) | |||
| @ -0,0 +1,18 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class NomineeDetails( | |||
| var NomineeAddress1: String?= null, | |||
| var NomineeAddress2: String?= null, | |||
| var NomineeAddress3: String?= null, | |||
| var NomineeCity: String?= null, | |||
| var NomineeCountry: String?= null, | |||
| var NomineeDOB: String?= null, | |||
| var NomineeFirstName: String?= null, | |||
| var NomineeGender: String?= null, | |||
| var NomineeLastName: String?= null, | |||
| var NomineeMiddleName: String?= null, | |||
| var NomineePincode: Int?= 0, | |||
| var NomineeRelation: String?= null, | |||
| var NomineeSalutation: String?= null, | |||
| var NomineeState: String?= null | |||
| ) | |||
| @ -0,0 +1,14 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class NomineeGuardianDetails( | |||
| var GuardianAddress1: String?= null, | |||
| var GuardianAddress2: String?= null, | |||
| var GuardianAddress3: String?= null, | |||
| var GuardianAge: Int?= 0, | |||
| var GuardianCity: String?= null, | |||
| var GuardianCountry: String?= null, | |||
| var GuardianName: String?= null, | |||
| var GuardianPincode: Int?= 0, | |||
| var GuardianSalutation: String?= null, | |||
| var GuardianState: String?= null | |||
| ) | |||
| @ -0,0 +1,9 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ObjectResponse( | |||
| val TransactionCount: Int, | |||
| val clientDetails: ClientDetails, | |||
| val languageid: Int, | |||
| val membersList: List<Any>, | |||
| val ClientBanklist : List<ClientBanklist> | |||
| ) | |||
| @ -0,0 +1,14 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| import com.google.gson.annotations.SerializedName | |||
| data class PanCheckRequest( | |||
| @SerializedName("client_code") | |||
| var clientCode: String? = null, | |||
| @SerializedName("sub_broker_code") | |||
| var subBrokerCode: String? = null, | |||
| @SerializedName("pan_number") | |||
| var panNumber: String? = null, | |||
| @SerializedName("mobile_number") | |||
| var mobileNumber: String? = null | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class PanCheckResponse( | |||
| val response: ResponseXXX | |||
| ) | |||
| @ -0,0 +1,6 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class PaymentReQueryRequest( | |||
| var NiveshClientCode: String? = "", | |||
| var UniqueId: String? = "" | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class PaymentReQueryResponse( | |||
| val Response: ResponseXXXXXXXXXXXXXXX | |||
| ) | |||
| @ -0,0 +1,11 @@ | |||
| data class ROIDataList( | |||
| val Frequency: String, | |||
| val Provider: String, | |||
| val ROI: Double, | |||
| val Tenure: String, | |||
| val Type: String | |||
| ) { | |||
| override fun toString(): String { | |||
| return Tenure.plus(" Months ").plus(" | ").plus(ROI).plus("%") | |||
| } | |||
| } | |||
| @ -0,0 +1,9 @@ | |||
| import com.nivesh.production.bajajfd.model.Errors | |||
| data class Response( | |||
| val Errors: List<Errors>, | |||
| val Message: String, | |||
| var ROIDatalist: MutableList<ROIDataList>, | |||
| val Status: String, | |||
| val StatusCode: Int | |||
| ) | |||
| @ -0,0 +1,9 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseX( | |||
| val Errors: List<Errors>, | |||
| val GetCodesList: MutableList<GetCodes>, | |||
| val Message: String, | |||
| val Status: String, | |||
| val StatusCode: Int | |||
| ) | |||
| @ -0,0 +1,9 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXX( | |||
| val Errors: List<Errors>, | |||
| val MaturityAmount: Double, | |||
| val Message: String, | |||
| val Status: String, | |||
| val StatusCode: Int | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXX( | |||
| val message: String, | |||
| val status: String, | |||
| val status_code: Int | |||
| ) | |||
| @ -0,0 +1,9 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXX( | |||
| val Errors: List<Errors>, | |||
| val Message: String, | |||
| val Status: String, | |||
| val StatusCode: Int, | |||
| val StepsCount: Int | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXXX( | |||
| val message: String, | |||
| val status: String, | |||
| val status_code: Int | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXXXX( | |||
| val message: String, | |||
| val status: String, | |||
| val status_code: Int | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXXXXX( | |||
| val message: String, | |||
| val status: String, | |||
| val status_code: Int | |||
| ) | |||
| @ -0,0 +1,9 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXXXXXX( | |||
| val BankList: List<Bank>, | |||
| val Errors: List<Errors>, | |||
| val Message: String, | |||
| val Status: String, | |||
| val StatusCode: Int | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXXXXXXX( | |||
| val message: String, | |||
| val status: String, | |||
| val status_code: Int | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXXXXXXXX( | |||
| val message: String, | |||
| val status: String, | |||
| val status_code: Int | |||
| ) | |||
| @ -0,0 +1,9 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXXXXXXXXX( | |||
| val Errors: List<Errors>, | |||
| val FDCreationDetailsResponse: FDCreationDetailsResponse, | |||
| val Message: String, | |||
| val Status: String, | |||
| val StatusCode: Int | |||
| ) | |||
| @ -0,0 +1,11 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| import com.nivesh.production.bajajfd.util.Resource | |||
| data class ResponseXXXXXXXXXXXX( | |||
| val Errors: List<Errors>, | |||
| val FDDataResponse: FDDataResponse, | |||
| val Message: String, | |||
| val Status: String, | |||
| val StatusCode: Int | |||
| ) | |||
| @ -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 | |||
| ) | |||
| @ -0,0 +1,7 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXXXXXXXXXXXX( | |||
| val message: String, | |||
| val status: String, | |||
| val status_code: Int | |||
| ) | |||
| @ -0,0 +1,8 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXXXXXXXXXXXXX( | |||
| val Errors: List<Errors>, | |||
| val Message: String, | |||
| val Status: String, | |||
| val StatusCode: Int | |||
| ) | |||
| @ -0,0 +1,9 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class ResponseXXXXXXXXXXXXXXXX( | |||
| val Errors: List<Errors>, | |||
| val Message: String, | |||
| val Status: String, | |||
| val StatusCode: Int, | |||
| val UniqueId: String | |||
| ) | |||
| @ -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? = "" | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class SaveFDOtherDataResponse( | |||
| val Response: ResponseXXXXXXXXXXXXX | |||
| ) | |||
| @ -0,0 +1,8 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class StateListResponse( | |||
| val DataObject: List<DataObject>, | |||
| val Message: Any, | |||
| val ObjectResponse: Any, | |||
| val response: ResponseXXXXX | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class StepsCountResponse( | |||
| val Response: ResponseXXXX | |||
| ) | |||
| @ -0,0 +1,5 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class UploadResponse( | |||
| val Response: ResponseXXXXXXXXXXXX | |||
| ) | |||
| @ -0,0 +1,10 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class UserRequest( | |||
| var AppOrWeb: String? = "", | |||
| var IPAddress: String? = "", | |||
| var LoggedInRoleId: Int = 0, | |||
| var Source: String? = "", | |||
| var UID: Int? = 0, | |||
| var deviceInfo: DeviceInfo? = null | |||
| ) | |||
| @ -0,0 +1,8 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class getClientDetailsRequest( | |||
| var AppOrWeb: String? = "", | |||
| var UserRequest: UserRequest? = null, | |||
| var client_code: String? = "", | |||
| var sub_broker_code: String? = "" | |||
| ) | |||
| @ -0,0 +1,8 @@ | |||
| package com.nivesh.production.bajajfd.model | |||
| data class getClientDetailsResponse( | |||
| // val DataObject: Any ?, | |||
| // val Message: Any, | |||
| val ObjectResponse: ObjectResponse? = null, | |||
| val response: ResponseXXXXXXX? = null | |||
| ) | |||
| @ -0,0 +1,110 @@ | |||
| package com.nivesh.production.bajajfd.repositories | |||
| import com.nivesh.production.bajajfd.interfaces.ApiInterface | |||
| import com.nivesh.production.bajajfd.model.* | |||
| class MainRepository constructor(private val apiInterface: ApiInterface) { | |||
| // MainActivity | |||
| suspend fun getStepsCountResponse(requestBody: FDStepsCountRequest, token: String) = | |||
| apiInterface.getFDStepsCount(requestBody, token) | |||
| suspend fun getClientDetailsResponse(getClientDetails: getClientDetailsRequest, token: String) = | |||
| apiInterface.getClientDetails(getClientDetails, token) | |||
| // Step One | |||
| suspend fun getRatesResponse(getRatesRequest: GetRatesRequest, token: String) = | |||
| apiInterface.getRates(getRatesRequest, token) | |||
| suspend fun getCodesResponse(requestBody: GetCodeRequest, token: String) = | |||
| apiInterface.getCodes(requestBody, token) | |||
| suspend fun createCalculateFDMaturityAmount( | |||
| requestBody: GetMaturityAmountRequest, | |||
| token: String | |||
| ) = | |||
| apiInterface.getCalculateFDMaturityAmount(requestBody, token) | |||
| // Step Two | |||
| suspend fun createFDKYCResponse(createFDRequest: CreateFDRequest, token: String) = | |||
| apiInterface.createFDApp(createFDRequest, token) | |||
| suspend fun panCheck(panCheck: PanCheckRequest, token: String) = | |||
| apiInterface.panCheckApi(panCheck, token) | |||
| suspend fun titleCheck(getCodeRequest: GetCodeRequest, token: String) = | |||
| apiInterface.titleApi(getCodeRequest, token) | |||
| suspend fun genderCheck(getCodeRequest: GetCodeRequest, token: String) = | |||
| apiInterface.genderApi(getCodeRequest, token) | |||
| suspend fun annualIncomeCheck(getCodeRequest: GetCodeRequest, token: String) = | |||
| apiInterface.annualIncomeApi(getCodeRequest, token) | |||
| suspend fun relationShipCheck(getCodeRequest: GetCodeRequest, token: String) = | |||
| apiInterface.relationShipApi(getCodeRequest, token) | |||
| suspend fun maritalStatusCheck(getCodeRequest: GetCodeRequest, token: String) = | |||
| apiInterface.maritalStatusApi(getCodeRequest, token) | |||
| suspend fun occupationCheck(getCodeRequest: GetCodeRequest, token: String) = | |||
| apiInterface.occupationApi(getCodeRequest, token) | |||
| suspend fun stateCheck(token: String) = | |||
| apiInterface.stateApi(token) | |||
| suspend fun cityCheck(cityRequest: CityRequest, token: String) = | |||
| apiInterface.cityApi(cityRequest, token) | |||
| suspend fun bankListCheck(token: String, language: String) = | |||
| apiInterface.bankListApi(token, language) | |||
| suspend fun ifscCodeCheck(str: String) = | |||
| apiInterface.getIFSCApi(str) | |||
| suspend fun ifscCodeBankDetailsCheck(str: String, token: String) = | |||
| apiInterface.getIFSCBankDetailsApi(str, token) | |||
| suspend fun payModeCheck(getCodeRequest: GetCodeRequest, token: String) = | |||
| apiInterface.payModeApi(getCodeRequest, token) | |||
| suspend fun bankValidationApiRequest(bankValidationApiRequest: BankValidationApiRequest, token: String) = | |||
| apiInterface.bankValidationApi(bankValidationApiRequest, token) | |||
| // Step Three | |||
| suspend fun documentsUploadResponse(getRatesRequest: DocumentUpload, token: String) = | |||
| apiInterface.documentsUpload(getRatesRequest, token) | |||
| suspend fun saveFDOtherDataResponse(getRatesRequest: SaveFDOtherDataRequest, token: String) = | |||
| apiInterface.saveFDOtherData(getRatesRequest, token) | |||
| suspend fun getFDDetailsResponse(getRatesRequest: GetFDDetailsRequest, token: String) = | |||
| apiInterface.getFDDetails(getRatesRequest, token) | |||
| suspend fun updateFDPaymentStatusResponse(getRatesRequest: GetRatesRequest, token: String) = | |||
| apiInterface.getRates(getRatesRequest, token) | |||
| // Step 4 | |||
| suspend fun customerListCheck(getCodeRequest: GetCodeRequest, token: String) = | |||
| apiInterface.customerListApi(getCodeRequest, token) | |||
| suspend fun checkFDKYCRequest(checkFDKYCRequest: CheckFDKYCRequest, token: String) = | |||
| apiInterface.checkFDKYC(checkFDKYCRequest, token) | |||
| // Step 5 | |||
| suspend fun finaliseFDResponse(getRatesRequest: FinalizeFDRequest, token: String) = | |||
| apiInterface.finaliseFD(getRatesRequest, token) | |||
| suspend fun finaliseKYCResponse(getRatesRequest: FinalizeKYCRequest, token: String) = | |||
| apiInterface.finaliseKYC(getRatesRequest, token) | |||
| suspend fun paymentReQueryResponse(getRatesRequest: PaymentReQueryRequest, token: String) = | |||
| apiInterface.paymentReQuery(getRatesRequest, token) | |||
| } | |||
| @ -0,0 +1,489 @@ | |||
| package com.nivesh.production.bajajfd.ui.activity | |||
| import android.annotation.SuppressLint | |||
| import android.app.Dialog | |||
| import android.graphics.Bitmap | |||
| import android.graphics.drawable.Drawable | |||
| import android.os.Bundle | |||
| import android.util.Log | |||
| import android.view.View | |||
| 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.viewpager.widget.ViewPager | |||
| import com.google.gson.Gson | |||
| 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.api.ApiClient | |||
| import com.nivesh.production.bajajfd.databinding.ActivityBajajFdBinding | |||
| import com.nivesh.production.bajajfd.model.* | |||
| import com.nivesh.production.bajajfd.repositories.MainRepository | |||
| import com.nivesh.production.bajajfd.ui.fragment.* | |||
| import com.nivesh.production.bajajfd.ui.providerfactory.* | |||
| import com.nivesh.production.bajajfd.util.Common | |||
| import com.nivesh.production.bajajfd.util.Common.Companion.defaultShape | |||
| import com.nivesh.production.bajajfd.util.Common.Companion.getDate | |||
| import com.nivesh.production.bajajfd.util.Common.Companion.selectedShape | |||
| import com.nivesh.production.bajajfd.util.Common.Companion.showDialogValidation | |||
| import com.nivesh.production.bajajfd.util.Constants.Companion.token | |||
| import com.nivesh.production.bajajfd.util.ProgressUtil | |||
| import com.nivesh.production.bajajfd.util.ProgressUtil.hideLoading | |||
| import com.nivesh.production.bajajfd.util.ProgressUtil.showLoading | |||
| import com.nivesh.production.bajajfd.util.Resource | |||
| import com.nivesh.production.bajajfd.viewModel.* | |||
| class BajajFdMainActivity : BaseActivity() { | |||
| lateinit var binding: ActivityBajajFdBinding | |||
| lateinit var viewModel: BajajFDViewModel | |||
| 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() | |||
| var uniqueId: String = "" | |||
| var stepCount: Int = 0 | |||
| private lateinit var sectionsPagerAdapter: SectionsPagerAdapter | |||
| private lateinit var fragments: Array<Fragment> | |||
| var dialogWebView: Dialog? = null | |||
| var loginRole: Int = 0 | |||
| override fun onCreate(savedInstanceState: Bundle?) { | |||
| super.onCreate(savedInstanceState) | |||
| init() | |||
| } | |||
| private fun init() { | |||
| //start Repository | |||
| viewModel = ViewModelProvider( | |||
| this@BajajFdMainActivity, | |||
| FDModelProviderFactory(MainRepository(ApiClient.getApiClient)) | |||
| )[BajajFDViewModel::class.java] | |||
| binding = ActivityBajajFdBinding.inflate(layoutInflater) | |||
| binding.apply { | |||
| setContentView(this.root) | |||
| } | |||
| loginRole = 5 | |||
| if (Common.isNetworkAvailable(this)) { | |||
| getStepsCountApi() | |||
| } | |||
| binding.imgBack.setOnClickListener { | |||
| finish() | |||
| } | |||
| } | |||
| private fun getStepsCountApi() { | |||
| if (Common.isNetworkAvailable(this)) { | |||
| val fdStepsCount = FDStepsCountRequest() | |||
| fdStepsCount.FDProvider = getString(R.string.bajaj) | |||
| fdStepsCount.NiveshClientCode = "8872" // 60476 | |||
| viewModel.getStepsCount(fdStepsCount, token, this) | |||
| viewModel.getStepsCountMutableData.observe(this) { response -> | |||
| when (response) { | |||
| is Resource.Success -> { | |||
| Log.e("response", "-->${response.data.toString()}") | |||
| val stepsCountResponse: StepsCountResponse = | |||
| Gson().fromJson( | |||
| response.data?.toString(), | |||
| StepsCountResponse::class.java | |||
| ) | |||
| stepsCountResponse.Response.StatusCode.let { code -> | |||
| when (code) { | |||
| 200 -> { | |||
| stepCount = stepsCountResponse.Response.StepsCount | |||
| if (stepCount == 3) { | |||
| binding.llStep4.visibility = View.GONE | |||
| } | |||
| getClientDetailsApi(stepsCountResponse.Response.StepsCount) | |||
| } | |||
| 650 -> "" | |||
| else -> { | |||
| showDialogValidation( | |||
| this@BajajFdMainActivity, | |||
| stepsCountResponse.Response.Errors[0].ErrorMessage | |||
| ) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| is Resource.Error -> { | |||
| response.message?.let { message -> | |||
| showDialogValidation(this@BajajFdMainActivity, message) | |||
| } | |||
| } | |||
| is Resource.Loading -> { | |||
| } | |||
| is Resource.DataError -> { | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| private fun getClientDetailsApi(stepsCount: Int) { | |||
| if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { | |||
| val getClientDetailsRequest = getClientDetailsRequest() | |||
| getClientDetailsRequest.client_code = "8872" | |||
| getClientDetailsRequest.AppOrWeb = getString(R.string.app) | |||
| getClientDetailsRequest.sub_broker_code = "1038" | |||
| val userRequest = UserRequest() | |||
| userRequest.UID = 0 | |||
| userRequest.IPAddress = "" | |||
| userRequest.Source = getString(R.string.source) | |||
| userRequest.AppOrWeb = getString(R.string.app) | |||
| userRequest.LoggedInRoleId = loginRole | |||
| val deviceInfo = DeviceInfo() | |||
| deviceInfo.device_id = "" | |||
| deviceInfo.device_id_for_UMSId = "" | |||
| deviceInfo.device_type = getString(R.string.app) | |||
| deviceInfo.device_model = "" | |||
| deviceInfo.device_token = "" | |||
| deviceInfo.device_name = "" | |||
| deviceInfo.app_version = "" | |||
| deviceInfo.device_os_version = "" | |||
| userRequest.deviceInfo = deviceInfo | |||
| getClientDetailsRequest.UserRequest = userRequest | |||
| Log.e("getClientDetail ", " Request -->" + Gson().toJson(getClientDetailsRequest)) | |||
| showLoading(this@BajajFdMainActivity) | |||
| viewModel.getClientDetails(getClientDetailsRequest, token, this) | |||
| viewModel.getClientDetailsMutableData.observe(this) { response -> | |||
| when (response) { | |||
| is Resource.Success -> { | |||
| Log.e("getClientDetail ", " response -->${response.data.toString()}") | |||
| getClientDetailsResponse = | |||
| Gson().fromJson( | |||
| response.data?.toString(), | |||
| getClientDetailsResponse::class.java | |||
| ) | |||
| getClientDetailsResponse.response?.status_code.let { code -> | |||
| when (code) { | |||
| 200 -> { | |||
| setViewPager(stepsCount) | |||
| checkFDCKYCApi() | |||
| } | |||
| // 650 -> refreshToken() | |||
| else -> { | |||
| showDialogValidation(this@BajajFdMainActivity, response.message) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| is Resource.Error -> { | |||
| response.message?.let { message -> | |||
| showDialogValidation(this@BajajFdMainActivity, message) | |||
| } | |||
| } | |||
| is Resource.Loading -> { | |||
| hideLoading() | |||
| } | |||
| is Resource.DataError -> { | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| private fun setViewPager(stepsCount: Int) { | |||
| // steps setting | |||
| setBackground(selectedShape(), defaultShape(), defaultShape(), defaultShape(), stepsCount) | |||
| if (stepCount == 3) { | |||
| fragments = arrayOf( | |||
| stepOneBajajFDFragment, | |||
| stepTwoBajajFDFragment, | |||
| stepFourBajajFDFragment, | |||
| stepFiveBajajFDFragment | |||
| ) | |||
| } else if (stepCount == 4) { | |||
| fragments = arrayOf( | |||
| stepOneBajajFDFragment, | |||
| stepTwoBajajFDFragment, | |||
| stepThreeBajajFDFragment, | |||
| stepFourBajajFDFragment, | |||
| stepFiveBajajFDFragment | |||
| ) | |||
| } | |||
| // set viewPager | |||
| sectionsPagerAdapter = SectionsPagerAdapter(supportFragmentManager, fragments) | |||
| val viewPager: DisableAdapter = binding.viewPager | |||
| viewPager.adapter = sectionsPagerAdapter | |||
| viewPager.setPagingEnabled(false) | |||
| if (sectionsPagerAdapter.count > 1) { | |||
| viewPager.offscreenPageLimit = stepCount | |||
| } else { | |||
| viewPager.offscreenPageLimit = 1 | |||
| } | |||
| viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { | |||
| override fun onPageScrolled( | |||
| position: Int, | |||
| positionOffset: Float, | |||
| positionOffsetPixels: Int | |||
| ) { | |||
| } | |||
| override fun onPageSelected(position: Int) { | |||
| when (position) { | |||
| 0 -> { | |||
| setBackground( | |||
| defaultShape(), | |||
| defaultShape(), | |||
| defaultShape(), | |||
| defaultShape(), | |||
| stepsCount | |||
| ) | |||
| } | |||
| 1 -> { | |||
| setBackground( | |||
| selectedShape(), | |||
| defaultShape(), | |||
| defaultShape(), | |||
| defaultShape(), | |||
| stepsCount | |||
| ) | |||
| } | |||
| 2 -> { | |||
| setBackground( | |||
| selectedShape(), | |||
| selectedShape(), | |||
| defaultShape(), | |||
| defaultShape(), | |||
| stepsCount | |||
| ) | |||
| } | |||
| 3 -> { | |||
| setBackground( | |||
| selectedShape(), | |||
| selectedShape(), | |||
| selectedShape(), | |||
| defaultShape(), | |||
| stepsCount | |||
| ) | |||
| } | |||
| 4 -> { | |||
| setBackground( | |||
| selectedShape(), | |||
| selectedShape(), | |||
| selectedShape(), | |||
| selectedShape(), | |||
| stepsCount | |||
| ) | |||
| } | |||
| } | |||
| } | |||
| override fun onPageScrollStateChanged(state: Int) { | |||
| } | |||
| }) | |||
| } | |||
| private fun checkFDCKYCApi() { | |||
| if (Common.isNetworkAvailable(this@BajajFdMainActivity)) { | |||
| if (getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CM_MOBILE?.isNotEmpty()!! && getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB?.isNotEmpty()!! && getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PAN?.isNotEmpty()!! && getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE?.isNotEmpty()!!) { | |||
| val checkFDKYCRequest = CheckFDKYCRequest() | |||
| checkFDKYCRequest.Mobile = | |||
| getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CM_MOBILE | |||
| checkFDKYCRequest.DOB = | |||
| getDate(getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_DOB!!) | |||
| checkFDKYCRequest.PAN = | |||
| getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_PAN | |||
| checkFDKYCRequest.NiveshClientCode = | |||
| getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE.toString() | |||
| viewModel.checkFDKYC(checkFDKYCRequest, token, this) | |||
| viewModel.getFDKYCMutableData.observe(this) { response -> | |||
| when (response) { | |||
| is Resource.Success -> { | |||
| Log.e("response", "-->${response.data.toString()}") | |||
| val getCodeResponse: GetCodeResponse = | |||
| Gson().fromJson( | |||
| response.data?.toString(), | |||
| GetCodeResponse::class.java | |||
| ) | |||
| getCodeResponse.Response.StatusCode.let { code -> | |||
| when (code) { | |||
| 200 -> { | |||
| fdInvestmentDetails.CustomerType = "" | |||
| } | |||
| // 650 -> refreshToken() | |||
| else -> { | |||
| showDialogValidation( | |||
| this@BajajFdMainActivity, | |||
| getCodeResponse.Response.Errors[0].ErrorMessage | |||
| ) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| is Resource.Error -> { | |||
| response.message?.let { message -> | |||
| showDialogValidation(this@BajajFdMainActivity, message) | |||
| } | |||
| } | |||
| is Resource.Loading -> { | |||
| } | |||
| is Resource.DataError -> { | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| // set background for selected/ default step | |||
| private fun setBackground( | |||
| drawable: Drawable?, | |||
| drawable1: Drawable?, | |||
| drawable2: Drawable?, | |||
| drawable3: Drawable?, | |||
| stepsCount: Int | |||
| ) { | |||
| binding.stepOne.background = drawable | |||
| binding.stepTwo.background = drawable1 | |||
| binding.stepThree.background = drawable2 | |||
| if (stepsCount == 4) { | |||
| binding.stepFour.background = drawable3 | |||
| } | |||
| } | |||
| // step 1 response | |||
| fun stepOneApi() { | |||
| binding.viewPager.currentItem = 1 | |||
| } | |||
| // step 2 response | |||
| fun stepTwoApi() { | |||
| binding.viewPager.currentItem = 2 | |||
| if (stepCount == 3) { | |||
| stepFourBajajFDFragment.displayReceivedData() | |||
| } | |||
| } | |||
| // step 3 response | |||
| fun stepThreeApi() { | |||
| binding.viewPager.currentItem = 3 | |||
| stepFourBajajFDFragment.displayReceivedData() | |||
| } | |||
| // step 4 response | |||
| fun stepFourApi(payUrl: String, value: String) { | |||
| paymentDialog(payUrl, value) | |||
| } | |||
| @SuppressLint("SetJavaScriptEnabled") | |||
| fun paymentDialog(payUrl: String, value: String) { | |||
| Log.e("payUrl", "-->$payUrl") | |||
| Log.e("value", "-->$value") | |||
| 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() | |||
| } | |||
| 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.settings.javaScriptEnabled = true | |||
| wVPay.settings.domStorageEnabled = true | |||
| wVPay.loadData( | |||
| "<form name=\"frm\" action=\"$payUrl\" method=\"post\"> \n" + " <input type=\"hidden\" name=\"msg\" value=\"$value\"> \n" + " </form> \n" + | |||
| "<script type=\"text/javascript\"> \n" + "document.forms[\"frm\"].submit(); \n" + "</script>", | |||
| "text/html", | |||
| "UTF-8" | |||
| ) | |||
| wVPay.webViewClient = object : WebViewClient() { | |||
| override fun onPageStarted(view: WebView, url: String, favicon: Bitmap?) { | |||
| super.onPageStarted(view, url, favicon) | |||
| Log.e("onPageStarted", "-->$url") | |||
| if (url.isNotEmpty() && url.contains("https://uat.nivesh.com/bajajFD/OrderStatus")) { | |||
| if (dialogWebView != null && dialogWebView!!.isShowing) { | |||
| dialogWebView!!.dismiss() | |||
| paymentReQueryApi() | |||
| } | |||
| } | |||
| } | |||
| } | |||
| dialogWebView!!.show() | |||
| } | |||
| fun paymentReQueryApi() { | |||
| if (Common.isNetworkAvailable(this)) { | |||
| val paymentReQueryRequest = PaymentReQueryRequest() | |||
| paymentReQueryRequest.UniqueId = uniqueId | |||
| paymentReQueryRequest.NiveshClientCode = | |||
| getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE | |||
| ProgressUtil.showLoading(this@BajajFdMainActivity) | |||
| viewModel.getPaymentReQuery(paymentReQueryRequest, token, this) | |||
| viewModel.getPaymentReQueryMutableData.observe(this) { response -> | |||
| when (response) { | |||
| is Resource.Success -> { | |||
| Log.e("paymentReQueryApi ", "response -->$response") | |||
| val paymentReQueryResponse: PaymentReQueryResponse = | |||
| Gson().fromJson( | |||
| response.data?.toString(), | |||
| PaymentReQueryResponse::class.java | |||
| ) | |||
| paymentReQueryResponse.Response.StatusCode.let { code -> | |||
| when (code) { | |||
| 650 -> "" | |||
| else -> { | |||
| if (stepCount == 4) { | |||
| binding.viewPager.currentItem = 4 | |||
| } else { | |||
| binding.viewPager.currentItem = 3 | |||
| } | |||
| stepFiveBajajFDFragment.getData(paymentReQueryResponse) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| is Resource.Error -> { | |||
| response.message?.let { message -> | |||
| showDialogValidation(this@BajajFdMainActivity, message) | |||
| } | |||
| } | |||
| is Resource.Loading -> { | |||
| hideLoading() | |||
| } | |||
| is Resource.DataError -> { | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @ -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 | |||
| } | |||
| } | |||
| @ -0,0 +1,173 @@ | |||
| package com.nivesh.production.bajajfd.ui.fragment | |||
| import android.os.Bundle | |||
| import android.util.Log | |||
| import android.view.LayoutInflater | |||
| import android.view.View | |||
| import android.view.ViewGroup | |||
| import androidx.core.content.ContextCompat | |||
| import androidx.fragment.app.Fragment | |||
| import com.google.gson.Gson | |||
| import com.nivesh.production.bajajfd.R | |||
| import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFiveBinding | |||
| import com.nivesh.production.bajajfd.model.* | |||
| import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity | |||
| import com.nivesh.production.bajajfd.util.Common | |||
| import com.nivesh.production.bajajfd.util.Constants | |||
| import com.nivesh.production.bajajfd.util.Resource | |||
| class StepFiveBajajFDFragment : Fragment() { | |||
| private var _binding: FragmentBajajfdStepFiveBinding? = null | |||
| private val binding get() = _binding!! | |||
| override fun onCreateView( | |||
| inflater: LayoutInflater, container: ViewGroup?, | |||
| savedInstanceState: Bundle? | |||
| ): View { | |||
| _binding = FragmentBajajfdStepFiveBinding.inflate(inflater, container, false) | |||
| return binding.root | |||
| } | |||
| override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | |||
| super.onViewCreated(view, savedInstanceState) | |||
| binding.tvCongrats.text = "" | |||
| binding.tvSuccessMessage.text = "" | |||
| binding.btnViewOrder.setOnClickListener { | |||
| } | |||
| } | |||
| fun getData(paymentReQueryResponse: PaymentReQueryResponse) { | |||
| if (paymentReQueryResponse.Response.StatusCode == 200) { | |||
| if (paymentReQueryResponse.Response.Message.isNotEmpty()) { | |||
| val arrOfStr: List<String> = paymentReQueryResponse.Response.Message.split(" ", limit = 2) | |||
| binding.tvCongrats.text = arrOfStr[0] | |||
| binding.tvCongrats.setTextColor( | |||
| ContextCompat.getColor( | |||
| activity as BajajFdMainActivity, | |||
| R.color.green | |||
| ) | |||
| ) | |||
| binding.tvSuccessMessage.text = arrOfStr[1] | |||
| } | |||
| }else{ | |||
| if (paymentReQueryResponse.Response.Message.isNotEmpty()) { | |||
| val arrOfStr: List<String> = paymentReQueryResponse.Response.Message.split(" ", limit = 2) | |||
| binding.tvCongrats.text = arrOfStr[0] | |||
| binding.tvCongrats.setTextColor( | |||
| ContextCompat.getColor( | |||
| activity as BajajFdMainActivity, | |||
| R.color.red | |||
| ) | |||
| ) | |||
| binding.tvSuccessMessage.text = arrOfStr[1] | |||
| } | |||
| } | |||
| finalizeFDApi() | |||
| finalizeKYCApi() | |||
| } | |||
| private fun finalizeFDApi() { | |||
| val finalizeFDRequest = FinalizeFDRequest() | |||
| val finaliseFD = FinaliseFD() | |||
| finaliseFD.FDProvider = getString(R.string.bajaj) | |||
| finaliseFD.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE | |||
| finaliseFD.UniqueId = (activity as BajajFdMainActivity).uniqueId | |||
| finalizeFDRequest.FinaliseFD = finaliseFD | |||
| (activity as BajajFdMainActivity).viewModel.finaliseFD( | |||
| finalizeFDRequest, Constants.token, activity as BajajFdMainActivity | |||
| ) | |||
| (activity as BajajFdMainActivity).viewModel.getFinalizeFDMutableData.observe(viewLifecycleOwner){ response -> | |||
| when (response) { | |||
| is Resource.Success -> { | |||
| Log.e("finalizeKYC ", " response-->${response.data.toString()}") | |||
| val finalizeFDResponse: FinalizeFDResponse = | |||
| Gson().fromJson(response.data?.toString(), FinalizeFDResponse::class.java) | |||
| finalizeFDResponse.Response.StatusCode.let { code -> | |||
| when (code) { | |||
| 200 -> { | |||
| } | |||
| 650 -> "" | |||
| else -> { | |||
| Common.showDialogValidation( | |||
| activity as BajajFdMainActivity, | |||
| finalizeFDResponse.Response.Errors[0].ErrorMessage | |||
| ) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| is Resource.Error -> { | |||
| response.message?.let { message -> | |||
| Common.showDialogValidation(activity as BajajFdMainActivity, message) | |||
| } | |||
| } | |||
| is Resource.Loading -> { | |||
| } | |||
| is Resource.DataError -> { | |||
| } | |||
| } | |||
| } | |||
| } | |||
| private fun finalizeKYCApi() { | |||
| val finalizeKYCRequest = FinalizeKYCRequest() | |||
| finalizeKYCRequest.FDProvider = getString(R.string.bajaj) | |||
| finalizeKYCRequest.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE | |||
| finalizeKYCRequest.UniqueId = (activity as BajajFdMainActivity).uniqueId | |||
| (activity as BajajFdMainActivity).viewModel.finaliseKYC( | |||
| finalizeKYCRequest, Constants.token, activity as BajajFdMainActivity | |||
| ) | |||
| (activity as BajajFdMainActivity).viewModel.getFinalizeKYCMutableData.observe(viewLifecycleOwner){ response -> | |||
| when (response) { | |||
| is Resource.Success -> { | |||
| Log.e("finalizeKYC ", " response-->${response.data.toString()}") | |||
| val finalizeFDResponse: FinalizeFDResponse = | |||
| Gson().fromJson(response.data?.toString(), FinalizeFDResponse::class.java) | |||
| finalizeFDResponse.Response.StatusCode.let { code -> | |||
| when (code) { | |||
| 200 -> { | |||
| } | |||
| 650 -> "" | |||
| else -> { | |||
| Common.showDialogValidation( | |||
| activity as BajajFdMainActivity, | |||
| finalizeFDResponse.Response.Errors[0].ErrorMessage | |||
| ) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| is Resource.Error -> { | |||
| response.message?.let { message -> | |||
| Common.showDialogValidation(activity as BajajFdMainActivity, message) | |||
| } | |||
| } | |||
| is Resource.Loading -> { | |||
| } | |||
| is Resource.DataError -> { | |||
| } | |||
| } | |||
| } | |||
| } | |||
| override fun onDestroyView() { | |||
| super.onDestroyView() | |||
| _binding = null | |||
| } | |||
| } | |||
Powered by TurnKey Linux.