Browse Source

Merge branch 'HemantBranch' of https://git.nivesh.com:443/hemant.khadase/BajajFDLib into ManojBranch

# Conflicts:
#	app/src/main/res/values-hi-rIN/strings.xml
#	app/src/main/res/values/strings.xml
PankajBranch
Manoj 2 years ago
parent
commit
07aacb4007
51 changed files with 1778 additions and 461 deletions
  1. +2
    -1
      app/src/main/AndroidManifest.xml
  2. +92
    -0
      app/src/main/java/com/nivesh/production/bajajfd/adapter/BankListAdapter.kt
  3. +39
    -0
      app/src/main/java/com/nivesh/production/bajajfd/adapter/RecommendedBankListAdapter.kt
  4. +149
    -65
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt
  5. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt
  6. +6
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/Bank.kt
  7. +15
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/BankList.kt
  8. +0
    -2
      app/src/main/java/com/nivesh/production/bajajfd/model/CityListResponse.kt
  9. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/model/CityRequest.kt
  10. +11
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ClientBanklist.kt
  11. +22
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ClientDetails.kt
  12. +40
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ClientMasterMFD.kt
  13. +5
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/CreateFDApplicationResponse.kt
  14. +7
    -1
      app/src/main/java/com/nivesh/production/bajajfd/model/DataObject.kt
  15. +5
    -1
      app/src/main/java/com/nivesh/production/bajajfd/model/DataObjectX.kt
  16. +12
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/DeviceInfo.kt
  17. +7
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/FDCreationDetailsResponse.kt
  18. +3
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/GetCodes.kt
  19. +5
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/GetFDBankListResponse.kt
  20. +6
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/GetIFSCCodeListResponse.kt
  21. +10
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/GetIFSCCodeResponse.kt
  22. +12
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/Nominee.kt
  23. +9
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ObjectResponse.kt
  24. +7
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXX.kt
  25. +9
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXX.kt
  26. +7
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXX.kt
  27. +7
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXX.kt
  28. +9
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXX.kt
  29. +10
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/UserRequest.kt
  30. +8
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/getClientDetailsRequest.kt
  31. +8
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/getClientDetailsResponse.kt
  32. +25
    -5
      app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt
  33. +130
    -23
      app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
  34. +90
    -1
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFourBajajFDFragment.kt
  35. +4
    -0
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt
  36. +530
    -95
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt
  37. +22
    -2
      app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt
  38. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/util/Constants.kt
  39. +9
    -11
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt
  40. +19
    -6
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFourBajajFDViewModel.kt
  41. +22
    -0
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt
  42. +5
    -0
      app/src/main/res/drawable/ic_add_icon.xml
  43. +5
    -0
      app/src/main/res/drawable/ic_select_green.xml
  44. +5
    -0
      app/src/main/res/drawable/ic_select_outline.xml
  45. +160
    -158
      app/src/main/res/layout/fragment_bajajfd_step_two.xml
  46. +96
    -0
      app/src/main/res/layout/item_bank_list_preview.xml
  47. +54
    -0
      app/src/main/res/layout/layout_bank_list.xml
  48. +18
    -0
      app/src/main/res/layout/row_bank_list.xml
  49. +34
    -25
      app/src/main/res/values-hi-rIN/strings.xml
  50. +4
    -0
      app/src/main/res/values-night/strings.xml
  51. +21
    -62
      app/src/main/res/values/strings.xml

+ 2
- 1
app/src/main/AndroidManifest.xml View File

@ -33,7 +33,8 @@
<activity <activity
android:name=".ui.activity.BajajFdMainActivity" android:name=".ui.activity.BajajFdMainActivity"
android:exported="true" android:exported="true"
android:windowSoftInputMode="adjustPan">
android:windowSoftInputMode="adjustPan"
>
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />


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

@ -0,0 +1,92 @@
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.BankList
import com.nivesh.production.bajajfd.model.ClientBanklist
class BankListAdapter(
private val bankList: List<ClientBanklist>?,
private val selectedAccount: String? = null
) : 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 {
return BankListViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_bank_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.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)
}
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: ((ClientBanklist) -> Unit)? = null
fun setOnItemClickListener(listener: (ClientBanklist) -> Unit) {
onItemClickListener = listener
}
fun getSelected(): ClientBanklist? {
return if (checkedPosition != -1) {
bankList?.get(checkedPosition)
} else null
}
}

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

@ -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
}
}

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

@ -8,72 +8,156 @@ import retrofit2.http.*
interface ApiInterface { interface ApiInterface {
@POST("GetRates")
suspend fun getRates(@Body getRatesRequest: GetRatesRequest, @Header("token") token: String): Response<JsonObject>
@POST("CheckFDCKYC")
suspend fun checkFDKYC(@Body requestBody: RequestBody, @Header("token") token: String): Response<JsonObject>
@POST("CreateFDApplication")
suspend fun createFDApp(@Body requestBody: RequestBody, @Header("token") token: String): Response<JsonObject>
@POST("DocumentsUpload")
suspend fun documentsUpload(@Body requestBody: RequestBody, @Header("token") token: String): Response<JsonObject>
@POST("SaveFDOtherData")
suspend fun saveFDOtherData(@Body requestBody: RequestBody, @Header("token") token: String): Response<JsonObject>
@POST("GetFDDetails")
suspend fun getFDDetails(@Body requestBody: RequestBody, @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: RequestBody, @Header("token") token: String): Response<JsonObject>
@POST("FinaliseKYC")
suspend fun finaliseKYC(@Body requestBody: RequestBody, @Header("token") token: String): Response<JsonObject>
@POST("PaymentRequery")
suspend fun paymentReQuery(@Body requestBody: RequestBody, @Header("token") token: String): Response<JsonObject>
@POST("WebApi_Bajaj/GetRates")
suspend fun getRates(
@Body getRatesRequest: GetRatesRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/CheckFDCKYC")
suspend fun checkFDKYC(
@Body requestBody: RequestBody,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/CreateFDApplication")
suspend fun createFDApp(
@Body requestBody: RequestBody,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/DocumentsUpload")
suspend fun documentsUpload(
@Body requestBody: RequestBody,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/SaveFDOtherData")
suspend fun saveFDOtherData(
@Body requestBody: RequestBody,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/GetFDDetails")
suspend fun getFDDetails(
@Body requestBody: RequestBody,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/UpdateFDPaymentStatus")
suspend fun updateFDPaymentStatus(
@Body requestBody: RequestBody,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/FinaliseFD")
suspend fun finaliseFD(
@Body requestBody: RequestBody,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/FinaliseKYC")
suspend fun finaliseKYC(
@Body requestBody: RequestBody,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/PaymentRequery")
suspend fun paymentReQuery(
@Body requestBody: RequestBody,
@Header("token") token: String
): Response<JsonObject>
// @FormUrlEncoded // @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("api/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("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("api/GetCity")
suspend fun cityApi(@Body cityRequest: CityRequest, @Header("token") token: String): Response<JsonObject>
@POST("WebApi_Bajaj/GetCodes")
suspend fun getCodes(
@Body requestBody: GetCodeRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/CalculateFDMaturityAmount")
suspend fun getCalculateFDMaturityAmount(
@Body requestBody: GetMaturityAmountRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/api/PanCheck_S")
suspend fun panCheckApi(
@Body panCheck: PanCheckRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/getFDStepsCount")
suspend fun getFDStepsCount(
@Body fdStepsCountRequest: FDStepsCountRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi/api/GetClientDetailV2_S")
suspend fun getClientDetails(
@Body getClientDetailsRequest: getClientDetailsRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/GetCodes")
suspend fun titleApi(
@Body getCodeRequest: GetCodeRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/GetCodes")
suspend fun genderApi(
@Body getCodeRequest: GetCodeRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/GetCodes")
suspend fun annualIncomeApi(
@Body getCodeRequest: GetCodeRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/GetCodes")
suspend fun relationShipApi(
@Body getCodeRequest: GetCodeRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/GetCodes")
suspend fun maritalStatusApi(
@Body getCodeRequest: GetCodeRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/GetCodes")
suspend fun occupationApi(
@Body getCodeRequest: GetCodeRequest,
@Header("token") token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/api/GetStateMaster")
suspend fun stateApi(@Header("token") token: String): Response<JsonObject>
@POST("WebApi_Bajaj/api/GetCity")
suspend fun cityApi(
@Body cityRequest: CityRequest,
@Header("token") token: String
): Response<JsonObject>
@GET("WebAPI_Bajaj/GetFDBankList?FDProvider=Bajaj")
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/GetBankDetailsFromIFSC?")
suspend fun getIFSCDetailsApi(@Query("ifsc") ifsc : String,@Header("token") token: String): Response<JsonObject>
@POST("WebApi_Bajaj/GetCodes")
suspend fun payModeApi(
@Body getCodeRequest: GetCodeRequest,
@Header("token") token: String
): Response<JsonObject>
} }

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

@ -2,7 +2,7 @@ package com.nivesh.production.bajajfd.interfaces
interface BajajFDInterface { interface BajajFDInterface {
fun stepOneApi(data: String?) fun stepOneApi(data: String?)
fun stepTwoApi(data: String?)
fun stepTwoApi(data: CreateFDRequest)
fun stepThreeApi(data: String?) fun stepThreeApi(data: String?)
fun stepFourApi(data: String?) fun stepFourApi(data: String?)
} }

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

@ -0,0 +1,6 @@
package com.nivesh.production.bajajfd.model
data class Bank(
val BankName: String,
val IFSC4Mapping: String
)

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

@ -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
- 2
app/src/main/java/com/nivesh/production/bajajfd/model/CityListResponse.kt View File

@ -2,7 +2,5 @@ package com.nivesh.production.bajajfd.model
data class CityListResponse( data class CityListResponse(
val DataObject: List<DataObjectX>, val DataObject: List<DataObjectX>,
val Message: Any,
val ObjectResponse: Any,
val response: ResponseXXXXXX val response: ResponseXXXXXX
) )

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

@ -8,7 +8,7 @@ data class CityRequest(
var RMCode: String?="", var RMCode: String?="",
var RoleID: Int = 0, var RoleID: Int = 0,
var Source: String? = "", var Source: String? = "",
var StateCode: Int = 0,
var StateCode: Int? = 0,
var Subbroker_Code: String? = "", var Subbroker_Code: String? = "",
var Type: String?= "", var Type: String?= "",
var UID: Int = 0 var UID: Int = 0

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

@ -0,0 +1,11 @@
package com.nivesh.production.bajajfd.model
data class ClientBanklist(
val AccountNumber: String?,
val AccountType: String?,
val BankName: String?,
val BranchName: String?,
val DefaultBankFlag: String?,
val IFSCCode: String?,
val IsValBank: Int? = 0
)

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

@ -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
)

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

@ -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
)

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

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

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

@ -1,5 +1,7 @@
package com.nivesh.production.bajajfd.model package com.nivesh.production.bajajfd.model
import java.io.Serializable
data class DataObject( data class DataObject(
val BSE_State_Code: String, val BSE_State_Code: String,
val CAMS_statecode: String, val CAMS_statecode: String,
@ -8,4 +10,8 @@ data class DataObject(
val State_Id: Int, val State_Id: Int,
val State_Name: String, val State_Name: String,
val signzyCode: String val signzyCode: String
)
): Serializable {
override fun toString(): String {
return State_Name
}
}

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

@ -3,4 +3,8 @@ package com.nivesh.production.bajajfd.model
data class DataObjectX( data class DataObjectX(
val city_id: Int, val city_id: Int,
val city_name: String val city_name: String
)
) {
override fun toString(): String {
return city_name
}
}

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

@ -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? = ""
)

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

@ -0,0 +1,7 @@
package com.nivesh.production.bajajfd.model
data class FDCreationDetailsResponse(
val DocumentUploadFlag: Int,
val UniqueId: String,
val kycFlag: Int
)

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

@ -7,4 +7,7 @@ data class GetCodes(
override fun toString(): String { override fun toString(): String {
return Label return Label
} }
} }

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

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

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

@ -0,0 +1,6 @@
package com.nivesh.production.bajajfd.model
data class GetIFSCCodeListResponse(
val IFSCCodes: MutableList<String>,
val Response: ResponseXXXXXXXXXX
)

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

@ -0,0 +1,10 @@
package com.nivesh.production.bajajfd.model
data class GetIFSCCodeResponse(
val ADDRESS: String,
val BANK: String,
val BRANCH: String,
val IFSC: String,
val MICR: String,
val Response: ResponseXXXXXXXXX
)

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

@ -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
)

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

@ -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>
)

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

@ -0,0 +1,7 @@
package com.nivesh.production.bajajfd.model
data class ResponseXXXXXXX(
val message: String,
val status: String,
val status_code: Int
)

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

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

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

@ -0,0 +1,7 @@
package com.nivesh.production.bajajfd.model
data class ResponseXXXXXXXXX(
val message: Any,
val status: String,
val status_code: Int
)

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

@ -0,0 +1,7 @@
package com.nivesh.production.bajajfd.model
data class ResponseXXXXXXXXXX(
val message: String,
val status: String,
val status_code: Int
)

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

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

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

@ -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
)

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

@ -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? = ""
)

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

@ -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
)

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

@ -7,12 +7,19 @@ class MainRepository constructor(private val apiInterface: ApiInterface) {
suspend fun getRatesResponse(getRatesRequest: GetRatesRequest, token: String) = suspend fun getRatesResponse(getRatesRequest: GetRatesRequest, token: String) =
apiInterface.getRates(getRatesRequest, token) apiInterface.getRates(getRatesRequest, token)
suspend fun getCodesResponse(requestBody: GetCodeRequest , token: String) =
suspend fun getCodesResponse(requestBody: GetCodeRequest, token: String) =
apiInterface.getCodes(requestBody, token) apiInterface.getCodes(requestBody, token)
suspend fun getStepsCountResponse(requestBody: FDStepsCountRequest , token: String) =
suspend fun getStepsCountResponse(requestBody: FDStepsCountRequest, token: String) =
apiInterface.getFDStepsCount(requestBody, token) apiInterface.getFDStepsCount(requestBody, token)
suspend fun createCalculateFDMaturityAmount(requestBody: GetMaturityAmountRequest, token: String) =
suspend fun getClientDetailsResponse(getClientDetails: getClientDetailsRequest, token: String) =
apiInterface.getClientDetails(getClientDetails, token)
suspend fun createCalculateFDMaturityAmount(
requestBody: GetMaturityAmountRequest,
token: String
) =
apiInterface.getCalculateFDMaturityAmount(requestBody, token) apiInterface.getCalculateFDMaturityAmount(requestBody, token)
@ -61,8 +68,21 @@ class MainRepository constructor(private val apiInterface: ApiInterface) {
suspend fun occupationCheck(getCodeRequest: GetCodeRequest, token: String) = suspend fun occupationCheck(getCodeRequest: GetCodeRequest, token: String) =
apiInterface.occupationApi(getCodeRequest, token) apiInterface.occupationApi(getCodeRequest, token)
suspend fun stateCheck( token: String) =
apiInterface.stateApi( token)
suspend fun stateCheck(token: String) =
apiInterface.stateApi(token)
suspend fun cityCheck(cityRequest: CityRequest, token: String) = suspend fun cityCheck(cityRequest: CityRequest, token: String) =
apiInterface.cityApi(cityRequest, token) apiInterface.cityApi(cityRequest, token)
suspend fun bankListCheck(token: String) =
apiInterface.bankListApi(token)
suspend fun ifscCodeCheck(str: String) =
apiInterface.getIFSCApi(str)
suspend fun ifscCodeDetailsCheck(str: String, token: String) =
apiInterface.getIFSCDetailsApi(str, token)
suspend fun payModeCheck(getCodeRequest: GetCodeRequest, token: String) =
apiInterface.payModeApi(getCodeRequest, token)
} }

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

@ -26,6 +26,7 @@ import com.nivesh.production.bajajfd.viewModel.*
class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface { class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
lateinit var binding: ActivityBajajFdBinding lateinit var binding: ActivityBajajFdBinding
private lateinit var viewModel: BajajFDViewModel private lateinit var viewModel: BajajFDViewModel
private lateinit var viewModel1: BajajFDViewModel
lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel lateinit var stepOneBajajFDViewModel: StepOneBajajFDViewModel
lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel
@ -33,25 +34,25 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
lateinit var stepFourBajajFDViewModel: StepFourBajajFDViewModel lateinit var stepFourBajajFDViewModel: StepFourBajajFDViewModel
lateinit var stepFiveBajajFDViewModel: StepFiveBajajFDViewModel lateinit var stepFiveBajajFDViewModel: StepFiveBajajFDViewModel
lateinit var createFDRequest: CreateFDRequest
lateinit var createFDApplicantRequest: CreateFDApplicationRequest
lateinit var applicantDetails: ApplicantDetails
lateinit var fdInvestmentDetails: FDInvestmentDetails
lateinit var applicantRelationDetails: ApplicantRelationDetails
lateinit var fdBankDetails: FdBankDetails
lateinit var nomineeDetails: NomineeDetails
lateinit var nomineeGuardianDetails: NomineeGuardianDetails
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
var stepCount : Int = 0
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
init() init()
} }
private fun init() {
binding = ActivityBajajFdBinding.inflate(layoutInflater)
setContentView(binding.root)
init {
getClientDetailsResponse = getClientDetailsResponse()
createFDRequest = CreateFDRequest() createFDRequest = CreateFDRequest()
createFDApplicantRequest = CreateFDApplicationRequest() createFDApplicantRequest = CreateFDApplicationRequest()
@ -61,14 +62,49 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
fdBankDetails = FdBankDetails() fdBankDetails = FdBankDetails()
nomineeDetails = NomineeDetails() nomineeDetails = NomineeDetails()
nomineeGuardianDetails = NomineeGuardianDetails() nomineeGuardianDetails = NomineeGuardianDetails()
}
private fun init() {
binding = ActivityBajajFdBinding.inflate(layoutInflater)
setContentView(binding.root)
// createFDRequest = CreateFDRequest()
// createFDApplicantRequest = CreateFDApplicationRequest()
//
// fdInvestmentDetails = FDInvestmentDetails()
// applicantDetails = ApplicantDetails()
// applicantRelationDetails = ApplicantRelationDetails()
// fdBankDetails = FdBankDetails()
// nomineeDetails = NomineeDetails()
// nomineeGuardianDetails = NomineeGuardianDetails()
//start Repository //start Repository
viewModel = ViewModelProvider(this, FDModelProviderFactory(MainRepository(ApiClient.getApiClient)))[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]
viewModel = ViewModelProvider(
this,
FDModelProviderFactory(MainRepository(ApiClient.getApiClient))
)[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()
@ -79,7 +115,7 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
} }
} }
private fun getStepsCountApi(){
private fun getStepsCountApi() {
val fdStepsCount = FDStepsCountRequest() val fdStepsCount = FDStepsCountRequest()
fdStepsCount.FDProvider = getString(R.string.bajaj) fdStepsCount.FDProvider = getString(R.string.bajaj)
fdStepsCount.NiveshClientCode = "8872" fdStepsCount.NiveshClientCode = "8872"
@ -93,7 +129,9 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
stepsCountResponse.Response.StatusCode.let { code -> stepsCountResponse.Response.StatusCode.let { code ->
when (code) { when (code) {
200 -> { 200 -> {
setViewPager(stepsCountResponse.Response.StepsCount)
stepCount = stepsCountResponse.Response.StepsCount
getClientDetailsApi(stepsCountResponse.Response.StepsCount)
// setViewPager(stepsCountResponse.Response.StepsCount)
} }
// 650 -> refreshToken() // 650 -> refreshToken()
else -> {} else -> {}
@ -113,6 +151,66 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
} }
} }
private fun getClientDetailsApi(stepsCount: Int) {
if (Common.isNetworkAvailable(this@BajajFdMainActivity)) {
val getClientDetailsRequest = getClientDetailsRequest()
getClientDetailsRequest.client_code = "8872"
getClientDetailsRequest.AppOrWeb = "App"
getClientDetailsRequest.sub_broker_code = "1038"
val userRequest = UserRequest()
userRequest.UID = 19060
userRequest.IPAddress = ""
userRequest.Source = "Nivesh"
userRequest.AppOrWeb = "App"
userRequest.LoggedInRoleId = 5
val deviceInfo = DeviceInfo()
deviceInfo.device_id = ""
deviceInfo.device_id_for_UMSId = ""
deviceInfo.device_type = "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("getClientDetailRequest", "-->" + Gson().toJson(getClientDetailsRequest))
viewModel.getClientDetails(getClientDetailsRequest, token)
viewModel.getClientDetailsMutableData.observe(this) { response ->
when (response) {
is Resource.Success -> {
Log.e("response", "-->$response")
getClientDetailsResponse =
Gson().fromJson(
response.data?.toString(),
getClientDetailsResponse::class.java
)
getClientDetailsResponse.response?.status_code.let { code ->
when (code) {
200 -> {
setViewPager(stepsCount)
}
// 650 -> refreshToken()
else -> {}
}
}
}
is Resource.Error -> {
response.message?.let { message ->
Log.e(" ", "An error occurred:$message")
}
}
is Resource.Loading -> {
}
}
}
}
}
private fun setViewPager(stepsCount: Int) { private fun setViewPager(stepsCount: Int) {
// steps setting // steps setting
@ -213,14 +311,23 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
} }
// step 2 response // step 2 response
override fun stepTwoApi(data: String?) {
override fun stepTwoApi(data: CreateFDRequest) {
Log.e("stepTwoApi", " response ---> $data") Log.e("stepTwoApi", " response ---> $data")
binding.viewPager.currentItem = 2
if (stepCount == 4) {
binding.viewPager.currentItem = 2
}else{
// call create fd api
}
} }
// step 3 response // step 3 response
override fun stepThreeApi(data: String?) { override fun stepThreeApi(data: String?) {
Log.e("stepThreeApi", " response ---> $data") Log.e("stepThreeApi", " response ---> $data")
// call create fd api
// StepFourBajajFDFragment.getInstance().getCreateFDResponse()
binding.viewPager.currentItem = 3 binding.viewPager.currentItem = 3
} }


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

@ -1,15 +1,23 @@
package com.nivesh.production.bajajfd.ui.fragment package com.nivesh.production.bajajfd.ui.fragment
import android.os.Bundle import android.os.Bundle
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.fragment.app.Fragment
import com.google.gson.Gson
import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.R
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.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.model.GetCodeRequest
import com.nivesh.production.bajajfd.model.GetCodeResponse
import com.nivesh.production.bajajfd.model.GetRatesRequest
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
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.Resource
import com.nivesh.production.bajajfd.viewModel.StepFourBajajFDViewModel import com.nivesh.production.bajajfd.viewModel.StepFourBajajFDViewModel
class StepFourBajajFDFragment : Fragment() { class StepFourBajajFDFragment : Fragment() {
@ -83,7 +91,88 @@ class StepFourBajajFDFragment : Fragment() {
return root return root
} }
override fun onDestroyView() {
fun getCreateFDResponse()
{
}
private fun paymentModeApi() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val getCodeRequest = GetCodeRequest()
getCodeRequest.ProductName = getString(R.string.bajajFD)
getCodeRequest.Category = getString(R.string.genderCategory)
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 -> {
}
// 650 -> refreshToken()
else -> {}
}
}
}
is Resource.Error -> {
response.message?.let { message ->
Log.e(" ", "An error occurred:$message")
}
}
is Resource.Loading -> {
}
}
}
}
}
private fun getFDDetailsApi() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val getCodeRequest = GetRatesRequest()
stepFourBajajFDViewModel.getFDDetails(getCodeRequest, Constants.token)
stepFourBajajFDViewModel.getFDDetailsMutableData.observe(viewLifecycleOwner) { response ->
when (response) {
is Resource.Success -> {
Log.e("response", "-->$response")
val getCodeResponse: GetCodeResponse =
Gson().fromJson(response.data?.toString(), GetCodeResponse::class.java)
getCodeResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
}
// 650 -> refreshToken()
else -> {}
}
}
}
is Resource.Error -> {
response.message?.let { message ->
Log.e(" ", "An error occurred:$message")
}
}
is Resource.Loading -> {
}
}
}
}
}
override fun onDestroyView() {
super.onDestroyView() super.onDestroyView()
_binding = null _binding = null
} }

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

@ -73,6 +73,7 @@ class StepOneBajajFDFragment : Fragment() {
listOfMinAmount = ArrayList() listOfMinAmount = ArrayList()
listOfMaxAmount = ArrayList() listOfMaxAmount = ArrayList()
listOfFrequency = ArrayList() listOfFrequency = ArrayList()
rgMaturity = RadioButton(activity as BajajFdMainActivity)
// Amount // Amount
binding.edtAmount.addTextChangedListener(object : TextWatcher { binding.edtAmount.addTextChangedListener(object : TextWatcher {
@ -122,6 +123,7 @@ class StepOneBajajFDFragment : Fragment() {
} }
// Maturity Options // Maturity Options
rgMaturity.text = getString(R.string.additionalDetailOne)
binding.radioGroup.setOnCheckedChangeListener { group, checkedId -> binding.radioGroup.setOnCheckedChangeListener { group, checkedId ->
rgMaturity = group.findViewById(checkedId) rgMaturity = group.findViewById(checkedId)
Log.e("Maturity", "-->" + rgMaturity.text) Log.e("Maturity", "-->" + rgMaturity.text)
@ -160,6 +162,8 @@ 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") bajajFDInterface.stepOneApi("stepOneResponse")
} }
} }


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


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

@ -1,5 +1,6 @@
package com.nivesh.production.bajajfd.util package com.nivesh.production.bajajfd.util
import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.app.AlertDialog import android.app.AlertDialog
import android.content.Context import android.content.Context
@ -13,9 +14,11 @@ 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.nivesh.production.bajajfd.BajajApplication
import com.nivesh.production.bajajfd.R import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import java.text.SimpleDateFormat
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.util.*
import java.util.regex.Matcher import java.util.regex.Matcher
import java.util.regex.Pattern import java.util.regex.Pattern
@ -151,6 +154,16 @@ class Common {
return false return false
} }
fun commonErrorAutoCompleteMethod(
inputText: MaterialAutoCompleteTextView,
inputError: TextInputLayout,
strMessage: String
): Boolean {
inputText.requestFocus()
inputError.error = strMessage
return false
}
fun commonSpinnerErrorMethod( fun commonSpinnerErrorMethod(
inputText: MaterialAutoCompleteTextView, inputText: MaterialAutoCompleteTextView,
inputError: TextInputLayout, inputError: TextInputLayout,
@ -161,5 +174,12 @@ class Common {
return false return false
} }
fun getDate(string :String): String {
val input = SimpleDateFormat("dd/MM/yyyy", Locale.US)
val mDate : Date? = input.parse(string)
// val simpleDateFormat = SimpleDateFormat("dd MMM, yyyy", Locale.US)
val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US)
return simpleDateFormat.format(mDate as Date)
}
} }
} }

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

@ -3,7 +3,7 @@ package com.nivesh.production.bajajfd.util
class Constants() { class Constants() {
companion object { companion object {
const val BASE_URL = "https://providential.in/WebApi_Bajaj/"
const val BASE_URL = "https://providential.in/"
const val token = "636F8F63-06C4-4D95-8562-392B34025FB0" const val token = "636F8F63-06C4-4D95-8562-392B34025FB0"
} }
} }

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

@ -5,29 +5,27 @@ 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.FDStepsCountRequest import com.nivesh.production.bajajfd.model.FDStepsCountRequest
import com.nivesh.production.bajajfd.model.GetCodeRequest
import com.nivesh.production.bajajfd.model.getClientDetailsRequest
import com.nivesh.production.bajajfd.repositories.MainRepository import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.util.Resource import com.nivesh.production.bajajfd.util.Resource
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import okhttp3.RequestBody
class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
// TODO: Implement the ViewModel
val getRatesMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getCode(requestBody: GetCodeRequest, token : String) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.getCodesResponse(requestBody, token)
getRatesMutableData.postValue(handleRatesResponse(response))
}
val getStepsCountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getStepsCountMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getStepsCount(requestBody: FDStepsCountRequest, token : String) = viewModelScope.launch {
fun getStepsCount(requestBody: FDStepsCountRequest, token: String) = viewModelScope.launch {
getStepsCountMutableData.postValue(Resource.Loading()) getStepsCountMutableData.postValue(Resource.Loading())
val response = mainRepository.getStepsCountResponse(requestBody, token) val response = mainRepository.getStepsCountResponse(requestBody, token)
getStepsCountMutableData.postValue(handleRatesResponse(response)) getStepsCountMutableData.postValue(handleRatesResponse(response))
} }
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))
}
private fun handleRatesResponse(response: retrofit2.Response<JsonObject>): Resource<JsonObject> { private fun handleRatesResponse(response: retrofit2.Response<JsonObject>): Resource<JsonObject> {


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

@ -4,6 +4,7 @@ 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.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.Resource import com.nivesh.production.bajajfd.util.Resource
@ -11,8 +12,24 @@ import kotlinx.coroutines.launch
class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
private val getRatesMutableData: 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))
}
val getFDDetailsMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun getFDDetails(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch {
getFDDetailsMutableData.postValue(Resource.Loading())
val response = mainRepository.getFDDetailsResponse(getRatesRequest, token)
getFDDetailsMutableData.postValue(handleRatesResponse(response))
}
private val getRatesMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun saveFDOtherData(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { fun saveFDOtherData(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading()) getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.saveFDOtherDataResponse(getRatesRequest, token) val response = mainRepository.saveFDOtherDataResponse(getRatesRequest, token)
@ -29,11 +46,7 @@ class StepFourBajajFDViewModel(private val mainRepository: MainRepository) : Vie
} }
fun getFDDetails(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.getFDDetailsResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleRatesResponse(response))
}
fun updateFDPaymentStatus(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch { fun updateFDPaymentStatus(getRatesRequest: GetRatesRequest, token : String) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading()) getRatesMutableData.postValue(Resource.Loading())


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

@ -104,4 +104,26 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View
getCityListMutableData.postValue(handleRatesResponse(response)) getCityListMutableData.postValue(handleRatesResponse(response))
} }
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))
}
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))
}
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))
}
} }

+ 5
- 0
app/src/main/res/drawable/ic_add_icon.xml View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#6D6B6B"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M13,7h-2v4L7,11v2h4v4h2v-4h4v-2h-4L13,7zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
</vector>

+ 5
- 0
app/src/main/res/drawable/ic_select_green.xml View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#69F324"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,6c3.31,0 6,2.69 6,6s-2.69,6 -6,6 -6,-2.69 -6,-6 2.69,-6 6,-6m0,-2c-4.42,0 -8,3.58 -8,8s3.58,8 8,8 8,-3.58 8,-8 -3.58,-8 -8,-8z"/>
</vector>

+ 5
- 0
app/src/main/res/drawable/ic_select_outline.xml View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#403D3D"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,6c3.31,0 6,2.69 6,6s-2.69,6 -6,6 -6,-2.69 -6,-6 2.69,-6 6,-6m0,-2c-4.42,0 -8,3.58 -8,8s3.58,8 8,8 8,-3.58 8,-8 -3.58,-8 -8,-8z"/>
</vector>

+ 160
- 158
app/src/main/res/layout/fragment_bajajfd_step_two.xml View File

@ -14,9 +14,9 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginBottom="@dimen/margin_80" android:layout_marginBottom="@dimen/margin_80"
android:padding="@dimen/margin_5"
android:background="@color/NiveshColorAppBg" android:background="@color/NiveshColorAppBg"
android:fillViewport="true" android:fillViewport="true"
android:padding="@dimen/margin_5"
android:visibility="visible" android:visibility="visible"
app:layout_constraintBottom_toTopOf="@+id/btnNext" app:layout_constraintBottom_toTopOf="@+id/btnNext"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@ -72,8 +72,8 @@
style="@style/regularStyle" style="@style/regularStyle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginStart="@dimen/margin_10" android:layout_marginStart="@dimen/margin_10"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginBottom="@dimen/margin_1" android:layout_marginBottom="@dimen/margin_1"
android:text="@string/mandatoryField" android:text="@string/mandatoryField"
android:textColor="@color/greyColor2" android:textColor="@color/greyColor2"
@ -91,8 +91,8 @@
android:paddingStart="@dimen/margin_18" android:paddingStart="@dimen/margin_18"
android:paddingEnd="@dimen/margin_15" android:paddingEnd="@dimen/margin_15"
android:text="@string/personalDetails" android:text="@string/personalDetails"
android:textSize="@dimen/text_size_14"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/text_size_14"
app:drawableEndCompat="@drawable/svg_down_arrow" /> app:drawableEndCompat="@drawable/svg_down_arrow" />
<LinearLayout <LinearLayout
@ -114,10 +114,10 @@
android:id="@+id/edtMobileNumber" android:id="@+id/edtMobileNumber"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="phone" android:inputType="phone"
android:maxEms="10" android:maxEms="10"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -134,10 +134,11 @@
android:id="@+id/edtDOB" android:id="@+id/edtDOB"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableEnd="@drawable/svg_cal"
android:focusable="false"
android:inputType="none"
android:paddingTop="@dimen/margin_15" android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15" android:paddingBottom="@dimen/margin_15"
android:drawableEnd="@drawable/svg_cal"
android:inputType="date"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -154,34 +155,35 @@
android:id="@+id/edtPANNumber" android:id="@+id/edtPANNumber"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="textCapCharacters"
android:maxEms="10"
android:paddingTop="@dimen/margin_15" android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15" android:paddingBottom="@dimen/margin_15"
android:maxEms="10"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<TextView <TextView
android:id="@+id/tvPANVerify" android:id="@+id/tvPANVerify"
android:visibility="gone"
style="@style/regularStyle" style="@style/regularStyle"
android:layout_gravity="end"
android:layout_marginEnd="@dimen/margin_15"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginEnd="@dimen/margin_15"
android:textColor="@color/greyColor2"
android:textSize="@dimen/text_size_10" android:textSize="@dimen/text_size_10"
android:textColor="@color/greyColor2" />
android:visibility="gone" />
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/tlTitle" android:id="@+id/tlTitle"
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="@dimen/margin_48"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginBottom="@dimen/margin_5"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_5" android:layout_marginStart="@dimen/margin_5"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_5" android:layout_marginEnd="@dimen/margin_5"
android:layout_marginBottom="@dimen/margin_5"
app:hintEnabled="false" app:hintEnabled="false"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -199,6 +201,32 @@
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tlGender"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
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:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tlDepositAmount">
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/spGender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectGender"
android:inputType="none"
android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/tlFirstName" android:id="@+id/tlFirstName"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
@ -211,10 +239,10 @@
android:id="@+id/edtFirstName" android:id="@+id/edtFirstName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="40" android:maxEms="40"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -232,10 +260,10 @@
android:id="@+id/edtMiddleName" android:id="@+id/edtMiddleName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="40" android:maxEms="40"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -254,67 +282,22 @@
android:id="@+id/edtLastName" android:id="@+id/edtLastName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="40" android:maxEms="40"
android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tlGender"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="@dimen/margin_48"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginBottom="@dimen/margin_5"
android:layout_marginStart="@dimen/margin_5"
android:layout_marginEnd="@dimen/margin_5"
app:hintEnabled="false"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tlDepositAmount">
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/spGender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectGender"
android:inputType="none"
android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575"
android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tlEmail"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_5"
android:hint="@string/enterEmailAddress">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/edtEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:paddingTop="@dimen/margin_15" android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15" android:paddingBottom="@dimen/margin_15"
android:maxEms="50"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/tlOccupation" android:id="@+id/tlOccupation"
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"
app:hintEnabled="false"
android:layout_margin="@dimen/margin_5">
android:layout_margin="@dimen/margin_5"
app:hintEnabled="false">
<com.google.android.material.textfield.MaterialAutoCompleteTextView <com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/spOccupation" android:id="@+id/spOccupation"
@ -325,7 +308,7 @@
android:inputType="none" android:inputType="none"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575" android:textColorHint="#757575"
android:textSize="@dimen/text_size_14" />
android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -334,8 +317,8 @@
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"
app:hintEnabled="false"
android:layout_margin="@dimen/margin_5">
android:layout_margin="@dimen/margin_5"
app:hintEnabled="false">
<com.google.android.material.textfield.MaterialAutoCompleteTextView <com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/spIncome" android:id="@+id/spIncome"
@ -346,7 +329,7 @@
android:inputType="none" android:inputType="none"
android:labelFor="@+id/spInterestPayout" android:labelFor="@+id/spInterestPayout"
android:textColorHint="#757575" android:textColorHint="#757575"
android:textSize="@dimen/text_size_14" />
android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -362,10 +345,10 @@
android:id="@+id/edtQualification" android:id="@+id/edtQualification"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="60" android:maxEms="60"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
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,11 +357,11 @@
android:id="@+id/tlMarital" android:id="@+id/tlMarital"
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="@dimen/margin_48"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginBottom="@dimen/margin_5"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_5" android:layout_marginStart="@dimen/margin_5"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_5" android:layout_marginEnd="@dimen/margin_5"
android:layout_marginBottom="@dimen/margin_5"
app:hintEnabled="false" app:hintEnabled="false"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -396,51 +379,22 @@
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tlRelation"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="@dimen/margin_48"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginBottom="@dimen/margin_5"
android:layout_marginStart="@dimen/margin_5"
android:layout_marginEnd="@dimen/margin_5"
app:hintEnabled="false"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tlDepositAmount">
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/spRelation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_with_line"
android:hint="@string/selectRelation"
android:inputType="none"
android:labelFor="@+id/tlRelation"
android:textColorHint="#757575"
android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout <com.google.android.material.textfield.TextInputLayout
android:id="@+id/tlRelationName"
android:id="@+id/tlEmail"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense" style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"
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_margin="@dimen/margin_5"
android:hint="@string/relationName">
android:hint="@string/enterEmailAddress">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/edtRelationName"
android:id="@+id/edtEmail"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:maxEms="50"
android:paddingTop="@dimen/margin_15" android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15" android:paddingBottom="@dimen/margin_15"
android:inputType="text"
android:maxEms="100"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -457,10 +411,10 @@
android:id="@+id/edtAddressLine1" android:id="@+id/edtAddressLine1"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="100" android:maxEms="100"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -477,10 +431,10 @@
android:id="@+id/edtAddressLine2" android:id="@+id/edtAddressLine2"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="100" android:maxEms="100"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -491,16 +445,16 @@
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_margin="@dimen/margin_5"
android:hint="@string/enterAddress2">
android:hint="@string/enterAddress3">
<com.google.android.material.textfield.TextInputEditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/edtAddressLine3" android:id="@+id/edtAddressLine3"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="100" android:maxEms="100"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -523,7 +477,7 @@
android:inputType="none" android:inputType="none"
android:labelFor="@+id/tlState" android:labelFor="@+id/tlState"
android:textColorHint="#757575" android:textColorHint="#757575"
android:textSize="@dimen/text_size_14"/>
android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -532,8 +486,8 @@
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"
app:hintEnabled="false"
android:layout_margin="@dimen/margin_5">
android:layout_margin="@dimen/margin_5"
app:hintEnabled="false">
<com.google.android.material.textfield.MaterialAutoCompleteTextView <com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/spCity" android:id="@+id/spCity"
@ -561,11 +515,11 @@
android:id="@+id/edtPinCode" android:id="@+id/edtPinCode"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="number"
android:maxEms="6"
android:paddingTop="@dimen/margin_15" android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15" android:paddingBottom="@dimen/margin_15"
android:inputType="text"
android:textSize="@dimen/text_size_14"
android:maxEms="6" />
android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -586,7 +540,6 @@
app:drawableEndCompat="@drawable/svg_down_arrow" /> app:drawableEndCompat="@drawable/svg_down_arrow" />
<LinearLayout <LinearLayout
android:id="@+id/llNomineeDetail" android:id="@+id/llNomineeDetail"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -598,11 +551,11 @@
android:id="@+id/tlNomineeTitle" android:id="@+id/tlNomineeTitle"
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="@dimen/margin_48"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginBottom="@dimen/margin_5"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_5" android:layout_marginStart="@dimen/margin_5"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_5" android:layout_marginEnd="@dimen/margin_5"
android:layout_marginBottom="@dimen/margin_5"
app:hintEnabled="false" app:hintEnabled="false"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -633,10 +586,10 @@
android:id="@+id/edtNomineeFirstName" android:id="@+id/edtNomineeFirstName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="100" android:maxEms="100"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -653,10 +606,10 @@
android:id="@+id/edtNomineeMiddleName" android:id="@+id/edtNomineeMiddleName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="100" android:maxEms="100"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -673,10 +626,10 @@
android:id="@+id/edtNomineeLastName" android:id="@+id/edtNomineeLastName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="100" android:maxEms="100"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -694,9 +647,10 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableEnd="@drawable/svg_cal" android:drawableEnd="@drawable/svg_cal"
android:focusable="false"
android:inputType="none"
android:paddingTop="@dimen/margin_15" android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15" android:paddingBottom="@dimen/margin_15"
android:inputType="date"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -705,11 +659,11 @@
android:id="@+id/tlNomineeRelation" android:id="@+id/tlNomineeRelation"
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="@dimen/margin_48"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginBottom="@dimen/margin_5"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_5" android:layout_marginStart="@dimen/margin_5"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_5" android:layout_marginEnd="@dimen/margin_5"
android:layout_marginBottom="@dimen/margin_5"
app:hintEnabled="false" app:hintEnabled="false"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -748,10 +702,10 @@
android:id="@+id/edtGuardianName" android:id="@+id/edtGuardianName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="60" android:maxEms="60"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -768,10 +722,10 @@
android:id="@+id/edtGuardianAge" android:id="@+id/edtGuardianAge"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="60" android:maxEms="60"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -780,11 +734,11 @@
android:id="@+id/tlGuardianRelation" android:id="@+id/tlGuardianRelation"
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="@dimen/margin_48"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginBottom="@dimen/margin_5"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_5" android:layout_marginStart="@dimen/margin_5"
android:layout_marginTop="@dimen/margin_10"
android:layout_marginEnd="@dimen/margin_5" android:layout_marginEnd="@dimen/margin_5"
android:layout_marginBottom="@dimen/margin_5"
app:hintEnabled="false" app:hintEnabled="false"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -815,10 +769,10 @@
android:id="@+id/edtGuardianAddress" android:id="@+id/edtGuardianAddress"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:inputType="text" android:inputType="text"
android:maxEms="60" android:maxEms="60"
android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -835,10 +789,10 @@
android:id="@+id/edtGuardianPinCode" android:id="@+id/edtGuardianPinCode"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:inputType="number"
android:maxEms="60"
android:paddingTop="@dimen/margin_15" android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15" android:paddingBottom="@dimen/margin_15"
android:inputType="text"
android:maxEms="60"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -859,12 +813,45 @@
android:textSize="@dimen/text_size_14" android:textSize="@dimen/text_size_14"
app:drawableRightCompat="@drawable/svg_down_arrow" /> app:drawableRightCompat="@drawable/svg_down_arrow" />
<!-- RecyclerView for bankList and Add Bank-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_5"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvClientBankList"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:id="@+id/addBankDetail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_10"
android:drawablePadding="@dimen/margin_4"
android:padding="@dimen/margin_5"
android:text="@string/add_new_account"
android:textColor="@color/black"
android:textSize="@dimen/text_size_18"
android:textStyle="bold"
app:drawableEndCompat="@drawable/ic_add_icon">
</TextView>
</LinearLayout>
<!-- Add Bank Field-->
<LinearLayout <LinearLayout
android:id="@+id/llBankDetails" android:id="@+id/llBankDetails"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:padding="@dimen/margin_10">
android:padding="@dimen/margin_10"
android:visibility="gone">
<TextView <TextView
android:id="@+id/tvAccountType" android:id="@+id/tvAccountType"
@ -908,10 +895,12 @@
android:layout_margin="@dimen/margin_5" android:layout_margin="@dimen/margin_5"
android:hint="@string/enterIfscCode"> android:hint="@string/enterIfscCode">
<com.google.android.material.textfield.TextInputEditText
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:id="@+id/edtIFSC" android:id="@+id/edtIFSC"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="@dimen/margin_15"
android:paddingEnd="@dimen/margin_15"
android:paddingTop="@dimen/margin_15" android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15" android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
@ -932,7 +921,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="@dimen/margin_15" android:paddingTop="@dimen/margin_15"
android:paddingBottom="@dimen/margin_15" android:paddingBottom="@dimen/margin_15"
android:textSize="@dimen/text_size_14"/>
android:textSize="@dimen/text_size_14" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -973,38 +962,51 @@
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/btnAddBank"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="@dimen/margin_5"
android:layout_marginEnd="@dimen/margin_10"
android:layout_marginBottom="@dimen/margin_5"
android:backgroundTint="@color/colorPrimaryDark"
android:text="@string/add"
android:textColor="@color/white"
android:textSize="@dimen/text_size_14" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_5"
android:background="@color/greyColor3"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="@dimen/margin_18" android:paddingStart="@dimen/margin_18"
android:paddingEnd="@dimen/margin_15"
android:layout_marginTop="@dimen/margin_5"
android:background="@color/greyColor3">
android:paddingEnd="@dimen/margin_15">
<TextView <TextView
android:id="@+id/tvPaymentMode" android:id="@+id/tvPaymentMode"
style="@style/semiBoldStyle" style="@style/semiBoldStyle"
android:layout_weight="0.4"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="0.4"
android:text="@string/paymentMode" android:text="@string/paymentMode"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/text_size_14" /> android:textSize="@dimen/text_size_14" />
<TextView <TextView
android:id="@+id/tvEligibleBankOption"
style="@style/regularStyle" style="@style/regularStyle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="end"
android:layout_gravity="end" android:layout_gravity="end"
android:gravity="end"
android:padding="@dimen/margin_3" android:padding="@dimen/margin_3"
android:text="@string/eligibleBankOption" android:text="@string/eligibleBankOption"
android:textColor="@color/blue" android:textColor="@color/blue"
android:textSize="@dimen/text_size_14"
/>
android:textSize="@dimen/text_size_14" />
</LinearLayout> </LinearLayout>


+ 96
- 0
app/src/main/res/layout/item_bank_list_preview.xml View File

@ -0,0 +1,96 @@
<?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"
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">
<RelativeLayout
android:padding="@dimen/margin_3"
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_centerVertical="true"
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" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/bankSelector"
android:orientation="vertical">
<TextView
android:id="@+id/tvBankName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_4"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal">
<TextView
style="@style/regularStyle"
android:id="@+id/bankAcNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_14"
android:text="@string/accountNo" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvBankAccountNumber"
style="@style/regularStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_14"
android:text="" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginBottom="@dimen/margin_2"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/bankIfsc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/regularStyle"
android:textSize="@dimen/text_size_14"
android:text="@string/acIfsc" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvBankIFSC"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/regularStyle"
android:textSize="@dimen/text_size_14"
android:text="" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</com.google.android.material.card.MaterialCardView>

+ 54
- 0
app/src/main/res/layout/layout_bank_list.xml View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tvSelectClient"
style="@style/BoldStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="@dimen/margin_15"
android:text="@string/information"
android:textColor="@color/red"
android:textSize="@dimen/text_size_16"
app:layout_constraintBottom_toTopOf="@+id/rvBankList"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/tvCancel"
style="@style/BoldStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/margin_10"
android:gravity="center_vertical"
android:padding="@dimen/margin_10"
android:text="@string/x"
android:textColor="@color/black"
android:textSize="@dimen/text_size_19"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvSelectClient"
android:layout_width="0dp"
android:background="@color/greyColor2"
android:layout_height="@dimen/margin_1"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvBankList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/margin_60"
android:layout_marginBottom="@dimen/margin_5"
android:scrollbars="none"
app:layout_constraintTop_toBottomOf="@+id/tvSelectClient" />
</androidx.constraintlayout.widget.ConstraintLayout>

+ 18
- 0
app/src/main/res/layout/row_bank_list.xml View File

@ -0,0 +1,18 @@
<?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="wrap_content"
android:padding="@dimen/margin_5"
android:orientation="vertical">
<TextView
android:background="@drawable/rounded_corner_with_line"
android:id="@+id/txtYear"
android:padding="@dimen/margin_10"
android:layout_width="match_parent"
android:layout_height="@dimen/margin_35"
android:gravity="center"
android:textColor="@color/black"
android:textSize="@dimen/text_size_12" />
</LinearLayout>

+ 34
- 25
app/src/main/res/values-hi-rIN/strings.xml View File

@ -4,7 +4,6 @@
<string name="app">App</string> <string name="app">App</string>
<string name="source">nivesh</string> <string name="source">nivesh</string>
<string name="step1">Step 1</string> <string name="step1">Step 1</string>
<string name="step2">Step 2</string> <string name="step2">Step 2</string>
<string name="step3">Step 3</string> <string name="step3">Step 3</string>
@ -42,8 +41,9 @@
<string name="bajajFD">BajajFD</string> <string name="bajajFD">BajajFD</string>
<string name="category">InterestPayoutFreq</string> <string name="category">InterestPayoutFreq</string>
<string name="language">EN</string> <string name="language">EN</string>
<string name="minMaxValidation">Min, 12 months, Max. 60 months</string>
<string name="minMaxValidation">Min. 12 months, Max. 60 months</string>
<string name="minAmountCategory">MINAmount</string>
<string name="MaxAmountCategory">MAXAmount</string>
<!-- Validations --> <!-- Validations -->
<string name="emptyAmount">Please enter amount</string> <string name="emptyAmount">Please enter amount</string>
@ -55,6 +55,7 @@
<string name="emptyInterestPayout">Please select Interest Payout</string> <string name="emptyInterestPayout">Please select Interest Payout</string>
<string name="emptyInterestTenure">Please select Investment Tenure</string> <string name="emptyInterestTenure">Please select Investment Tenure</string>
<!-- Step 2 --> <!-- Step 2 -->
<string name="mandatoryField">All fields are mandatory other then optional</string> <string name="mandatoryField">All fields are mandatory other then optional</string>
<string name="personalDetails">Personal Details</string> <string name="personalDetails">Personal Details</string>
@ -75,12 +76,26 @@
<string name="enterAddress1">Enter Address Line 1</string> <string name="enterAddress1">Enter Address Line 1</string>
<string name="enterAddress2">Enter Address Line 2</string> <string name="enterAddress2">Enter Address Line 2</string>
<string name="enterAddress3">Enter Address Line 3</string> <string name="enterAddress3">Enter Address Line 3</string>
<string name="state">State</string> <string name="state">State</string>
<string name="city">City</string> <string name="city">City</string>
<string name="pinCode">PinCode</string> <string name="pinCode">PinCode</string>
<string name="verifiedText">Verified</string> <string name="verifiedText">Verified</string>
<string name="notVerifiedText">Not Verified</string> <string name="notVerifiedText">Not Verified</string>
<string name="salutationCategory">Salutation</string>
<string name="genderCategory">Gender</string>
<string name="maritalCategory">MaritalStatus</string>
<string name="occupationCategory">Occupation</string>
<string name="relationshipCategory">NomineeRelationship</string>
<string name="selectIncome">Select Income</string>
<string name="selectState">Select State</string>
<string name="selectCity">Select City</string>
<string name="annualIncome">AnnualIncome</string>
<string name="information">Information</string>
<string name="x">X</string>
<string name="accountNo">A/c No:</string>
<string name="acIfsc">A/c IFSC :</string>
<string name="add">Add</string>
<!-- Nominee Details --> <!-- Nominee Details -->
<string name="nomineeDetailsOptional">Nominee Details (Optional)</string> <string name="nomineeDetailsOptional">Nominee Details (Optional)</string>
@ -119,11 +134,14 @@
<string name="inValidMobileNumber">Mobile number should have at least 10 digits</string> <string name="inValidMobileNumber">Mobile number should have at least 10 digits</string>
<string name="inValidIndianMobileNumber">Mobile number should start with 6,7,8 and 9</string> <string name="inValidIndianMobileNumber">Mobile number should start with 6,7,8 and 9</string>
<string name="emptyDOB">Please select date of birth</string> <string name="emptyDOB">Please select date of birth</string>
<string name="emptyPAN">Please enter PAN number</string> <string name="emptyPAN">Please enter PAN number</string>
<string name="invalidPAN">Invalid PAN</string> <string name="invalidPAN">Invalid PAN</string>
<string name="emptyTitle">Please select title</string> <string name="emptyTitle">Please select title</string>
<string name="emptyGender">Please select gender</string> <string name="emptyGender">Please select gender</string>
<string name="emptyFirstName">Please enter First Name</string> <string name="emptyFirstName">Please enter First Name</string>
<string name="validFirstName">Please enter valid First Name</string> <string name="validFirstName">Please enter valid First Name</string>
@ -133,13 +151,17 @@
<string name="emptyLastName">Please enter Last name</string> <string name="emptyLastName">Please enter Last name</string>
<string name="validLastName">Please enter valid Last Name</string> <string name="validLastName">Please enter valid Last Name</string>
<string name="emptyEmail">Please enter email address</string>
<string name="validEmail">Please enter valid email address</string>
<string name="emptyOccupation">Please select occupation</string> <string name="emptyOccupation">Please select occupation</string>
<string name="emptyIncome">Please select income</string>
<string name="emptyQualification">Please select Qualification</string> <string name="emptyQualification">Please select Qualification</string>
<string name="emptyMaritalStatus">Please select marital status </string> <string name="emptyMaritalStatus">Please select marital status </string>
<string name="emptyRelation">Please select relation </string> <string name="emptyRelation">Please select relation </string>
<string name="emptyRelationName">Please enter relation name</string> <string name="emptyRelationName">Please enter relation name</string>
<string name="emptyEmail">Please enter email address</string>
<string name="validEmail">Please enter valid email address</string>
<string name="emptyAddressLine1">Please enter address 1</string> <string name="emptyAddressLine1">Please enter address 1</string>
<string name="emptyAddressLine2">Please enter address 2</string> <string name="emptyAddressLine2">Please enter address 2</string>
<string name="emptyAddressLine3">Please enter address 3</string> <string name="emptyAddressLine3">Please enter address 3</string>
@ -150,14 +172,16 @@
<string name="emptyPinCode">Please enter PinCode</string> <string name="emptyPinCode">Please enter PinCode</string>
<string name="validPinCode">Please enter valid PinCode</string> <string name="validPinCode">Please enter valid PinCode</string>
<string name="emptyAccNo">Please enter valid account number</string>
<string name="emptyAccNo">Please enter account number</string>
<string name="emptyIFSCCode">Please enter IFSC code</string> <string name="emptyIFSCCode">Please enter IFSC code</string>
<string name="validIFSCCode">Please enter valid IFSC code</string> <string name="validIFSCCode">Please enter valid IFSC code</string>
<string name="emptyBankName">Please select bank name</string>
<string name="emptyBranchName">Please enter branch name</string> <string name="emptyBranchName">Please enter branch name</string>
<string name="emptyBankName">Please select bank name</string>
<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>
@ -185,6 +209,7 @@
<string name="politicallyExposedPerson">Are you a politically exposed person</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="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="validTermsConditions">Please accept terms &amp; conditions.</string> <string name="validTermsConditions">Please accept terms &amp; conditions.</string>
@ -210,25 +235,9 @@
<string name="onceYouClick">Once you click on PAY, your order will be placed and you will be redirected to payment gateway.</string> <string name="onceYouClick">Once you click on PAY, your order will be placed and you will be redirected to payment gateway.</string>
<string name="seniorCitizen">Senior Citizen</string> <string name="seniorCitizen">Senior Citizen</string>
<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="minAmountCategory">MINAmount</string>
<string name="MaxAmountCategory">MAXAmount</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="cancel">Cancel</string> <string name="cancel">Cancel</string>
<string name="salutationCategory">Salutation</string>
<string name="genderCategory">Gender</string>
<string name="maritalCategory">MaritalStatus</string>
<string name="occupationCategory">Occupation</string>
<string name="relationshipCategory">NomineeRelationship</string>
<string name="selectIncome">Select Income</string>
<string name="selectState">Select State</string>
<string name="selectCity">Select City</string>
<string name="annualIncome">AnnualIncome</string>
<string name="aadhar">Aadhar</string>
<string name="gallery">Gallery</string>
<string name="camera">Camera</string>
<string name="select_option">Select Option</string>
</resources> </resources>

+ 4
- 0
app/src/main/res/values-night/strings.xml View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="add_new_account">Add New Account</string>
</resources>

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

@ -42,7 +42,8 @@
<string name="category">InterestPayoutFreq</string> <string name="category">InterestPayoutFreq</string>
<string name="language">EN</string> <string name="language">EN</string>
<string name="minMaxValidation">Min. 12 months, Max. 60 months</string> <string name="minMaxValidation">Min. 12 months, Max. 60 months</string>
<string name="minAmountCategory">MINAmount</string>
<string name="MaxAmountCategory">MAXAmount</string>
<!-- Validations --> <!-- Validations -->
<string name="emptyAmount">Please enter amount</string> <string name="emptyAmount">Please enter amount</string>
@ -75,12 +76,26 @@
<string name="enterAddress1">Enter Address Line 1</string> <string name="enterAddress1">Enter Address Line 1</string>
<string name="enterAddress2">Enter Address Line 2</string> <string name="enterAddress2">Enter Address Line 2</string>
<string name="enterAddress3">Enter Address Line 3</string> <string name="enterAddress3">Enter Address Line 3</string>
<string name="state">State</string> <string name="state">State</string>
<string name="city">City</string> <string name="city">City</string>
<string name="pinCode">PinCode</string> <string name="pinCode">PinCode</string>
<string name="verifiedText">Verified</string> <string name="verifiedText">Verified</string>
<string name="notVerifiedText">Not Verified</string> <string name="notVerifiedText">Not Verified</string>
<string name="salutationCategory">Salutation</string>
<string name="genderCategory">Gender</string>
<string name="maritalCategory">MaritalStatus</string>
<string name="occupationCategory">Occupation</string>
<string name="relationshipCategory">NomineeRelationship</string>
<string name="selectIncome">Select Income</string>
<string name="selectState">Select State</string>
<string name="selectCity">Select City</string>
<string name="annualIncome">AnnualIncome</string>
<string name="information">Information</string>
<string name="x">X</string>
<string name="accountNo">A/c No:</string>
<string name="acIfsc">A/c IFSC :</string>
<string name="add">Add</string>
<!-- Nominee Details --> <!-- Nominee Details -->
<string name="nomineeDetailsOptional">Nominee Details (Optional)</string> <string name="nomineeDetailsOptional">Nominee Details (Optional)</string>
@ -140,6 +155,8 @@
<string name="validEmail">Please enter valid email address</string> <string name="validEmail">Please enter valid email address</string>
<string name="emptyOccupation">Please select occupation</string> <string name="emptyOccupation">Please select occupation</string>
<string name="emptyIncome">Please select income</string>
<string name="emptyQualification">Please select Qualification</string> <string name="emptyQualification">Please select Qualification</string>
<string name="emptyMaritalStatus">Please select marital status </string> <string name="emptyMaritalStatus">Please select marital status </string>
<string name="emptyRelation">Please select relation </string> <string name="emptyRelation">Please select relation </string>
@ -217,43 +234,11 @@
<string name="onceYouClick">Once you click on PAY, your order will be placed and you will be redirected to payment gateway.</string> <string name="onceYouClick">Once you click on PAY, your order will be placed and you will be redirected to payment gateway.</string>
<string name="seniorCitizen">Senior Citizen</string> <string name="seniorCitizen">Senior Citizen</string>
<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="minAmountCategory">MINAmount</string>
<string name="MaxAmountCategory">MAXAmount</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="cancel">Cancel</string> <string name="cancel">Cancel</string>
<string name="salutationCategory">Salutation</string>
<string name="genderCategory">Gender</string>
<string name="maritalCategory">MaritalStatus</string>
<string name="occupationCategory">Occupation</string>
<string name="relationshipCategory">NomineeRelationship</string>
<string name="selectIncome">Select Income</string>
<string name="selectState">Select State</string>
<string name="selectCity">Select City</string>
<string name="annualIncome">AnnualIncome</string>
<string name="docType">Doctype</string>
<string name="aadhar">AADHAR</string>
<string name="gallery">Gallery</string>
<string name="camera">Camera</string>
<string name="select_option">Select Option</string>
<!-- <string-array name="interestPayoutList">-->
<!-- <item>On Maturity</item>-->
<!-- <item>Monthly</item>-->
<!-- <item>Quarterly</item>-->
<!-- <item>Half Yearly</item>-->
<!-- <item>Yearly</item>-->
<!-- </string-array>-->
<!-- <string-array name="tenure">-->
<!-- <item>On Maturity</item>-->
<!-- <item>Monthly</item>-->
<!-- <item>Quarterly</item>-->
<!-- <item>Half Yearly</item>-->
<!-- <item>Yearly</item>-->
<!-- </string-array>-->
<array name="addressType"> <array name="addressType">
<item>Aadhaar Card</item> <item>Aadhaar Card</item>
@ -262,30 +247,4 @@
<item>Driving Licence</item> <item>Driving Licence</item>
</array> </array>
<!-- <array name="title">-->
<!-- <item>Mr</item>-->
<!-- <item>Mrs</item>-->
<!-- </array>-->
<!-- <array name="gender">-->
<!-- <item>Male</item>-->
<!-- <item>Female</item>-->
<!-- </array>-->
<!-- <array name="maritalStatus">-->
<!-- <item>Marital Status</item>-->
<!-- <item>Married</item>-->
<!-- <item>Unmarried</item>-->
<!-- </array>-->
<!-- <array name="interestPayoutLists">-->
<!-- <item>Interest Payout</item>-->
<!-- <item>On Maturity</item>-->
<!-- <item>Monthly</item>-->
<!-- <item>Quarterly</item>-->
<!-- <item>Half Yearly</item>-->
<!-- <item>Yearly</item>-->
<!-- </array>-->
</resources> </resources>

Loading…
Cancel
Save

Powered by TurnKey Linux.