Browse Source

added manoj's code

PankajBranch
Hemant Khadase 2 years ago
parent
commit
63fd4b6da8
12 changed files with 231 additions and 67 deletions
  1. +6
    -2
      app/src/main/java/com/nivesh/production/bajajfd/BajajApplication.kt
  2. +29
    -2
      app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt
  3. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/interfaces/ApiInterface.kt
  4. +6
    -6
      app/src/main/java/com/nivesh/production/bajajfd/model/DocumentUpload.kt
  5. +1
    -1
      app/src/main/java/com/nivesh/production/bajajfd/model/ResponseXXXXXXXXXXXX.kt
  6. +5
    -0
      app/src/main/java/com/nivesh/production/bajajfd/model/UploadResponse.kt
  7. +2
    -2
      app/src/main/java/com/nivesh/production/bajajfd/repositories/MainRepository.kt
  8. +41
    -36
      app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
  9. +125
    -7
      app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
  10. +5
    -3
      app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt
  11. +2
    -0
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/BajajFDViewModel.kt
  12. +8
    -7
      app/src/main/java/com/nivesh/production/bajajfd/viewModel/StepThreeBajajFDViewModel.kt

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

@ -1,14 +1,18 @@
package com.nivesh.production.bajajfd
import android.app.Application
import android.content.Context
class BajajApplication : Application() {
private var mInstance: BajajApplication? = null
// private val mRequestQueue: RequestQueue? = null
companion object {
var appContext: Context? = null
}
override fun onCreate() {
super.onCreate()
mInstance = this;
mInstance = this
appContext = applicationContext
}
@Synchronized


+ 29
- 2
app/src/main/java/com/nivesh/production/bajajfd/api/ApiClient.kt View File

@ -1,13 +1,21 @@
package com.nivesh.production.bajajfd.api
import android.content.Context
import android.net.ConnectivityManager
import com.nivesh.production.bajajfd.BajajApplication
import com.nivesh.production.bajajfd.api.ApiClient.Companion.isNetworkAvailablee
import com.nivesh.production.bajajfd.interfaces.ApiInterface
import com.nivesh.production.bajajfd.util.Constants.Companion.BASE_URL
import okhttp3.Interceptor
import okhttp3.OkHttpClient
import okhttp3.Response
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.io.IOException
class ApiClient {
val context = BajajApplication.appContext
companion object {
private val client by lazy {
//lazy means we only initialize this here once
@ -17,7 +25,7 @@ class ApiClient {
//see the body of response
//create client for retrofit
val client = OkHttpClient.Builder()
.addInterceptor(logging)
.addInterceptor(ConnectVerifierInterceptor())
.retryOnConnectionFailure(true)
.build()
Retrofit.Builder()
@ -29,5 +37,24 @@ class ApiClient {
val getApiClient: ApiInterface by lazy {
client.create(ApiInterface::class.java)
}
fun isNetworkAvailablee(): Boolean {
val connectivityManager =
BajajApplication.appContext?.getSystemService(Context.CONNECTIVITY_SERVICE) as? ConnectivityManager
return connectivityManager?.activeNetworkInfo?.isConnected == true
}
}
}
}
class ConnectVerifierInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): okhttp3.Response {
// if (!isNetworkAvailablee()) {
// throw IOException("No Network Available!")
// }
val request = chain.request()
return chain.proceed(request)
}
}

+ 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")
suspend fun documentsUpload(
@Body requestBody: RequestBody,
@Body requestBody: DocumentUpload,
@Header("token") token: String
): 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
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
)

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

@ -1,7 +1,7 @@
package com.nivesh.production.bajajfd.model
data class ResponseXXXXXXXXXXXX(
val Errors: Any,
val Errors: List<Errors>,
val FDDataResponse: FDDataResponse,
val Message: String,
val Status: String,


+ 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) =
apiInterface.createFDApp(createFDRequest, token)
suspend fun documentsUploadResponse(getRatesRequest: GetRatesRequest, token: String) =
apiInterface.getRates(getRatesRequest, token)
suspend fun documentsUploadResponse(getRatesRequest: DocumentUpload, token: String) =
apiInterface.documentsUpload(getRatesRequest, token)
suspend fun saveFDOtherDataResponse(getRatesRequest: GetRatesRequest, token: String) =
apiInterface.getRates(getRatesRequest, token)


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

@ -108,42 +108,47 @@ class BajajFdMainActivity : BaseActivity(), BajajFDInterface {
}
private fun getStepsCountApi() {
val fdStepsCount = FDStepsCountRequest()
fdStepsCount.FDProvider = getString(com.nivesh.production.bajajfd.R.string.bajaj)
fdStepsCount.NiveshClientCode = "8872"
viewModel.getStepsCount(fdStepsCount, token)
viewModel.getStepsCountMutableData.observe(this) { response ->
when (response) {
is Resource.Success -> {
Log.e("response", "-->$response")
val stepsCountResponse: StepsCountResponse =
Gson().fromJson(response.data?.toString(), StepsCountResponse::class.java)
stepsCountResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
stepCount = stepsCountResponse.Response.StepsCount
getClientDetailsApi(stepsCountResponse.Response.StepsCount)
}
650 -> refreshToken(fdStepsCount)
else -> {
showDialogValidation(
this@BajajFdMainActivity,
stepsCountResponse.Response.Errors[0].ErrorMessage
)
}
}
}
}
is Resource.Error -> {
response.message?.let { message ->
showDialogValidation(this@BajajFdMainActivity, message)
}
}
is Resource.Loading -> {
}
}
}
if (Common.isNetworkAvailable(this)) {
val fdStepsCount = FDStepsCountRequest()
fdStepsCount.FDProvider = getString(com.nivesh.production.bajajfd.R.string.bajaj)
fdStepsCount.NiveshClientCode = "8872"
viewModel.getStepsCount(fdStepsCount, token)
viewModel.getStepsCountMutableData.observe(this) { response ->
when (response) {
is Resource.Success -> {
Log.e("response", "-->$response")
val stepsCountResponse: StepsCountResponse =
Gson().fromJson(
response.data?.toString(),
StepsCountResponse::class.java
)
stepsCountResponse.Response.StatusCode.let { code ->
when (code) {
200 -> {
stepCount = stepsCountResponse.Response.StepsCount
getClientDetailsApi(stepsCountResponse.Response.StepsCount)
}
650 -> refreshToken(fdStepsCount)
else -> {
showDialogValidation(
this@BajajFdMainActivity,
stepsCountResponse.Response.Errors[0].ErrorMessage
)
}
}
}
}
is Resource.Error -> {
response.message?.let { message ->
showDialogValidation(this@BajajFdMainActivity, message)
}
}
is Resource.Loading -> {
}
}
}
}
}
private fun refreshToken(fdStepsCount: FDStepsCountRequest) {


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

@ -1,13 +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
@ -16,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
@ -35,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 : BaseFragment() {
@ -47,6 +56,7 @@ class StepThreeBajajFDFragment : BaseFragment() {
private lateinit var stepThreeBajajFDViewModel: StepThreeBajajFDViewModel
private var uniqueId: String? = ""
private lateinit var dialog: Dialog
private var front: String = ""
companion object {
fun getInstance(fdInterface: BajajFDInterface): StepThreeBajajFDFragment {
@ -71,7 +81,7 @@ class StepThreeBajajFDFragment : BaseFragment() {
if (isSuccess) {
latestTmpUri?.let { uri ->
// binding.iv.setImageURI(uri)
uploadDocument()
uploadDocument(uri)
}
}
}
@ -97,10 +107,11 @@ class StepThreeBajajFDFragment : BaseFragment() {
stepThreeBajajFDViewModel = (activity as BajajFdMainActivity).stepThreeBajajFDViewModel
binding.btnNext.setOnClickListener {
// if (validate()) {
if (validate()) {
uploadDocApi()
//
bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest)
// }
// bajajFDInterface.stepThreeApi((activity as BajajFdMainActivity).createFDRequest)
}
}
binding.btnBack.setOnClickListener {
(activity as BajajFdMainActivity).binding.viewPager.currentItem = 1
@ -127,6 +138,30 @@ class StepThreeBajajFDFragment : BaseFragment() {
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)
@ -222,9 +257,93 @@ class StepThreeBajajFDFragment : BaseFragment() {
binding.btnAadhaarFrontUpload.visibility = View.VISIBLE
}
private fun uploadDocument() {
private fun uploadDocument(uri: Uri) {
if (Common.isNetworkAvailable(activity as BajajFdMainActivity)) {
val documentUpload = DocumentUpload()
val value: Editable? = binding.spDocType.text
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 = getString(R.string.bajaj)
du.ImageEncodeToBase64 = front //"data:image/png;base64"
du.NiveshClientCode = (activity as BajajFdMainActivity).getClientDetailsResponse.ObjectResponse?.clientDetails?.clientMasterMFD?.CLIENT_CODE
du.UniqueId = uniqueId
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 -> {
Common.showDialogValidation(
activity as BajajFdMainActivity,
getUploadResponse.Response.Message
)
}
}
}
}
is Resource.Error -> {
response.message?.let { message ->
Common.showDialogValidation(activity as BajajFdMainActivity, message)
}
}
is Resource.Loading -> {
}
}
}
}
}
@ -286,7 +405,7 @@ class StepThreeBajajFDFragment : BaseFragment() {
private fun validate(): Boolean {
return false
return true
}
private fun takeImage() {
@ -313,7 +432,6 @@ class StepThreeBajajFDFragment : BaseFragment() {
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null


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

@ -9,6 +9,7 @@ import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Build
import android.provider.ContactsContract
import android.util.Log
import android.util.Patterns
import com.google.android.material.textfield.MaterialAutoCompleteTextView
import com.google.android.material.textfield.TextInputEditText
@ -16,8 +17,11 @@ import com.google.android.material.textfield.TextInputLayout
import com.google.gson.JsonObject
import com.nivesh.production.bajajfd.R
import com.nivesh.production.bajajfd.ui.activity.BaseActivity
import okhttp3.Interceptor.*
import retrofit2.HttpException
import retrofit2.Response
import java.io.IOException
import java.net.SocketTimeoutException
import java.text.SimpleDateFormat
import java.util.*
import java.util.regex.Matcher
@ -195,13 +199,11 @@ class Common {
return when (t) {
is IOException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause))
is HttpException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause))
is SocketTimeoutException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause))
else -> Resource.Error(t.localizedMessage?.toString() ?: "")
}
}
return Resource.Error(response.message())
}
}
}

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

@ -1,5 +1,6 @@
package com.nivesh.production.bajajfd.viewModel
import android.util.Log
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
@ -18,6 +19,7 @@ class BajajFDViewModel(private val mainRepository: MainRepository) : ViewModel()
fun getStepsCount(requestBody: FDStepsCountRequest, token: String) = viewModelScope.launch {
getStepsCountMutableData.postValue(Resource.Loading())
val response = mainRepository.getStepsCountResponse(requestBody, token)
Log.e("response", "-->"+response)
getStepsCountMutableData.postValue(handleRatesResponse(response))
}


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

@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
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
@ -13,13 +14,6 @@ import kotlinx.coroutines.launch
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))
}
val getTitleMutableData: MutableLiveData<Resource<JsonObject>> = MutableLiveData()
fun titleApi(getCodeRequest: GetCodeRequest, token: String) = viewModelScope.launch {
getTitleMutableData.postValue(Resource.Loading())
@ -27,5 +21,12 @@ class StepThreeBajajFDViewModel(private val mainRepository: MainRepository) : Vi
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(handleRatesResponse(response))
}
}

Loading…
Cancel
Save

Powered by TurnKey Linux.