diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9f65de3..4b2c4f3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,8 +4,6 @@
-
-
@@ -13,7 +11,7 @@
+ android:required="true" />
@@ -29,6 +27,7 @@
android:label="@string/appName"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
+ android:requestLegacyExternalStorage="true"
android:theme="@style/Theme.NiveshFDSDK"
tools:targetApi="31">
diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/adapters1/NewDistributorSignStepOneAdapter.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/adapters1/NewDistributorSignStepOneAdapter.kt
index d91afc8..6ad5135 100644
--- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/adapters1/NewDistributorSignStepOneAdapter.kt
+++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/adapters1/NewDistributorSignStepOneAdapter.kt
@@ -5,16 +5,22 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.CheckBox
+import android.widget.LinearLayout
+import android.widget.RadioButton
+import android.widget.RadioGroup
import android.widget.RelativeLayout
import android.widget.TextView
+import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
+import com.google.android.material.textfield.TextInputLayout
import com.nivesh.production.niveshfd.R
+import com.nivesh.production.niveshfd.partnerOnBoarding.ui.fragments1.NewDistributorSignStepOne
class NewDistributorSignStepOneAdapter(private var listData: MutableList) :
RecyclerView.Adapter() {
private var context: Context? = null
private var isPosBroker: Boolean? = false
- private var isPosInsurer: Boolean? = false
+ var isPosInsurer: Boolean? = false
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
context = parent.context
@@ -30,43 +36,65 @@ class NewDistributorSignStepOneAdapter(private var listData: MutableList
if (isChecked) {
if (listData[position] == "Insurance") holder.rlInsurance.visibility = View.VISIBLE
else holder.rlInsurance.visibility = View.GONE
+ if (listData[position] == "Other") holder.tlOtherName.visibility = View.VISIBLE
+ else holder.tlOtherName.visibility = View.GONE
+
+ NewDistributorSignStepOne.listMapData = mutableMapOf(position to listData[position])
} else {
- holder.rlInsurance.visibility = View.GONE
+ if (listData[position] == "Insurance")
+ holder.rlInsurance.visibility = View.GONE
+ if (listData[position] == "Other")
+ holder.tlOtherName.visibility = View.GONE
+
+ NewDistributorSignStepOne.listMapData?.remove(position)
}
}
holder.tvPosInsurer.setOnClickListener {
-// isPosInsurer?.let { it1 -> setSelected(holder.tvPosInsurer, it1, 0) }
+ if (isPosInsurer == true) {
+ holder.tvPosInsurer.setBackgroundResource(R.drawable.round_corner_grey_button)
+ holder.tvPosInsurer.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0)
+ holder.tvPosInsurer.compoundDrawablePadding = 0
+ isPosInsurer = false
+ } else {
+ holder.tvPosInsurer.setBackgroundResource(R.drawable.round_corner_grey_button_fill)
+ holder.tvPosInsurer.setCompoundDrawablesWithIntrinsicBounds(
+ 0,
+ 0,
+ R.drawable.svg_tik,
+ 0
+ )
+ holder.tvPosInsurer.compoundDrawablePadding = 20
+ isPosInsurer = true
+ }
}
holder.tvPOSBroker.setOnClickListener {
-// isPosBroker?.let { it1 -> setSelected(holder.tvPOSBroker, it1, 1) }
- setSelected(holder.tvPOSBroker,isPosBroker,1)
+ if (isPosBroker == true) {
+ holder.tvPOSBroker.setBackgroundResource(R.drawable.round_corner_grey_button)
+ holder.tvPOSBroker.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0)
+ holder.tvPOSBroker.compoundDrawablePadding = 0
+ isPosBroker = false
+ } else {
+ holder.tvPOSBroker.setBackgroundResource(R.drawable.round_corner_grey_button_fill)
+ holder.tvPOSBroker.setCompoundDrawablesWithIntrinsicBounds(
+ 0,
+ 0,
+ R.drawable.svg_tik,
+ 0
+ )
+ holder.tvPOSBroker.compoundDrawablePadding = 20
+ isPosBroker = true
+ }
}
- }
- private fun setSelected(textView: TextView, check: Boolean?, pos: Int) {
- if (check == true) {
- textView.setCompoundDrawablesWithIntrinsicBounds(
- 0,
- 0,
- 0,
- 0
- )
- textView.compoundDrawablePadding = 0
- if(pos==0) isPosBroker = false
- else isPosInsurer = false
- } else {
- textView.setCompoundDrawablesWithIntrinsicBounds(
- 0,
- 0,
- R.drawable.svg_tik,
- 0
- )
- textView.compoundDrawablePadding = 20
- if(pos==0) isPosBroker = true
- else isPosInsurer = true
+ holder.radioGroup.setOnCheckedChangeListener { group, checkedId ->
+ var rb: RadioButton = group.findViewById(checkedId)
+ if(rb.text.equals("Yes"))
+ holder.llPOS.visibility = View.VISIBLE
+ else holder.llPOS.visibility = View.GONE
}
+
}
override fun getItemCount(): Int {
@@ -78,5 +106,8 @@ class NewDistributorSignStepOneAdapter(private var listData: MutableList
val rlInsurance: RelativeLayout = itemView.findViewById(R.id.rlInsurance)
val tvPosInsurer: TextView = itemView.findViewById(R.id.tvPosInsurer)
val tvPOSBroker: TextView = itemView.findViewById(R.id.tvPOSBroker)
+ val tlOtherName: TextInputLayout = itemView.findViewById(R.id.tlOtherName)
+ val radioGroup: RadioGroup = itemView.findViewById(R.id.radioGroup)
+ val llPOS: LinearLayout = itemView.findViewById(R.id.llPOS)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/SignUpActivity.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/SignUpActivity.kt
index 56d2177..1e81bbb 100644
--- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/SignUpActivity.kt
+++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/activities1/SignUpActivity.kt
@@ -1,15 +1,13 @@
package com.nivesh.production.niveshfd.partnerOnBoarding.ui.activities1
-import android.os.Build
import android.os.Bundle
-import android.window.OnBackInvokedDispatcher
-import androidx.activity.OnBackPressedCallback
+import android.util.Log
+import androidx.fragment.app.FragmentManager
import com.nivesh.production.niveshfd.R
import com.nivesh.production.niveshfd.databinding.ActivitySignupBinding
import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity
import com.nivesh.production.niveshfd.partnerOnBoarding.ui.fragments1.SignUpFragment
-
class SignUpActivity : BaseActivity() {
lateinit var binding: ActivitySignupBinding
var type : Int? = null
@@ -20,31 +18,31 @@ class SignUpActivity : BaseActivity() {
}
private fun init() {
- type = intent.getIntExtra("type", 0);
+ type = intent.getIntExtra("type", 0)
binding = ActivitySignupBinding.inflate(layoutInflater)
binding.apply {
setContentView(this.root)
}
+ val bundle = Bundle()
+ bundle.putInt("type", type!!)
+ val fragment = SignUpFragment()
+ fragment.arguments = bundle
+
supportFragmentManager.beginTransaction()
- .add(R.id.signUpContainer, SignUpFragment())
+ .add(R.id.signUpContainer, fragment)
.commit()
}
-// @Deprecated("Deprecated in Java")
+
// override fun onBackPressed() {
-// if (Build.VERSION.SDK_INT >= 33) {
-// onBackInvokedDispatcher.registerOnBackInvokedCallback(
-// OnBackInvokedDispatcher.PRIORITY_DEFAULT
-// ) {
-// exitOnBackPressed()
-// }
+// val fm: FragmentManager = supportFragmentManager
+// if (fm.backStackEntryCount > 0) {
+// Log.i("MainActivity", "popping backstack")
+// fm.popBackStack()
// } else {
-// onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
-// override fun handleOnBackPressed() {
-// exitOnBackPressed()
-// }
-// })
+// Log.i("MainActivity", "nothing on backstack, calling super")
+// super.onBackPressed()
// }
// }
diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/AlmostThereFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/AlmostThereFragment.kt
index d3a049c..b429e24 100644
--- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/AlmostThereFragment.kt
+++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/AlmostThereFragment.kt
@@ -11,6 +11,7 @@ import com.nivesh.production.niveshfd.R
import com.nivesh.production.niveshfd.databinding.FragmentAlmostThereBinding
import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity
import com.nivesh.production.niveshfd.fd.util.Common
+import com.nivesh.production.niveshfd.partnerOnBoarding.ui.activities1.SignUpActivity
class AlmostThereFragment : BaseFragment() {
private var _binding: FragmentAlmostThereBinding? = null
@@ -105,7 +106,8 @@ class AlmostThereFragment : BaseFragment() {
}
binding.btnBack.setOnClickListener {
- requireActivity().onBackPressedDispatcher.onBackPressed()
+// (activity as SignUpActivity).onBackPressedDispatcher
+ (activity as SignUpActivity).onBackPressedDispatcher.onBackPressed()
}
binding.btnNext.setOnClickListener {
@@ -113,8 +115,6 @@ class AlmostThereFragment : BaseFragment() {
// submit
}
}
-
-
}
private fun validate(): Boolean {
diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/GetStartedFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/GetStartedFragment.kt
index b6113b6..8503b02 100644
--- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/GetStartedFragment.kt
+++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/GetStartedFragment.kt
@@ -1,19 +1,25 @@
package com.nivesh.production.niveshfd.partnerOnBoarding.ui.fragments1
import android.Manifest
+import android.annotation.SuppressLint
import android.app.Activity
import android.content.DialogInterface
import android.content.pm.PackageManager
+import android.database.Cursor
import android.graphics.Bitmap
import android.graphics.BitmapFactory
+import android.graphics.Color
import android.net.Uri
import android.os.Bundle
+import android.provider.OpenableColumns
+import android.text.Editable
+import android.text.TextWatcher
+import android.util.Base64
+import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.AdapterView
import android.widget.ArrayAdapter
-import android.widget.Switch
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
@@ -21,24 +27,18 @@ import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import androidx.lifecycle.lifecycleScope
-import com.google.android.material.button.MaterialButton
+import com.nivesh.production.niveshfd.BuildConfig
import com.nivesh.production.niveshfd.R
import com.nivesh.production.niveshfd.databinding.FragmentGetStartedBinding
-import com.nivesh.production.niveshfd.fd.db.PreferenceManager
import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity
+import com.nivesh.production.niveshfd.fd.util.Common
+import com.nivesh.production.niveshfd.fd.util.Common.Companion.getFileExtension
import com.nivesh.production.niveshfd.fd.util.Common.Companion.showDialogWithTwoButtons
+import com.nivesh.production.niveshfd.fd.util.ImageUtil
import com.nivesh.production.niveshfd.partnerOnBoarding.ui.activities1.SignUpActivity
-import java.io.File
-import java.io.FileDescriptor
-import java.io.IOException
-
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
+import java.io.*
class GetStartedFragment : BaseFragment() {
- // TODO: Rename and change types of parameters
- private var param1: String? = null
- private var param2: String? = null
private var _binding: FragmentGetStartedBinding? = null
private val binding get() = _binding!!
private var latestTmpUri: Uri? = null
@@ -51,6 +51,19 @@ class GetStartedFragment : BaseFragment() {
private val secondDocUpload: Int = 4
private var actionType: Int = -1
+ private var panString: String = ""
+ private var photoString: String = ""
+ private var docString: String = ""
+ private var docString2: String = ""
+ private var panFileExt: String? = ""
+ private var photoFileExt: String? = ""
+ private var doc1FileExt: String? = ""
+ private var doc2fileExt: String? = ""
+ private var docValue: String = ""
+ private var uploadPosition = 0
+
+ private var isFront: Boolean = false
+
private val listArray = ArrayList()
private val permissions = arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
@@ -74,28 +87,24 @@ class GetStartedFragment : BaseFragment() {
private val requestGalleryPermission = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()
) { permission ->
- if (!permission.containsValue(false)) {
- selectImageIntent?.launch("image/*")
- } else {
- showDialogWithTwoButtons(
- (activity as SignUpActivity),
- getString(R.string.galleryPermission),
- getString(
- R.string.permissionsRequired
- )
- )
- }
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- arguments?.let {
- param1 = it.getString(ARG_PARAM1)
- param2 = it.getString(ARG_PARAM2)
- }
+// if (!permission.containsValue(false)) {
+ selectImageIntent?.launch("image/*")
+// } else {
+// showDialogWithTwoButtons(
+// (activity as SignUpActivity),
+// getString(R.string.galleryPermission),
+// getString(
+// R.string.permissionsRequired
+// )
+// )
+// }
}
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
// Inflate the layout for this fragment
_binding = FragmentGetStartedBinding.inflate(inflater, container, false)
return binding.root
@@ -104,23 +113,6 @@ class GetStartedFragment : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
init()
-
- selectImageIntent = registerForActivityResult(ActivityResultContracts.GetContent())
- { uri: Uri? ->
- if (uri != null) {
- bitmap = uriToBitmap(uri)
-// uploadDocument(uri, "g")
- }
- }
-
- takeImageResult =
- registerForActivityResult(ActivityResultContracts.TakePicture()) { isSuccess ->
- if (isSuccess) {
- latestTmpUri?.let { uri ->
-// uploadDocument(uri, "c")
- }
- }
- }
}
private fun uriToBitmap(selectedFileUri: Uri): Bitmap? {
@@ -137,8 +129,117 @@ class GetStartedFragment : BaseFragment() {
return null
}
+ private fun isInputCorrect(
+ s: Editable,
+ totalSymbols: Int,
+ dividerModulo: Int,
+ divider: Char
+ ): Boolean {
+ var isCorrect = s.length <= totalSymbols // check size of entered string
+ for (i in 0 until s.length) { // check that every element is right
+ isCorrect = if (i > 0 && (i + 1) % dividerModulo == 0) {
+ isCorrect and (divider == s[i])
+ } else {
+ isCorrect and Character.isDigit(s[i])
+ }
+ }
+ return isCorrect
+ }
+
private fun init() {
+ var total_SYMBOLS: Int = 14
+ var TOTAL_DIGITS: Int = 12 // max numbers of digits in pattern: 0000 x 4
+ var DIVIDER_MODULO: Int = 4 // means divider position is every 5th symbol beginning with 1
+ var DIVIDER_POSITION: Int = DIVIDER_MODULO - 1; // means divider position is every 4th symbol beginning with 0
+ var DIVIDER: Char = '-'
+
+ binding.edtEuinNumber.addTextChangedListener(object : TextWatcher{
+ override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
+ override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
+ override fun afterTextChanged(s: Editable?) {
+ if (!isInputCorrect(s!!, total_SYMBOLS, DIVIDER_MODULO, DIVIDER)) {
+ s?.replace(0, s.length, buildCorrectString(getDigitArray(s, TOTAL_DIGITS)!!, DIVIDER_POSITION, DIVIDER))
+ }
+ }
+
+ private fun isInputCorrect(
+ s: Editable,
+ totalSymbols: Int,
+ dividerModulo: Int,
+ divider: Char
+ ): Boolean {
+ var isCorrect = s.length <= totalSymbols // check size of entered string
+ for (i in s.indices) { // check that every element is right
+ isCorrect = if (i > 0 && (i + 1) % dividerModulo == 0) {
+ isCorrect and (divider == s[i])
+ } else {
+ isCorrect and Character.isDigit(s[i])
+ }
+ }
+ return isCorrect
+ }
+
+ private fun buildCorrectString(
+ digits: CharArray,
+ dividerPosition: Int,
+ divider: Char
+ ): String? {
+ val formatted = StringBuilder()
+ for (i in digits.indices) {
+ if (digits[i].code != 0) {
+ formatted.append(digits[i])
+ if (i > 0 && i < digits.size - 1 && (i + 1) % dividerPosition == 0) {
+ formatted.append(divider)
+ }
+ }
+ }
+ return formatted.toString()
+ }
+
+ private fun getDigitArray(s: Editable, size: Int): CharArray? {
+ val digits = CharArray(size)
+ var index = 0
+ var i = 0
+ while (i < s.length && index < size) {
+ val current = s[i]
+ if (Character.isDigit(current)) {
+ digits[index] = current
+ index++
+ }
+ i++
+ }
+ return digits
+ }
+
+ })
+
+// binding.edtEuinNumber.doAfterTextChanged {
+// val formattedText = binding.edtEuinNumber.toString().replace(" ", "").chunked(4).joinToString("/")
+// if (formattedText != binding.edtEuinNumber.toString()) {
+// binding.edtEuinNumber.setText(formattedText)
+// binding.edtEuinNumber.setSelection(binding.edtEuinNumber.length())
+// }
+// }
+
+
+ selectImageIntent = registerForActivityResult(ActivityResultContracts.GetContent())
+ { uri: Uri? ->
+ if (uri != null) {
+ bitmap = uriToBitmap(uri)
+ uploadDocument(uri, "g")
+ }
+ }
+
+ takeImageResult =
+ registerForActivityResult(ActivityResultContracts.TakePicture()) { isSuccess ->
+ if (isSuccess) {
+ latestTmpUri?.let { uri ->
+ uploadDocument(uri, "c")
+ }
+ }
+ }
+
binding.btnNext.setOnClickListener {
replaceFragment(
activity as BaseActivity,
@@ -154,19 +255,46 @@ class GetStartedFragment : BaseFragment() {
listArray.add("Driving Licenses")
listArray.add("Voter Id")
- val arrayAdapter = ArrayAdapter(activity as SignUpActivity, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item,listArray)
+ val arrayAdapter = ArrayAdapter(
+ activity as SignUpActivity,
+ androidx.appcompat.R.layout.support_simple_spinner_dropdown_item,
+ listArray
+ )
binding.spDocType.setAdapter(arrayAdapter)
- binding.spDocType.setOnItemClickListener{ _, _, position, _ ->
-// setVisibility(listArray[position])
+ binding.spDocType.setOnItemClickListener { _, _, position, _ ->
+ setVisibility(listArray[position])
}
binding.uploadFront.setOnClickListener {
actionType = mainPANUpload
+ isFront = true
+ selectImage()
+ }
+
+ binding.mbUploadChangeFront.setOnClickListener {
+ actionType = mainPANUpload
+ isFront = true
+ selectImage()
+ }
+
+ binding.mbUploadChangeBack.setOnClickListener {
+ actionType = mainPANUpload
+ isFront = false
+ selectImage()
+ }
+
+ binding.uploadBack.setOnClickListener {
+ actionType = mainPANUpload
+ isFront = false
selectImage()
}
}
+ private fun setUploadOption(checked: Boolean) {
+ isFront = checked
+ }
+
private fun selectImage() {
val builder = AlertDialog.Builder(
activity as SignUpActivity
@@ -247,45 +375,116 @@ class GetStartedFragment : BaseFragment() {
return true
}
-// private fun setVisibility(s: String) {
-// if(s.contains("Aadhaar")){
-// binding.txtFront.visibility = View.VISIBLE
-// binding.uploadFront.visibility = View.VISIBLE
-// binding.txtBack.visibility = View.VISIBLE
-// binding.uploadViewBack.visibility = View.VISIBLE
-// }else{
-// binding.txtFront.visibility = View.VISIBLE
-// binding.uploadFront.visibility = View.VISIBLE
-// binding.txtBack.visibility = View.GONE
-// binding.uploadViewBack.visibility = View.GONE
-// }
-// }
+ private fun setVisibility(s: String) {
+ if (s.contains("Aadhaar")) {
+ binding.txtFront.visibility = View.VISIBLE
+ binding.uploadFront.visibility = View.VISIBLE
+ binding.txtBack.visibility = View.VISIBLE
+ binding.llBack.visibility = View.VISIBLE
+ } else {
+ binding.txtFront.visibility = View.VISIBLE
+ binding.uploadFront.visibility = View.VISIBLE
+ binding.txtBack.visibility = View.GONE
+ binding.llBack.visibility = View.GONE
+ }
+ }
+
+ private fun getTmpFileUri(): Uri {
+ val tmpFile =
+ File.createTempFile("tmp_image_file", ".png", requireActivity().cacheDir).apply {
+ createNewFile()
+ deleteOnExit()
+ }
+
+ return FileProvider.getUriForFile(
+ requireActivity(), BuildConfig.APPLICATION_ID.plus(".provider"), tmpFile
+ )
+ }
private fun takeImage() {
lifecycleScope.launchWhenStarted {
- getTmpFileUri().let { uri ->
- latestTmpUri = uri
- takeImageResult?.launch(uri)
+ try {
+ getTmpFileUri().let { uri ->
+ latestTmpUri = uri
+ takeImageResult?.launch(uri)
+ }
+ } catch (e: Exception) {
+ Log.e("check_exception", e.message.toString())
}
}
}
-// private fun uploadDocument(uri: Uri, type: String) {
-// when (actionType) {
-// mainPANUpload -> {
-// binding.ivPan.visibility = View.VISIBLE
-// val fileDir: File = requireActivity().cacheDir
-// val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri)))
-// panFileExt = getFileExtension(getFileName(uri))
-// val size: Double = Common.getFileSizeInMB(fileExtension.length())
-// if (size < 5) {
-// if (type == "c") encodedPANBase64(fileExtension)
-// else panString = bitmap?.let { ImageUtil.convert(it) }.toString()
-// } else {
-// panString = ""
-// panFileExt = ""
-// }
-// }
+ @SuppressLint("Range")
+ fun getFileName(uri: Uri): String {
+ var result = ""
+ if (uri.scheme == "content") {
+ val cursor: Cursor =
+ requireActivity().contentResolver.query(uri, null, null, null, null)!!
+ cursor.use { cursor1 ->
+ if (cursor1.moveToFirst()) {
+ result = cursor1.getString(cursor1.getColumnIndex(OpenableColumns.DISPLAY_NAME))
+ }
+ }
+ }
+ if (result.isEmpty()) {
+ result = uri.path!!
+ val cut = result.lastIndexOf('/')
+ if (cut != -1) {
+ result = result.substring(cut + 1)
+ }
+ }
+ return result
+ }
+
+ @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 encodedPANBase64(fileName: File) {
+ panString = try {
+ val bytes: ByteArray = loadFile(fileName)
+ Base64.encodeToString(bytes, Base64.DEFAULT).trim().replace("\n", "")
+ .replace("\\s+", "")
+ } catch (e: Exception) {
+ e.printStackTrace()
+ ""
+ }
+ }
+
+ private fun uploadDocument(uri: Uri, type: String) {
+ when (actionType) {
+ mainPANUpload -> {
+ val fileDir: File = (activity as SignUpActivity).cacheDir
+ val fileExtension = File(fileDir.toString().plus("/").plus(getFileName(uri)))
+ panFileExt = getFileExtension(getFileName(uri))
+ val size: Double = Common.getFileSizeInMB(fileExtension.length())
+
+ setFrontHideVisible(uri)
+ if (size < 5) {
+ if (type == "c") encodedPANBase64(fileExtension)
+ else panString = bitmap?.let { ImageUtil.convert(it) }.toString()
+ } else {
+ panString = ""
+ panFileExt = ""
+ }
+ }
+
+
// mainPhotoUpload -> {
// binding.ivPhotograph.visibility = View.VISIBLE
// val fileDir: File = requireActivity().cacheDir
@@ -328,17 +527,22 @@ class GetStartedFragment : BaseFragment() {
// doc2fileExt = ""
// }
// }
-// }
-// }
-
- private fun getTmpFileUri(): Uri {
- val tmpFile =
- File.createTempFile("tmp_image_file", ".png", requireActivity().cacheDir).apply {
- createNewFile()
- deleteOnExit()
- }
+ }
+ }
- return FileProvider.getUriForFile(
- requireActivity(), PreferenceManager(activity as SignUpActivity).getAppId().plus(".provider"), tmpFile)
+ private fun setFrontHideVisible(uri: Uri) {
+ if (isFront) {
+ binding.uploadFront.visibility = View.GONE
+ binding.ivFrontLayer.setBackgroundColor(Color.parseColor("#99000000"))
+ binding.ivFrontTik.setBackgroundResource(R.drawable.svg_tik)
+ binding.mbUploadChangeFront.visibility = View.VISIBLE
+ binding.ivFront.setImageURI(uri)
+ } else {
+ binding.uploadBack.visibility = View.GONE
+ binding.ivBackLayer.setBackgroundColor(Color.parseColor("#99000000"))
+ binding.ivBackTik.setBackgroundResource(R.drawable.svg_tik)
+ binding.mbUploadChangeBack.visibility = View.VISIBLE
+ binding.ivBack.setImageURI(uri)
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/NewDistributorSignStepOne.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/NewDistributorSignStepOne.kt
index 93f27f6..553da97 100644
--- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/NewDistributorSignStepOne.kt
+++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/NewDistributorSignStepOne.kt
@@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import com.nivesh.production.niveshfd.databinding.NewDistributorSignStepOneBinding
import com.nivesh.production.niveshfd.partnerOnBoarding.adapters1.NewDistributorSignStepOneAdapter
@@ -14,6 +15,10 @@ class NewDistributorSignStepOne : BaseFragment(){
private var _binding: NewDistributorSignStepOneBinding? = null
private val binding get() = _binding!!
+ companion object{
+ var listMapData: MutableMap? = null
+ }
+
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -29,7 +34,7 @@ class NewDistributorSignStepOne : BaseFragment(){
}
private fun init() {
- val listMapData: Map
+
val listData = mutableListOf("Mutual Fund","Insurance","Bond","Capital Gain Bond (CGB)",
"Non-Convertible Debentures(NCDs)","Fixed Deposit (FD)","National Pension System (NPS)",
"Secondary Bond","Other")
@@ -37,5 +42,9 @@ class NewDistributorSignStepOne : BaseFragment(){
binding.rvList.layoutManager = LinearLayoutManager(activity as SignUpActivity)
val adapter = NewDistributorSignStepOneAdapter(listData)
binding.rvList.adapter = adapter
+
+ binding.btnNext.setOnClickListener {
+ Toast.makeText((activity as SignUpActivity), listMapData.toString(),Toast.LENGTH_SHORT).show()
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/OTPFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/OTPFragment.kt
index ad21771..4e80216 100644
--- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/OTPFragment.kt
+++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/OTPFragment.kt
@@ -14,11 +14,11 @@ import com.nivesh.production.niveshfd.R
import com.nivesh.production.niveshfd.databinding.FragmentOtpBinding
import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity
import com.nivesh.production.niveshfd.fd.util.Common
-import com.nivesh.production.niveshfd.partnerOnBoarding.adapters1.NewDistributorSignStepOneAdapter
class OTPFragment : BaseFragment() {
private var _binding: FragmentOtpBinding? = null
private val binding get() = _binding!!
+ private var type: Int? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
@@ -29,6 +29,7 @@ class OTPFragment : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ type = arguments?.getInt("type")
init()
}
@@ -64,11 +65,17 @@ class OTPFragment : BaseFragment() {
binding.btnSubmit.setOnClickListener {
if (validate()) {
+ var fragment = Fragment()
+ if(type == 4) {
+ fragment = GetStartedFragment()
+ } else if(type == 3){
+ fragment = NewDistributorSignStepOne()
+ }
+
replaceFragment(
activity as BaseActivity,
R.id.signUpContainer,
-// GetStartedFragment(),
- NewDistributorSignStepOne(),
+ fragment,
"GET STARTED",
true
)
diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/SignUpFragment.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/SignUpFragment.kt
index 116893b..d97aef4 100644
--- a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/SignUpFragment.kt
+++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/ui/fragments1/SignUpFragment.kt
@@ -7,6 +7,7 @@ import android.text.TextWatcher
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.fragment.app.Fragment
import com.nivesh.production.niveshfd.databinding.FragmentSignupBinding
import com.nivesh.production.niveshfd.fd.ui.activity.BaseActivity
import com.nivesh.production.niveshfd.fd.util.Common
@@ -15,6 +16,7 @@ import com.nivesh.production.niveshfd.fd.util.Common
class SignUpFragment : BaseFragment() {
private var _binding: FragmentSignupBinding? = null
private val binding get() = _binding!!
+ private var type: Int? = null
override fun onCreateView(
@@ -26,6 +28,7 @@ class SignUpFragment : BaseFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ type = arguments?.getInt("type")
init()
}
@@ -41,10 +44,15 @@ class SignUpFragment : BaseFragment() {
binding.btnSignUp.setOnClickListener {
if (validate()) {
+ val bundle = Bundle()
+ bundle.putInt("type",type!!)
+ val fragment = OTPFragment()
+ fragment.arguments = bundle
+
replaceFragment(
activity as BaseActivity,
com.nivesh.production.niveshfd.R.id.signUpContainer,
- OTPFragment(),
+ fragment,
"OTP",
true
)
diff --git a/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/util/MaskWatcher.kt b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/util/MaskWatcher.kt
new file mode 100644
index 0000000..bd3a48f
--- /dev/null
+++ b/app/src/main/java/com/nivesh/production/niveshfd/partnerOnBoarding/util/MaskWatcher.kt
@@ -0,0 +1,35 @@
+package com.nivesh.production.niveshfd.partnerOnBoarding.util
+
+import android.text.Editable
+import android.text.TextWatcher
+
+class MaskWatcher(private val mask: String) : TextWatcher {
+ private var isRunning = false
+ private var isDeleting = false
+ override fun beforeTextChanged(charSequence: CharSequence, start: Int, count: Int, after: Int) {
+ isDeleting = count > after
+ }
+
+ override fun onTextChanged(charSequence: CharSequence, start: Int, before: Int, count: Int) {}
+ override fun afterTextChanged(editable: Editable) {
+ if (isRunning || isDeleting) {
+ return
+ }
+ isRunning = true
+ val editableLength = editable.length
+ if (editableLength < mask.length) {
+ if (mask[editableLength] != '#') {
+ editable.append(mask[editableLength])
+ } else if (mask[editableLength - 1] != '#') {
+ editable.insert(editableLength - 1, mask, editableLength - 1, editableLength)
+ }
+ }
+ isRunning = false
+ }
+
+ companion object {
+ fun buildCpf(): MaskWatcher {
+ return MaskWatcher("###.###.###-##")
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/round_corner_grey_button_fill.xml b/app/src/main/res/drawable/round_corner_grey_button_fill.xml
new file mode 100644
index 0000000..2120174
--- /dev/null
+++ b/app/src/main/res/drawable/round_corner_grey_button_fill.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/svg_tik.xml b/app/src/main/res/drawable/svg_tik.xml
index d1cbab6..80d6f1f 100644
--- a/app/src/main/res/drawable/svg_tik.xml
+++ b/app/src/main/res/drawable/svg_tik.xml
@@ -1,7 +1,7 @@
diff --git a/app/src/main/res/layout/fragment_get_started.xml b/app/src/main/res/layout/fragment_get_started.xml
index 3ac8817..6463d27 100644
--- a/app/src/main/res/layout/fragment_get_started.xml
+++ b/app/src/main/res/layout/fragment_get_started.xml
@@ -7,6 +7,7 @@
android:orientation="vertical">
-
-
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/tlEuinNumber">
+
+
+
+
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true"
+ android:backgroundTint="@color/greenColor" />
+
+
+
+
+
+
+
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintStart_toStartOf="parent"/>
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/new_distributor_sign_step_one_adapter.xml b/app/src/main/res/layout/new_distributor_sign_step_one_adapter.xml
index 78e1a2b..190b8aa 100644
--- a/app/src/main/res/layout/new_distributor_sign_step_one_adapter.xml
+++ b/app/src/main/res/layout/new_distributor_sign_step_one_adapter.xml
@@ -40,21 +40,23 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
+ android:layout_marginEnd="@dimen/margin_20"
android:orientation="horizontal">
+ android:text="@string/yes"/>
+ android:text="@string/no"/>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index 7f46b75..badc2c8 100644
--- a/app/src/main/res/values-hi-rIN/strings.xml
+++ b/app/src/main/res/values-hi-rIN/strings.xml
@@ -320,5 +320,10 @@
Have a POS anywhere?
POS with an insurer
POS with Broker / Corporate Agent
+ Yes
+ No
+ Please Name Other
+ Change
+ Up Next: Address
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 0ba9ee0..8c8b3af 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -24,6 +24,9 @@
#E6EBE0
#303030
+ #41CA00
+
+ #545454
#FF03DAC5
#FF018786
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0dd582b..dc1776b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -324,6 +324,11 @@
Have a POS anywhere?
POS with an insurer
POS with Broker / Corporate Agent
+ Yes
+ No
+ Please Name Other
+ Change
+ Up Next: Address
- Aadhar Front
diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml
index 92d7b3a..ed4e0b1 100644
--- a/app/src/main/res/xml/file_paths.xml
+++ b/app/src/main/res/xml/file_paths.xml
@@ -18,6 +18,9 @@
+
\ No newline at end of file