Browse Source

upload push

PankajBranch
Manoj 2 years ago
parent
commit
366f37aff0
10 changed files with 177 additions and 28 deletions
  1. +2
    -1
      app/src/main/AndroidManifest.xml
  2. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt
  3. +6
    -6
      app/src/main/java/com/nivesh/production/bajajfd/model/DocumentUpload.kt
  4. +8
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt
  5. +5
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/UploadResponse.kt
  6. +2
    -2
      app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt
  7. +5
    -5
      app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
  8. +111
    -2
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
  9. +20
    -3
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepTwoBajajFDFragment.kt
  10. +17
    -8
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt

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

@ -6,7 +6,7 @@
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="ANDROID.PERMISSION.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.Permission.READ_EXTERNAL_STORAGE"/>
<uses-feature <uses-feature
android:name="android.hardware.camera" android:name="android.hardware.camera"
@ -20,6 +20,7 @@
<application <application
android:allowBackup="true" android:allowBackup="true"
android:requestLegacyExternalStorage="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"


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

@ -28,7 +28,7 @@ interface ApiInterface {
@POST("WebApi_Bajaj/api/DocumentsUpload") @POST("WebApi_Bajaj/api/DocumentsUpload")
suspend fun documentsUpload( suspend fun documentsUpload(
@Body requestBody: RequestBody,
@Body documentUpload: DocumentUpload,
@Header("token") token: String @Header("token") token: String
): Response<JsonObject> ): Response<JsonObject>


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

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

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

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

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

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

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

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


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

@ -352,13 +352,13 @@ class BajajFdMainActivity : AppCompatActivity(), BajajFDInterface {
// step 2 response // step 2 response
override fun stepTwoApi(data: CreateFDRequest) { override fun stepTwoApi(data: CreateFDRequest) {
Log.e("stepTwoApi", " response ---> $data") 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 // call create fd api bypass step 3
createFDApi(data , 2) createFDApi(data , 2)
}
// }
} }


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

@ -1,14 +1,18 @@
package com.nivesh.production.bajajfd.ui.fragment package com.nivesh.production.bajajfd.ui.fragment
import android.Manifest import android.Manifest
import android.annotation.SuppressLint
import android.app.ActionBar.LayoutParams import android.app.ActionBar.LayoutParams
import android.app.Dialog import android.app.Dialog
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.database.Cursor
import android.graphics.Bitmap import android.graphics.Bitmap
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.MediaStore import android.provider.MediaStore
import android.provider.OpenableColumns
import android.text.Editable import android.text.Editable
import android.util.Base64
import android.util.Log import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -17,6 +21,7 @@ import android.widget.AdapterView
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import android.widget.Toast
import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.app.ActivityCompat import androidx.core.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.util.Resource
import com.nivesh.production.bajajfd.viewModel.StepThreeBajajFDViewModel import com.nivesh.production.bajajfd.viewModel.StepThreeBajajFDViewModel
import java.io.File import java.io.File
import java.io.FileInputStream
import java.io.IOException
import java.io.InputStream
class StepThreeBajajFDFragment : Fragment() { class StepThreeBajajFDFragment : Fragment() {
@ -48,6 +56,7 @@ class StepThreeBajajFDFragment : Fragment() {
private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel
private lateinit var dialog: Dialog private lateinit var dialog: Dialog
private lateinit var front: String
companion object { companion object {
fun getInstance(fdInterface: BajajFDInterface): StepThreeBajajFDFragment { fun getInstance(fdInterface: BajajFDInterface): StepThreeBajajFDFragment {
@ -99,6 +108,7 @@ class StepThreeBajajFDFragment : Fragment() {
binding.btnNext.setOnClickListener { binding.btnNext.setOnClickListener {
if (validate()) { if (validate()) {
uploadDocApi()
// //
// bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest) // bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest)
} }
@ -128,6 +138,30 @@ class StepThreeBajajFDFragment : Fragment() {
return root 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() { private fun selectImage() {
dialog = Dialog(activity as BajajFdMainActivity) dialog = Dialog(activity as BajajFdMainActivity)
dialog.setContentView(R.layout.camera_gallery_layout) dialog.setContentView(R.layout.camera_gallery_layout)
@ -227,12 +261,87 @@ class StepThreeBajajFDFragment : Fragment() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val documentUpload = DocumentUpload() val documentUpload = DocumentUpload()
val value: Editable? = binding.spDocType.text 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) } var file_path: File? = uri.path?.let { File(it) }
encodedFileToBase64(file_ex)
Log.e("check_data_front", value.toString()+"\n"+front)
// documentUpload.DocumentType = // 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() { private fun docTypeApi() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val getCodeRequest = GetCodeRequest() val getCodeRequest = GetCodeRequest()
@ -286,7 +395,7 @@ class StepThreeBajajFDFragment : Fragment() {
private fun validate(): Boolean { private fun validate(): Boolean {
return false
return true
} }
private fun takeImage() { private fun takeImage() {


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

@ -68,6 +68,7 @@ class StepTwoBajajFDFragment : Fragment() {
private lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel private lateinit var stepTwoBajajFDViewModel: StepTwoBajajFDViewModel
private lateinit var bankListAdapter: BankListAdapter private lateinit var bankListAdapter: BankListAdapter
private lateinit var stateObject: DataObject private lateinit var stateObject: DataObject
private var retryCount: Int = 0
companion object { companion object {
fun getInstance(fdInterface: BajajFDInterface): StepTwoBajajFDFragment { fun getInstance(fdInterface: BajajFDInterface): StepTwoBajajFDFragment {
@ -969,6 +970,7 @@ class StepTwoBajajFDFragment : Fragment() {
getCodeResponse.Response.StatusCode.let { code -> getCodeResponse.Response.StatusCode.let { code ->
when (code) { when (code) {
200 -> { 200 -> {
retryCount = 0
listOfTitle = getCodeResponse.Response.GetCodesList listOfTitle = getCodeResponse.Response.GetCodesList
if (listOfTitle.isNotEmpty()) { if (listOfTitle.isNotEmpty()) {
val adapter = ArrayAdapter( val adapter = ArrayAdapter(
@ -1022,8 +1024,9 @@ class StepTwoBajajFDFragment : Fragment() {
stateListApi() 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() { private fun genderApi() {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) { if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val getCodeRequest = GetCodeRequest() val getCodeRequest = GetCodeRequest()
@ -1059,6 +1070,7 @@ class StepTwoBajajFDFragment : Fragment() {
getCodeResponse.Response.StatusCode.let { code -> getCodeResponse.Response.StatusCode.let { code ->
when (code) { when (code) {
200 -> { 200 -> {
retryCount = 0
listOfGender = getCodeResponse.Response.GetCodesList listOfGender = getCodeResponse.Response.GetCodesList
if (listOfGender.isNotEmpty()) { if (listOfGender.isNotEmpty()) {
val adapter = ArrayAdapter( val adapter = ArrayAdapter(
@ -1074,7 +1086,12 @@ class StepTwoBajajFDFragment : Fragment() {
} }
} }
// 650 -> refreshToken() // 650 -> refreshToken()
else -> {}
else -> {
retryCount++
if(retryCount<=2){
genderApi()
}
}
} }
} }
} }


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

@ -2,22 +2,16 @@ package com.nivesh.production.bajajfd.viewModel
import androidx.lifecycle.* import androidx.lifecycle.*
import com.google.gson.JsonObject 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.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
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import retrofit2.Response
class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() { class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : ViewModel() {
private val getRatesMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun documentsUpload(getRatesRequest: GetRatesRequest, token: String) = viewModelScope.launch {
getRatesMutableData.postValue(Resource.Loading())
val response = mainRepository.documentsUploadResponse(getRatesRequest, token)
getRatesMutableData.postValue(handleRatesResponse(response))
}
private fun handleRatesResponse(response: retrofit2.Response<JsonObject>): Resource<JsonObject> { private fun handleRatesResponse(response: retrofit2.Response<JsonObject>): Resource<JsonObject> {
if (response.isSuccessful) { if (response.isSuccessful) {
response.body()?.let { resultResponse -> response.body()?.let { resultResponse ->
@ -25,7 +19,15 @@ class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : Vi
} }
} }
return Resource.Error(response.message()) return Resource.Error(response.message())
}
private fun handleUploadResponse(response: retrofit2.Response<JsonObject>): Resource<JsonObject> {
if(response.isSuccessful){
response.body()?.let { resultResponse ->
return Resource.Success(resultResponse)
}
}
return Resource.Error(response.message())
} }
val getTitleMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData() val getTitleMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
@ -35,5 +37,12 @@ class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : Vi
getTitleMutableData.postValue(handleRatesResponse(response)) getTitleMutableData.postValue(handleRatesResponse(response))
} }
val getDocumentUploadMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun documentsUpload(documentUpload: DocumentUpload, token: String) = viewModelScope.launch {
getDocumentUploadMutableData.postValue(Resource.Loading())
val response = mainRepository.documentsUploadResponse(documentUpload, token)
getDocumentUploadMutableData.postValue(handleUploadResponse(response))
}
} }

Loading…
Cancel
Save

Powered by TurnKey Linux.