diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ba0157d..b149776 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,7 +6,7 @@
-
+
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/DocumentUpload.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/DocumentUpload.kt
index fd4ee1d..e0f8154 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/model/DocumentUpload.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/model/DocumentUpload.kt
@@ -1,10 +1,10 @@
package com.nivesh.production.bajajfd.model
data class DocumentUpload(
- val Description: String? = null,
- val DocumentType: String? = null,
- val FDProvider: String? = null,
- val ImageEncodeToBase64: String? = null,
- val NiveshClientCode: String? = null,
- val UniqueId: String? = null
+ var Description: String? = null,
+ var DocumentType: String? = null,
+ var FDProvider: String? = null,
+ var ImageEncodeToBase64: String? = null,
+ var NiveshClientCode: String? = null,
+ var UniqueId: String? = null
)
\ No newline at end of file
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt
new file mode 100644
index 0000000..972a79e
--- /dev/null
+++ b/app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt
@@ -0,0 +1,8 @@
+package com.nivesh.production.bajajfd.model
+
+data class ResponseXXXXXXXXXXXX(
+ val Errors: Any,
+ val Message: String,
+ val Status: String,
+ val StatusCode: Int
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/model/UploadResponse.kt b/app/src/main/java/com/nivesh/production/bajajfd/model/UploadResponse.kt
new file mode 100644
index 0000000..a9a1560
--- /dev/null
+++ b/app/src/main/java/com/nivesh/production/bajajfd/model/UploadResponse.kt
@@ -0,0 +1,5 @@
+package com.nivesh.production.bajajfd.model
+
+data class UploadResponse(
+ val Response: ResponseXXXXXXXXXXXX
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt
index 65beecc..eaa60f1 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt
@@ -26,8 +26,8 @@ class MainRepository constructor(private val apiInterface: ApiInterface) {
suspend fun createFDKYCResponse(createFDRequest: CreateFDRequest, token: String) =
apiInterface.createFDApp(createFDRequest, token)
- suspend fun documentsUploadResponse(getRatesRequest: GetRatesRequest, token: String) =
- apiInterface.getRates(getRatesRequest, token)
+ suspend fun documentsUploadResponse(documentUpload: DocumentUpload, token: String) =
+ apiInterface.documentsUpload(documentUpload, token)
suspend fun saveFDOtherDataResponse(getRatesRequest: GetRatesRequest, token: String) =
apiInterface.getRates(getRatesRequest, token)
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
index 5ea057e..3cdc734 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
@@ -352,13 +352,13 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
// step 2 response
override fun stepTwoApi(data: CreateFDRequest) {
Log.e("stepTwoApi", " response ---> $data")
- if (stepCount == 4) {
- // go to step 3 image Upload
- binding.viewPager.currentItem = 2
- }else{
+// if (stepCount == 4) {
+// // go to step 3 image Upload
+// binding.viewPager.currentItem = 2
+// }else{
// call create fd api bypass step 3
createFDApi(data , 2)
- }
+// }
}
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
index 499d6bd..18b7f85 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
@@ -1,14 +1,18 @@
package com.nivesh.production.bajajfd.ui.fragment
import android.Manifest
+import android.annotation.SuppressLint
import android.app.ActionBar.LayoutParams
import android.app.Dialog
import android.content.pm.PackageManager
+import android.database.Cursor
import android.graphics.Bitmap
import android.net.Uri
import android.os.Bundle
import android.provider.MediaStore
+import android.provider.OpenableColumns
import android.text.Editable
+import android.util.Base64
import android.util.Log
import android.view.LayoutInflater
import android.view.View
@@ -17,6 +21,7 @@ import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.ImageView
import android.widget.TextView
+import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.app.ActivityCompat
@@ -36,6 +41,9 @@ import com.nivesh.production.bajajfd.util.Constants
import com.nivesh.production.bajajfd.util.Resource
import com.nivesh.production.bajajfd.viewModel.StepThreeBajajFDViewModel
import java.io.File
+import java.io.FileInputStream
+import java.io.IOException
+import java.io.InputStream
class StepThreeBajajFDFragment : Fragment() {
@@ -48,6 +56,7 @@ class StepThreeBajajFDFragment : Fragment() {
private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel
private lateinit var dialog: Dialog
+ private lateinit var front: String
companion object {
fun getInstance(fdInterface: BajajFDInterface): StepThreeBajajFDFragment {
@@ -99,6 +108,7 @@ class StepThreeBajajFDFragment : Fragment() {
binding.btnNext.setOnClickListener {
if (validate()) {
+ uploadDocApi()
//
// bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest)
}
@@ -128,6 +138,30 @@ class StepThreeBajajFDFragment : Fragment() {
return root
}
+ @SuppressLint("Range")
+ fun getFileName(uri: Uri): String? {
+ var result: String? = null
+ if (uri.scheme == "content") {
+ val cursor: Cursor =
+ requireActivity().getContentResolver().query(uri, null, null, null, null)!!
+ try {
+ if (cursor != null && cursor.moveToFirst()) {
+ result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME))
+ }
+ } finally {
+ cursor.close()
+ }
+ }
+ if (result == null) {
+ result = uri.path
+ val cut = result!!.lastIndexOf('/')
+ if (cut != -1) {
+ result = result.substring(cut + 1)
+ }
+ }
+ return result
+ }
+
private fun selectImage() {
dialog = Dialog(activity as BajajFdMainActivity)
dialog.setContentView(R.layout.camera_gallery_layout)
@@ -227,12 +261,87 @@ class StepThreeBajajFDFragment : Fragment() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val documentUpload = DocumentUpload()
val value: Editable? = binding.spDocType.text
- Log.e("check_Data", value.toString())
+ val file_dir:File = requireActivity().cacheDir
+ val file_ex = File(file_dir.toString().plus("/").plus(getFileName(uri)))
var file_path: File? = uri.path?.let { File(it) }
+ encodedFileToBase64(file_ex)
+
+ Log.e("check_data_front", value.toString()+"\n"+front)
// documentUpload.DocumentType =
}
}
+ private fun encodedFileToBase64(fileName: File?) {
+ front = try {
+ val bytes: ByteArray? = fileName?.let { loadFile(it) }
+ Base64.encodeToString(bytes, Base64.DEFAULT).trim { it <= ' ' }
+ .replace("\n".toRegex(), "").replace("\\s+".toRegex(), "")
+ } catch (e: Exception) {
+ e.printStackTrace()
+ ""
+ }
+ }
+
+ @Throws(IOException::class)
+ private fun loadFile(file: File): ByteArray? {
+ val inputStream: InputStream = FileInputStream(file)
+ val length = file.length()
+ val bytes = ByteArray(length.toInt())
+ var offset = 0
+ var numRead = 0
+ while (offset < bytes.size && inputStream.read(bytes, offset, bytes.size - offset).also {
+ numRead = it
+ } >= 0) {
+ offset += numRead
+ }
+ if (offset < bytes.size) {
+ throw IOException("Could not completely read file " + file.name)
+ }
+ inputStream.close()
+ return bytes
+ }
+
+ private fun uploadDocApi(){
+ if(Common.isNetworkAvailable((activity as BajajFdMainActivity))){
+ val du = DocumentUpload()
+ du.Description = "PAN"
+ du.DocumentType = "PAN"
+ du.FDProvider = "Bajaj"
+ du.ImageEncodeToBase64 = front //"data:image/png;base64"
+ du.NiveshClientCode = "8872"
+ du.UniqueId = "5463772498"
+ stepThreeBajajFDViewModel.documentsUpload(du,Constants.token)
+ stepThreeBajajFDViewModel.getDocumentUploadMutableData.observe(viewLifecycleOwner){ response ->
+ when (response){
+ is Resource.Success ->{
+ Log.e("response", "-->$response")
+ val getUploadResponse: UploadResponse =
+ Gson().fromJson(response.data?.toString(),UploadResponse::class.java)
+ getUploadResponse.Response.StatusCode.let { code ->
+ when (code) {
+ 200 -> {
+ Log.e("check_upload_res",response.message.toString())
+ }
+ // 650 -> refreshToken()
+ else -> {}
+ }
+ }
+ }
+
+ is Resource.Error -> {
+ response.message?.let { message ->
+ Log.e(" ", "An error occurred:$message")
+ }
+ }
+ is Resource.Loading -> {
+
+ }
+ }
+ }
+
+ }
+ }
+
private fun docTypeApi() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val getCodeRequest = GetCodeRequest()
@@ -286,7 +395,7 @@ class StepThreeBajajFDFragment : Fragment() {
private fun validate(): Boolean {
- return false
+ return true
}
private fun takeImage() {
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt
index ce8d2a9..432b4de 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt
@@ -68,6 +68,7 @@ class StepTwoBajajFDFragment : Fragment() {
private lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel
private lateinit var bankListAdapter: BankListAdapter
private lateinit var stateObject: DataObject
+ private var retryCount: Int = 0
companion object {
fun getInstance(fdInterface: BajajFDInterface): StepTwoBajajFDFragment {
@@ -969,6 +970,7 @@ class StepTwoBajajFDFragment : Fragment() {
getCodeResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
+ retryCount = 0
listOfTitle = getCodeResponse.Response.GetCodesList
if (listOfTitle.isNotEmpty()) {
val adapter = ArrayAdapter(
@@ -1022,8 +1024,9 @@ class StepTwoBajajFDFragment : Fragment() {
stateListApi()
}
- // 650 -> refreshToken()
- else -> {}
+ 650 -> refreshToken()
+ else -> {
+ }
}
}
}
@@ -1042,6 +1045,14 @@ class StepTwoBajajFDFragment : Fragment() {
}
}
+ private fun refreshToken() {
+// retryCount++
+// if(retryCount<=2){
+// titleApi()
+// }
+
+ }
+
private fun genderApi() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val getCodeRequest = GetCodeRequest()
@@ -1059,6 +1070,7 @@ class StepTwoBajajFDFragment : Fragment() {
getCodeResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
+ retryCount = 0
listOfGender = getCodeResponse.Response.GetCodesList
if (listOfGender.isNotEmpty()) {
val adapter = ArrayAdapter(
@@ -1074,7 +1086,12 @@ class StepTwoBajajFDFragment : Fragment() {
}
}
// 650 -> refreshToken()
- else -> {}
+ else -> {
+ retryCount++
+ if(retryCount<=2){
+ genderApi()
+ }
+ }
}
}
}
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt
index ed0803b..ff04ab3 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt
@@ -2,22 +2,16 @@ package com.nivesh.production.bajajfd.viewModel
import androidx.lifecycle.*
import com.google.gson.JsonObject
+import com.nivesh.production.bajajfd.model.DocumentUpload
import com.nivesh.production.bajajfd.model.GetCodeRequest
import com.nivesh.production.bajajfd.model.GetRatesRequest
import com.nivesh.production.bajajfd.repositories.MainRepository
import com.nivesh.production.bajajfd.util.Resource
import kotlinx.coroutines.launch
+import retrofit2.Response
class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
- private val getRatesMutableData: MutableLiveData> = MutableLiveData()
-
- fun documentsUpload(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch {
- getRatesMutableData.postValue(Resource.Loading())
- val response = mainRepository.documentsUploadResponse(getRatesRequest, token)
- getRatesMutableData.postValue(handleRatesResponse(response))
- }
-
private fun handleRatesResponse(response: retrofit2.Response): Resource {
if (response.isSuccessful) {
response.body()?.let { resultResponse ->
@@ -25,7 +19,15 @@ class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : Vi
}
}
return Resource.Error(response.message())
+ }
+ private fun handleUploadResponse(response: retrofit2.Response): Resource {
+ if(response.isSuccessful){
+ response.body()?.let { resultResponse ->
+ return Resource.Success(resultResponse)
+ }
+ }
+ return Resource.Error(response.message())
}
val getTitleMutableData: MutableLiveData> = MutableLiveData()
@@ -35,5 +37,12 @@ class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : Vi
getTitleMutableData.postValue(handleRatesResponse(response))
}
+ val getDocumentUploadMutableData: MutableLiveData> = MutableLiveData()
+ fun documentsUpload(documentUpload: DocumentUpload, token: String) = viewModelScope.launch {
+ getDocumentUploadMutableData.postValue(Resource.Loading())
+ val response = mainRepository.documentsUploadResponse(documentUpload, token)
+ getDocumentUploadMutableData.postValue(handleUploadResponse(response))
+ }
+
}
\ No newline at end of file