From c9d4f76611adf4fe22c80c52e3752a7aa0e01fd0 Mon Sep 17 00:00:00 2001 From: Hemant Khadase Date: Tue, 20 Dec 2022 18:03:45 +0530 Subject: [PATCH] adding validations in 2nd screen --- .../ui/fragment/StepTwoBajajFDFragment.kt | 81 +++++++++++- .../nivesh/production/bajajfd/util/Common.kt | 49 +++---- .../res/layout/fragment_bajajfd_step_two.xml | 121 ++++++++---------- 3 files changed, 147 insertions(+), 104 deletions(-) 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 25905aa..4797069 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 @@ -1,15 +1,23 @@ package com.nivesh.production.bajajfd.ui.fragment +import android.R.attr +import android.R.attr.phoneNumber import android.os.Bundle +import android.text.InputFilter +import android.text.InputFilter.LengthFilter import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProvider -import com.nivesh.production.bajajfd.interfaces.BajajFDInterface import com.nivesh.production.bajajfd.databinding.FragmentBajajfdStepTwoBinding +import com.nivesh.production.bajajfd.interfaces.BajajFDInterface +import com.nivesh.production.bajajfd.util.Common.Companion.isIndianMobileNo +import com.nivesh.production.bajajfd.util.Common.Companion.isValidEmail +import com.nivesh.production.bajajfd.util.Common.Companion.isValidName +import com.nivesh.production.bajajfd.util.Common.Companion.isValidPan import com.nivesh.production.bajajfd.viewModel.StepTwoBajajFDViewModel + class StepTwoBajajFDFragment : Fragment() { private var _binding: FragmentBajajfdStepTwoBinding? = null @@ -44,6 +52,10 @@ class StepTwoBajajFDFragment : Fragment() { _binding = FragmentBajajfdStepTwoBinding.inflate(inflater,container,false) val root = binding.root + binding.edtMobileNumber.filters = arrayOf(LengthFilter(10)) + binding.edtPANNumber.filters = arrayOf(LengthFilter(10)) + + binding.tvPersonalDetails.setOnClickListener { @@ -56,10 +68,73 @@ class StepTwoBajajFDFragment : Fragment() { binding.tvBankDetails.setOnClickListener { } - + // if ( validation()) return root } + private fun validation(): Boolean { + if (binding.edtMobileNumber.text.toString().isEmpty()){ + return false + }else if (binding.edtMobileNumber.text?.length != 10){ + return false + }else if (binding.edtMobileNumber.text?.length == 10 && isIndianMobileNo(binding.edtMobileNumber.text.toString())){ + return false + } else if (binding.edtDOB.text.toString().isEmpty()){ + return false + }else if (binding.edtPANNumber.text.toString().isEmpty()){ + return false + }else if (isValidPan(binding.edtPANNumber.text.toString())){ + return false + }else if (binding.spTitle.text.isEmpty()){ + return false + }else if (binding.edtFirstName.text.toString().isEmpty()){ + return false + }else if (isValidName(binding.edtFirstName.text.toString())){ + return false + }else if (binding.edtMiddleName.text.toString().isEmpty()){ + return false + }else if (isValidName(binding.edtMiddleName.text.toString())){ + return false + }else if (binding.edtLastName.text.toString().isEmpty()){ + return false + }else if (isValidName(binding.edtLastName.text.toString())){ + return false + }else if (binding.spGender.text.toString().isEmpty()){ + return false + }else if (binding.edtEmail.text.toString().isEmpty()){ + return false + }else if (isValidEmail(binding.edtEmail.text.toString())){ + return false + }else if (binding.edtOccupation.text.toString().isEmpty()){ + return false + }else if (binding.edtQualification.text.toString().isEmpty()){ + return false + }else if (binding.spMarital.text.toString().isEmpty()){ + return false + }else if (binding.spRelation.text.toString().isEmpty()){ + return false + }else if (binding.edtRelationName.text.toString().isEmpty()){ + return false + }else if (binding.edtAddressLine1.text.toString().isEmpty()){ + return false + }else if (binding.edtAddressLine2.text.toString().isEmpty()){ + return false + }else if (binding.edtState.text.toString().isEmpty()){ + return false + }else if (binding.edtCity.text.toString().isEmpty()){ + return false + }else if (binding.edtPinCode.text.toString().isEmpty()){ + return false + }else if (binding.edtIFSC.text.toString().isEmpty()){ + return false + }else if (binding.edtAccountNumber.text.toString().isEmpty()){ + return false + }else if (binding.edtBankName.text.toString().isEmpty()){ + return false + }else return !binding.edtbankBranch.text.toString().isEmpty() + + } + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt index 841b4b7..9658265 100644 --- a/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt +++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt @@ -12,6 +12,7 @@ import com.nivesh.production.bajajfd.BajajApplication import java.util.regex.Matcher import java.util.regex.Pattern + class Common { companion object{ @@ -49,52 +50,34 @@ class Common { } return false } - //valid email check - private fun isValidEmail(emailText:String?): String? { - if(!emailText?.let { Patterns.EMAIL_ADDRESS.matcher(it).matches() }!!) - { - return "Invalid Email Address" - } - return null + //valid email check + fun isValidEmail(target: String?): Boolean { + return Patterns.EMAIL_ADDRESS.matcher(target.toString()).matches() } + //valid Name Check - private fun isValidName(nameText: String?): String { + fun isValidName(nameText: String?): Boolean { val pattern = Pattern.compile(("^[a-zA-Z\\s]{2,70}$")) - val matcher = pattern.matcher(nameText) - if (!matcher.matches()) { - return "Enter Valid Name" - } - return "" - + val matcher = pattern.matcher(nameText.toString()) + return matcher.matches() } + //validPanCard - private fun isValidPanCardNo(panCardNo: String?): Boolean { - // Regex to check valid PAN Card number. - val regex = "[A-Z]{5}[0-9]{4}[A-Z]{1}" - // Compile the ReGex - val p = Pattern.compile(regex) - // If the PAN Card number - // is empty return false - if (panCardNo == null) { - return false - } - // Pattern class contains matcher() method - // to find matching between given - // PAN Card number using regular expression. - val m = p.matcher(panCardNo) - // Return if the PAN Card number - // matched the ReGex - return m.matches() + fun isValidPan(pan: String?): Boolean { + val mPattern = Pattern.compile("[A-Z]{5}[0-9]{4}[A-Z]{1}") + val mMatcher = mPattern.matcher(pan.toString()) + return mMatcher.matches() } + //is Indian mobile Number - private fun isIndianMobileNo(mobileNumber: String?): Boolean { + fun isIndianMobileNo(mobileNumber: String?): Boolean { //(0/91): number starts with (0/91) //[7-9]: starting of the number may contain a digit between 0 to 9 //[0-9]: then contains digits 0 to 9 val pattern: Pattern = Pattern.compile("^[6-9]\\d{9}$") //the matcher() method creates a matcher that will match the given input against this pattern - val match: Matcher = pattern.matcher(mobileNumber) + val match: Matcher = pattern.matcher(mobileNumber.toString()) //returns a boolean value return match.matches() } diff --git a/app/src/main/res/layout/fragment_bajajfd_step_two.xml b/app/src/main/res/layout/fragment_bajajfd_step_two.xml index 9e2b810..d113a91 100644 --- a/app/src/main/res/layout/fragment_bajajfd_step_two.xml +++ b/app/src/main/res/layout/fragment_bajajfd_step_two.xml @@ -18,11 +18,10 @@ android:background="@color/Nivesh_color_AppBg" android:fillViewport="true" android:visibility="visible" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/btnNext"> - + app:layout_constraintBottom_toTopOf="@+id/btnNext"> - - - - - - - - - - - - - - - + android:paddingStart="@dimen/margin_18" + android:paddingEnd="@dimen/margin_10" + android:textSize="@dimen/text_size_14" + android:background="@color/grey_bg" + android:text="Nominee Details (Optional)" + app:drawableEndCompat="@drawable/svg_down_arrow" + android:textColor="@color/black" /> + + + + + + + + + + + + + + + + + + + + - + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - @@ -897,6 +878,7 @@ android:hint="Enter IFSC Code"> @@ -913,6 +895,7 @@ android:hint="Enter Account Number"> @@ -928,6 +911,7 @@ android:hint="Enter Bank Name"> @@ -944,6 +928,7 @@ android:hint="Enter Branch Name"> @@ -993,6 +978,8 @@ android:orientation="horizontal"> @@ -1001,6 +988,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="50dp" + android:buttonTint="@color/black" android:text="NetBanking" /> @@ -1047,23 +1035,20 @@ android:textSize="@dimen/text_size_14" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/btnNext" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/scrollView" /> + app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintStart_toEndOf="@+id/btnBack" /> \ No newline at end of file