Browse Source

bank ifsc

PankajBranch
pankaj 2 years ago
parent
commit
85575a10dc
11 changed files with 78 additions and 114 deletions
  1. +12
    -3
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt
  2. +0
    -12
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/BajajFDInterface.kt
  3. +9
    -10
      app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
  4. +0
    -15
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt
  5. +1
    -3
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepOneBajajFDFragment.kt
  6. +34
    -17
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt
  7. +2
    -2
      app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt
  8. +1
    -11
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepFiveBajajFDViewModel.kt
  9. +1
    -0
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepTwoBajajFDViewModel.kt
  10. +9
    -17
      app/src/main/res/values-hi-rIN/strings.xml
  11. +9
    -24
      app/src/main/res/values/strings.xml

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

@ -148,11 +148,20 @@ interface ApiInterface {
@GET("WebAPI_Bajaj/api/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/GetIFSC_Autofill")
suspend fun getIFSCApi(
@Query("prefix")
ifsc : String
): Response<JsonObject>
@GET("WebApi/api/GetBankDetailsFromIFSC?")
suspend fun getIFSCDetailsApi(@Query("ifsc") ifsc : String,@Header("token") token: String): Response<JsonObject>
suspend fun getIFSCDetailsApi(
@Query("ifsc")
ifsc : String,
@Header("token")
token: String
): Response<JsonObject>
@POST("WebApi_Bajaj/api/GetCodes")
suspend fun payModeApi(


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

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

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

@ -19,7 +19,6 @@ import com.nivesh.production.bajajfd.adapter.DisableAdapter
import com.nivesh.production.bajajfd.adapter.SectionsPagerAdapter
import com.nivesh.production.bajajfd.api.ApiClient
import com.nivesh.production.bajajfd.databinding.ActivityBajajFdBinding
import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.model.*
import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.ui.fragment.*
@ -34,7 +33,7 @@ import com.nivesh.production.bajajfd.util.Resource
import com.nivesh.production.bajajfd.viewModel.*
class BajajFdMainActivity : BaseActivity(), BajajFDInterface {
class BajajFdMainActivity : BaseActivity() {
lateinit var binding: ActivityBajajFdBinding
private lateinit var viewModel: BajajFDViewModel
@ -87,8 +86,8 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface {
if (Common.isNetworkAvailable(this)) {
val fdStepsCount = FDStepsCountRequest()
fdStepsCount.FDProvider = getString(R.string.bajaj)
fdStepsCount.NiveshClientCode = "72682"
//hemant client code =8872
fdStepsCount.NiveshClientCode = "60476"
//hemant client code =8872 /60476
viewModel.getStepsCount(fdStepsCount, token, this)
viewModel.getStepsCountMutableData.observe(this) { response ->
@ -140,7 +139,7 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface {
private fun getClientDetailsApi(stepsCount: Int) {
if (Common.isNetworkAvailable(this@BajajFdMainActivity)) {
val getClientDetailsRequest = getClientDetailsRequest()
getClientDetailsRequest.client_code = "72682"
getClientDetailsRequest.client_code = "60476"
getClientDetailsRequest.AppOrWeb = getString(R.string.app)
getClientDetailsRequest.sub_broker_code = "3435"
@ -148,7 +147,7 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface {
val userRequest = UserRequest()
userRequest.UID = 19060
userRequest.UID = 0
userRequest.IPAddress = ""
userRequest.Source = getString(R.string.source)
userRequest.AppOrWeb = getString(R.string.app)
@ -367,13 +366,13 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface {
}
// step 1 response
override fun stepOneApi(data: String?) {
fun stepOneApi(data: String?) {
Log.e("stepOneApi", " response ---> $data")
binding.viewPager.currentItem = 1
}
// step 2 response
override fun stepTwoApi(data: CreateFDApplicationResponse) {
fun stepTwoApi(data: CreateFDApplicationResponse) {
Log.e("stepTwoApi", " response ---> " + Gson().toJson(data))
binding.viewPager.currentItem = 2
stepThreeBajajFDFragment.displayReceivedData(data)
@ -381,7 +380,7 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface {
// step 3 response
override fun stepThreeApi(data: CreateFDApplicationResponse) {
fun stepThreeApi(data: CreateFDApplicationResponse) {
Log.e("stepThreeApi", " response --->" + Gson().toJson(data))
// call create fd api
binding.viewPager.currentItem = 3
@ -389,7 +388,7 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface {
}
// step 4 response
override fun stepFourApi(payUrl: String, value: String) {
fun stepFourApi(payUrl: String, value: String) {
paymentDialog(payUrl, value)
}


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

@ -7,10 +7,8 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import com.nivesh.production.bajajfd.api.ApiClient
import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFiveBinding
import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import com.nivesh.production.bajajfd.ui.providerfactory.StepFiveModelProviderFactory
import com.nivesh.production.bajajfd.viewModel.StepFiveBajajFDViewModel
@ -20,19 +18,6 @@ class StepFiveBajajFDFragment : Fragment() {
private var _binding: FragmentBajajfdStepFiveBinding? = null
private val binding get() = _binding!!
private lateinit var bajajFDInterface: BajajFDInterface
companion object {
fun getInstance(fdInterface: BajajFDInterface): StepFiveBajajFDFragment {
val stepFiveFragment = StepFiveBajajFDFragment()
stepFiveFragment.setApi(fdInterface)
return stepFiveFragment
}
}
fun setApi(bajajFDInterfaces: BajajFDInterface) {
bajajFDInterface = bajajFDInterfaces
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?


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

@ -137,7 +137,7 @@ class StepOneBajajFDFragment : BaseFragment() {
binding.spInterestPayout.text.toString()
(activity as BajajFdMainActivity).fdInvestmentDetails.Tenure = tenure
(activity as BajajFdMainActivity).fdInvestmentDetails.Interest = interest
(activity as BajajFdMainActivity).fdInvestmentDetails.NiveshClientCode = "8872"
(activity as BajajFdMainActivity).fdInvestmentDetails.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE
(activity as BajajFdMainActivity).fdInvestmentDetails.Provider =
getString(R.string.bajaj)
(activity as BajajFdMainActivity).fdInvestmentDetails.IPAddress = "192.168.1.23"
@ -161,8 +161,6 @@ class StepOneBajajFDFragment : BaseFragment() {
"StepOneData",
"-->" + Gson().toJson((activity as BajajFdMainActivity).fdInvestmentDetails)
)
// bajajFDInterface.stepOneApi("stepOneResponse")
(activity as BajajFdMainActivity).stepOneApi("stepOneResponse")
}
}


+ 34
- 17
app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt View File

@ -27,7 +27,6 @@ import com.nivesh.production.bajajfd.adapter.PaymentModeAdapter
import com.nivesh.production.bajajfd.adapter.RecommendedBankListAdapter
import com.nivesh.production.bajajfd.api.ApiClient
import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepTwoBinding
import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.model.*
import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
@ -47,6 +46,7 @@ import com.nivesh.production.bajajfd.util.Constants.Companion.token
import com.nivesh.production.bajajfd.util.Resource
import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel
import java.util.*
import kotlin.math.log
class StepTwoBajajFDFragment : BaseFragment() {
@ -54,7 +54,6 @@ class StepTwoBajajFDFragment : BaseFragment() {
private var _binding: FragmentBajajfdStepTwoBinding? = null
private val binding get() = _binding!!
private lateinit var bajajFDInterface: BajajFDInterface
private lateinit var rbBank: RadioButton
private lateinit var rbPaymentMode: RadioButton
private var cal = Calendar.getInstance()
@ -482,6 +481,12 @@ class StepTwoBajajFDFragment : BaseFragment() {
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
removeError(binding.tlIFSC)
ifscCodeCheckApi(s.toString())
Log.e("ifsc", "-->" + s.toString())
}
})
binding.edtAccountNumber.addTextChangedListener(object : TextWatcher {
@ -607,7 +612,6 @@ class StepTwoBajajFDFragment : BaseFragment() {
binding.edtAddressLine3.text.toString()
(activity as BajajFdMainActivity).applicantDetails.ApplicantCity =
binding.spCity.text.toString()
// (activity as BajajFdMainActivity).applicantDetails.ApplicantState = binding.spState.text.toString()
(activity as BajajFdMainActivity).applicantDetails.ApplicantState =
stateObject.State_Code
(activity as BajajFdMainActivity).applicantDetails.ApplicantCountry = "India"
@ -710,9 +714,6 @@ class StepTwoBajajFDFragment : BaseFragment() {
"StepTwoResponse",
"-->" + Gson().toJson((activity as BajajFdMainActivity).createFDRequest)
)
// bajajFDInterface.stepTwoApi((activity as BajajFdMainActivity).createFDRequest)
// (activity as BajajFdMainActivity).stepTwoApi((activity as BajajFdMainActivity).createFDRequest)
createFDApi((activity as BajajFdMainActivity).createFDRequest)
}
}
@ -770,7 +771,7 @@ class StepTwoBajajFDFragment : BaseFragment() {
private fun ifscCodeCheckApi(ifsc: String) {
if (ifsc.length == 11) {
if (ifsc.length >8) {
stepTwoBajajFDViewModel.ifscCodeApi(ifsc, activity as BajajFdMainActivity)
stepTwoBajajFDViewModel.getifscCodeCheckMutableData.observe(viewLifecycleOwner) { response ->
when (response) {
@ -794,15 +795,25 @@ class StepTwoBajajFDFragment : BaseFragment() {
listOfIFSC
)
binding.edtIFSC.setAdapter(adapter)
}
binding.edtIFSC.setOnItemClickListener { _, _, position, _ ->
if (listOfIFSC.size > 0) {
binding.edtIFSC.setText(listOfIFSC[position])
binding.edtIFSC.setSelection(binding.edtIFSC.text.toString().length)
getIFSCDetailsApi(listOfIFSC[position])
binding.edtIFSC.setOnItemClickListener { _, _, position, _ ->
if (listOfIFSC.size > 0) {
val enteredText = binding.edtIFSC.getText()
Log.d("bankifsc $enteredText",enteredText.toString())
binding.edtIFSC.setText(listOfIFSC[position])
binding.edtIFSC.setSelection(binding.edtIFSC.text.toString().length)
getIFSCDetailsApi(enteredText.toString())
}
}
}
}
// 650 -> refreshToken()
else -> {
@ -835,7 +846,6 @@ class StepTwoBajajFDFragment : BaseFragment() {
}
private fun getIFSCDetailsApi(ifscCode: String) {
stepTwoBajajFDViewModel.ifscCodeDetailsApi(
ifscCode,
token,
@ -865,7 +875,6 @@ class StepTwoBajajFDFragment : BaseFragment() {
}
}
}
is Resource.Error -> {
response.message?.let { message ->
Common.showDialogValidation(activity as BajajFdMainActivity, message)
@ -876,6 +885,13 @@ class StepTwoBajajFDFragment : BaseFragment() {
}
is Resource.DataError -> {
response.errorCode?.let { errorCode ->
Common.showDialogValidation(activity as BajajFdMainActivity, errorCode.toString())
}
}
}
}
@ -1040,10 +1056,11 @@ class StepTwoBajajFDFragment : BaseFragment() {
)
binding.spTitle.setAdapter(adapter)
val titleText =
var titleText =
(activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.Client_Title
val newTitleText = "$titleText."
if (titleText?.isEmpty()!!) {
titleText="Mr."
if (titleText?.isEmpty()!! ) {
binding.spTitle.setText(
adapter.getItem(0)?.Value,
false


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

@ -110,7 +110,7 @@ class Common {
builder.setMessage(message)
builder.setCancelable(false)
if (activity != null) {
builder.setPositiveButton(activity.getString(R.string.ok)) { dialogInterface, _ ->
builder.setPositiveButton(activity.getString(R.string.Ok)) { dialogInterface, _ ->
dialogInterface.dismiss()
}
}
@ -121,7 +121,7 @@ class Common {
val builder = AlertDialog.Builder(activity)
builder.setMessage(message)
if (activity != null) {
builder.setPositiveButton(activity.getString(R.string.ok)) { dialogInterface, _ ->
builder.setPositiveButton(activity.getString(R.string.Ok)) { dialogInterface, _ ->
dialogInterface.dismiss()
}
builder.setNegativeButton(activity.getString(R.string.cancel)) { dialogInterface, _ ->


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

@ -1,19 +1,9 @@
package com.nivesh.production.bajajfd.viewModel
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.ViewModel
import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFiveBinding
import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepFourBinding
import com.nivesh.production.bajajfd.interfaces.BajajFDInterface
import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import com.nivesh.production.bajajfd.ui.fragment.StepFiveBajajFDFragment
import com.nivesh.production.bajajfd.ui.fragment.StepFourBajajFDFragment
class StepFiveBajajFDViewModel (private val mainRepository: MainRepository) : ViewModel() {
class StepFiveBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
}

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

@ -126,6 +126,7 @@ class StepTwoBajajFDViewModel(private val mainRepository: MainRepository) : View
}
val getifscCodeCheckMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun ifscCodeApi(ifsc : String,activity : Activity) = viewModelScope.launch(
Common.handleError(activity)
) {


+ 9
- 17
app/src/main/res/values-hi-rIN/strings.xml View File

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

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

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

Loading…
Cancel
Save

Powered by TurnKey Linux.