Shashidhara | Remove last name

This commit is contained in:
Shashidhara Gopal
2020-06-25 20:02:02 +05:30
parent f71a075d9f
commit 40cfae2804
13 changed files with 49 additions and 88 deletions

View File

@@ -64,7 +64,7 @@ class LoanBankUserJourney : AbstractCustomerAppTestCase() {
fun shouldShowBankDetailsPage() {
PreferenceManager.setObjectPreference(
Constants.CURRENT_USER, UserDetail(
firstName = "Tyrion",
name = "Tyrion",
lastName = "lannister"
)
)

View File

@@ -263,7 +263,6 @@ class NaviAnalytics private constructor() {
private val screenName = PROFILE
fun onEmailEdit() = NaviTrackEvent.trackEvent("email_edit")
fun onFirstNameEdit() = NaviTrackEvent.trackEvent("firstname_edit")
fun onLastNameEdit() = NaviTrackEvent.trackEvent("lastname_edit")
fun onMaritalStatusSelect() = NaviTrackEvent.trackEvent("marital_status_select")
fun onCurrentPinCodeEdit() = NaviTrackEvent.trackEvent("current_pincode_edit")
fun onDobDateEdit() = NaviTrackEvent.trackEvent("dob_dd_edit")
@@ -273,7 +272,6 @@ class NaviAnalytics private constructor() {
fun onProfileNextButtonTap(
email: String?,
firstName: String?,
lastName: String?,
dob: String?,
maritalStatus: String?,
pinCode: String?
@@ -291,7 +289,6 @@ class NaviAnalytics private constructor() {
}
if (!email.isNullOrBlank()) map["email_attribute"] = email
if (!firstName.isNullOrBlank()) map["firstname_attribute"] = firstName
if (!lastName.isNullOrBlank()) map["lastname_attribute"] = lastName
if (!maritalStatus.isNullOrBlank()) map["marital_status_attribute"] = maritalStatus
if (!pinCode.isNullOrBlank()) map["current_pincode_attribute"] = pinCode
NaviTrackEvent.trackEvent("profile_next_button_tap", map, true)

View File

@@ -48,10 +48,8 @@ class UxcamUtil private constructor() {
fun setUserProperty(user: UserDetail?) {
try {
user?.let {
if (!it.firstName.isNullOrBlank())
UXCam.setUserProperty("First_Name", it.firstName.orEmpty())
if (!it.lastName.isNullOrBlank())
UXCam.setUserProperty("Last_Name", it.lastName.orEmpty())
if (!it.name.isNullOrBlank())
UXCam.setUserProperty("First_Name", it.name.orEmpty())
if (!it.phoneNumber.isNullOrBlank())
UXCam.setUserProperty("Phone_Number", it.phoneNumber.orEmpty())
}

View File

@@ -93,10 +93,8 @@ object MoengageUtil {
try {
user?.let { data ->
val helper = MoEHelper.getInstance(NaviApplication.instance)
if (!data.firstName.isNullOrBlank())
helper.setFirstName(data.firstName.orEmpty())
if (!data.lastName.isNullOrBlank())
helper.setLastName(data.lastName.orEmpty())
if (!data.name.isNullOrBlank())
helper.setFirstName(data.name.orEmpty())
if (!data.phoneNumber.isNullOrBlank())
helper.setNumber(data.phoneNumber.orEmpty())
if (!data.email.isNullOrBlank())

View File

@@ -38,6 +38,6 @@ object UserManager {
}
}
fun getName() = user?.firstName + SPACE + user?.lastName
fun getName() = user?.name
}

View File

@@ -10,9 +10,8 @@ import com.google.gson.annotations.SerializedName
data class UserDetail(
@SerializedName("email") var email: String? = null,
@SerializedName("firstName") var firstName: String? = null,
@SerializedName("name") var name: String? = null,
@SerializedName("phoneNumber") val phoneNumber: String? = null,
@SerializedName("lastName") var lastName: String? = null,
@SerializedName("dateOfBirth") var dateOfBirth: String? = null,
@SerializedName("maritalStatus") var maritalStatus: String? = null,
@SerializedName("pinCode") var pinCode: String? = null,

View File

@@ -3,8 +3,7 @@ package com.naviapp.models.request
import com.google.gson.annotations.SerializedName
data class ProfileRequest(
@SerializedName("firstName") val firstName: String?,
@SerializedName("lastName") val lastName: String?,
@SerializedName("name") val name: String?,
@SerializedName("email") val email: String?,
@SerializedName("dateOfBirth") val dateOfBirth: String?,
@SerializedName("maritalStatus") val maritalStatus: String?,

View File

@@ -32,8 +32,14 @@ import com.naviapp.useridentification.pan.fragments.PanFragment
import com.naviapp.useridentification.profile.fragments.ProfileFragment
import com.naviapp.useridentification.viewmodels.UserIdentificationVM
import com.naviapp.useridentification.work.fragments.WorkFragment
import com.naviapp.utils.*
import com.naviapp.utils.Constants
import com.naviapp.utils.Constants.SHOULD_SET_PROGRESS
import com.naviapp.utils.UNDERSCORE
import com.naviapp.utils.log
import com.naviapp.utils.observeNonNull
import com.naviapp.utils.onPageSelected
import com.naviapp.utils.orFalse
import com.naviapp.utils.setEaseInAnimation
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers

View File

@@ -25,7 +25,11 @@ import com.naviapp.common.navigator.ScreenNavigator
import com.naviapp.dashboard.listeners.FragmentInterchangeListener
import com.naviapp.databinding.UserProfileFragmentBinding
import com.naviapp.errors.activities.ErrorActivity
import com.naviapp.firebasedb.*
import com.naviapp.firebasedb.BASIC_DETAILS
import com.naviapp.firebasedb.FirebaseDataHelper
import com.naviapp.firebasedb.FirebaseDataReceiveListener
import com.naviapp.firebasedb.FirebaseResponse
import com.naviapp.firebasedb.FirebaseStatusType
import com.naviapp.models.UserDetail
import com.naviapp.network.ApiErrorTagType
import com.naviapp.network.ApiErrorTagType.PROFILE_DETAILS_UPLOAD
@@ -113,8 +117,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
private fun initListeners() {
binding.nextBtn.setOnClickListener(this)
binding.emailLayout.personalEmailIdEt.onFocusChangeListener = this
binding.fullNameLayout.firstNameEt.onFocusChangeListener = this
binding.fullNameLayout.lastNameEt.onFocusChangeListener = this
binding.fullNameLayout.fullNameEt.onFocusChangeListener = this
binding.dobLayout.dobEt.onFocusChangeListener = this
binding.pincodeLayout.pincodeEt.onFocusChangeListener = this
}
@@ -190,8 +193,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
PreferenceManager.getObjectPrefrences(CURRENT_USER, UserDetail::class.java)
?: UserDetail()
userDetail.email = binding.emailLayout.personalEmailIdEt.text.toString()
userDetail.firstName = binding.fullNameLayout.firstNameEt.text.toString()
userDetail.lastName = binding.fullNameLayout.lastNameEt.text.toString()
userDetail.name = binding.fullNameLayout.fullNameEt.text.toString()
userDetail.dateOfBirth = binding.dobLayout.dobEt.getText()
userDetail.pinCode = binding.pincodeLayout.pincodeEt.text.toString()
getMaritalStatus()?.let {
@@ -208,14 +210,9 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
)
binding.nextBtn.setViewBg(bgColor = R.color.disabled_button_color)
binding.fullNameLayout.firstNameEt.setDependentFormTextView(binding.fullNameLayout.fullNameTv)
binding.fullNameLayout.lastNameEt.setDependentFormTextView(binding.fullNameLayout.fullNameTv)
binding.fullNameLayout.firstNameEt.inputType = InputType.TYPE_TEXT_FLAG_CAP_WORDS
binding.fullNameLayout.lastNameEt.inputType = InputType.TYPE_TEXT_FLAG_CAP_WORDS
binding.fullNameLayout.firstNameEt.addTextChangedListener { enableNextButton() }
binding.fullNameLayout.lastNameEt.addTextChangedListener { enableNextButton() }
binding.fullNameLayout.fullNameEt.setDependentFormTextView(binding.fullNameLayout.fullNameTv)
binding.fullNameLayout.fullNameEt.inputType = InputType.TYPE_TEXT_FLAG_CAP_WORDS
binding.fullNameLayout.fullNameEt.addTextChangedListener { enableNextButton() }
binding.emailLayout.personalEmailIdEt.setDependentFormTextView(binding.emailLayout.personalEmailTv)
binding.emailLayout.personalEmailIdEt.addTextChangedListener { enableNextButton() }
@@ -257,8 +254,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
private fun populateData(userDetail: UserDetail) {
userDetail.email?.let { binding.emailLayout.personalEmailIdEt.setText(it) } ?: emailDialog()
binding.fullNameLayout.firstNameEt.setText(userDetail.firstName.orEmpty())
binding.fullNameLayout.lastNameEt.setText(userDetail.lastName.orEmpty())
binding.fullNameLayout.fullNameEt.setText(userDetail.name.orEmpty())
binding.dobLayout.dobEt.setText(userDetail.dateOfBirth.orEmpty())
when (userDetail.maritalStatus) {
MARRIED -> binding.maritalStatusLayout.marriedRb.isChecked = true
@@ -275,7 +271,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
if (emailIds.size == 1) {
binding.emailLayout.personalEmailIdEt.setText(emailIds[0])
val fullName = binding.fullNameLayout
if (fullName.firstNameEt.text.isNullOrEmpty() && fullName.lastNameEt.text.isNullOrEmpty()) {
if (fullName.fullNameEt.text.isNullOrEmpty()) {
readName(emailIds[0], binding)
}
return
@@ -295,7 +291,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
dialog.cancel()
val fullName = binding.fullNameLayout
if (fullName.firstNameEt.text.isNullOrEmpty() && fullName.lastNameEt.text.isNullOrEmpty()) {
if (fullName.fullNameEt.text.isNullOrEmpty()) {
readName(emailIds[which], binding)
}
}
@@ -317,12 +313,9 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
listener?.navigateToActiveScreen(Bundle().apply {
putBoolean(SHOULD_SET_PROGRESS, true)
})
val firstName = binding.fullNameLayout.firstNameEt.text.toString().trim()
val lastName = binding.fullNameLayout.lastNameEt.text.toString().trim()
val fullName = firstName + lastName
val fullName = binding.fullNameLayout.fullNameEt.text.toString().trim()
if (binding.emailLayout.personalEmailIdEt.text.toString().isNotBlank() &&
firstName.isNotBlank() &&
lastName.isNotBlank() &&
fullName.isNotBlank() &&
binding.dobLayout.dobEt.isDataPresent() &&
binding.maritalStatusLayout.maritalStatusRg.isChecked() &&
binding.pincodeLayout.pincodeEt.text.toString().isNotBlank()
@@ -336,16 +329,14 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
private fun submitProfileDetails(skipValidation: Boolean = false) {
if (validateProfileDetails().not()) return
val email = binding.emailLayout.personalEmailIdEt.text.toString()
val firstName = binding.fullNameLayout.firstNameEt.text.toString()
val lastName = binding.fullNameLayout.lastNameEt.text.toString()
val name = binding.fullNameLayout.fullNameEt.text.toString()
val dob = binding.dobLayout.dobEt.getText()
val pinCode = binding.pincodeLayout.pincodeEt.text.toString()
getMaritalStatus()?.let { maritalStatus ->
viewModel.submitProfileDetails(
email,
firstName,
lastName,
name,
dob,
maritalStatus,
pinCode,
@@ -388,20 +379,13 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
binding.emailLayout.personalEmailIdEt.setError(getString(R.string.enter_valid_email))
validated = false
}
val firstName = binding.fullNameLayout.firstNameEt.text.toString().trim()
val lastName = binding.fullNameLayout.lastNameEt.text.toString().trim()
val fullName = firstName + lastName
val firstName = binding.fullNameLayout.fullNameEt.text.toString().trim()
if (firstName.isValidName().not()) {
binding.fullNameLayout.firstNameEt.setError(getString(R.string.enter_valid_name))
binding.fullNameLayout.fullNameEt.setError(getString(R.string.enter_valid_name))
validated = false
}
if (lastName.isValidName().not()) {
binding.fullNameLayout.lastNameEt.setError(getString(R.string.enter_valid_name))
validated = false
}
if (fullName.length < MIN_FULL_NAME_LENGTH) {
binding.fullNameLayout.firstNameEt.setError(getString(R.string.enter_valid_name))
binding.fullNameLayout.lastNameEt.setError(getString(R.string.enter_valid_name))
if (firstName.length < MIN_FULL_NAME_LENGTH) {
binding.fullNameLayout.fullNameEt.setError(getString(R.string.enter_valid_name))
validated = false
}
validateFormElement(binding.dobLayout.dobEt, null)?.let { validated = it }
@@ -418,8 +402,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
private fun onNextButtonClick() {
naviAnalyticsEventTracker.onProfileNextButtonTap(
binding.emailLayout.personalEmailIdEt.text.toString(),
binding.fullNameLayout.firstNameEt.text.toString(),
binding.fullNameLayout.lastNameEt.text.toString(),
binding.fullNameLayout.fullNameEt.text.toString(),
binding.dobLayout.dobEt.getText(),
getMaritalStatus(),
binding.pincodeLayout.pincodeEt.text.toString()
@@ -449,8 +432,7 @@ class ProfileFragment : BaseFragment(), View.OnClickListener,
override fun onFocusChange(view: View?, hasFocus: Boolean) {
when (view?.id) {
R.id.personal_email_id_et -> if (hasFocus) naviAnalyticsEventTracker.onEmailEdit()
R.id.first_name_et -> if (hasFocus) naviAnalyticsEventTracker.onFirstNameEdit()
R.id.last_name_et -> if (hasFocus) naviAnalyticsEventTracker.onLastNameEdit()
R.id.full_name_et -> if (hasFocus) naviAnalyticsEventTracker.onFirstNameEdit()
R.id.pincode_et -> if (hasFocus) naviAnalyticsEventTracker.onCurrentPinCodeEdit()
R.id.date_et -> if (hasFocus) naviAnalyticsEventTracker.onDobDateEdit()
R.id.month_et -> if (hasFocus) naviAnalyticsEventTracker.onDobMonthEdit()

View File

@@ -10,15 +10,14 @@ fun readName(accountName: String, binding: UserProfileFragmentBinding) {
val cursor = executeQueryToReadName(accountName)
cursor?.run {
if (!moveToFirst()) {
binding.fullNameLayout.firstNameEt.requestFocus()
binding.fullNameLayout.fullNameEt.requestFocus()
return
}
val fullName = getString(0).split(" ")
val fullName = getString(0)
binding.fullNameLayout.firstNameEt.setText(fullName.getOrNull(0)?.capitalize())
binding.fullNameLayout.lastNameEt.setText(fullName.getOrNull(1)?.capitalize())
binding.fullNameLayout.fullNameEt.setText(fullName.capitalize())
binding.dobLayout.dobEt.requestFocus()
} ?: binding.fullNameLayout.firstNameEt.requestFocus()
} ?: binding.fullNameLayout.fullNameEt.requestFocus()
cursor?.close()
}

View File

@@ -31,8 +31,7 @@ class ProfileVM : BaseVM() {
fun submitProfileDetails(
email: String,
firstName: String,
lastName: String,
name: String,
dob: String,
maritalStatus: String,
pinCode: String,
@@ -40,8 +39,7 @@ class ProfileVM : BaseVM() {
) {
coroutineScope.launch {
val profileRequest = ProfileRequest(
firstName,
lastName,
name,
email,
dob,
maritalStatus,

View File

@@ -35,40 +35,24 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/layout_dp_2"
android:letterSpacing="0.01"
android:text="@string/as_per_pan_card"
android:text="@string/as_per_pan"
app:layout_constraintBottom_toBottomOf="@id/full_name_iv"
app:layout_constraintStart_toEndOf="@id/full_name_tv"
app:layout_constraintTop_toTopOf="@id/full_name_iv" />
<com.naviapp.useridentification.common.FormEditText
android:id="@+id/first_name_et"
android:id="@+id/full_name_et"
style="@style/FormElementFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/layout_dp_16"
android:backgroundTint="@color/black"
android:hint="@string/first_name"
android:hint="@string/first_last_name"
android:maxLength="@integer/max_name_length"
android:inputType="textPersonName|textCapWords"
android:letterSpacing="0.03"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/full_name_iv"
app:layout_constraintTop_toBottomOf="@id/full_name_tv" />
<com.naviapp.useridentification.common.FormEditText
android:id="@+id/last_name_et"
style="@style/FormElementFontStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/layout_dp_16"
android:backgroundTint="@color/black"
android:hint="@string/last_name"
android:maxLength="@integer/max_name_length"
android:nextFocusDown="@id/date_et"
android:inputType="textPersonName|textCapWords"
android:letterSpacing="0.03"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/full_name_iv"
app:layout_constraintTop_toBottomOf="@id/first_name_et" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -66,7 +66,7 @@
<string name="invite_your_friends_text">Invite your friends to get discount\n on EMI rates</string>
<string name="create_profile">Create Your Profile</string>
<string name="email_id">Email ID</string>
<string name="as_per_pan_card">(As per PAN card)</string>
<string name="as_per_pan">(As per PAN)</string>
<string name="first_name">First name</string>
<string name="last_name">Last name</string>
<string name="date_of_birth">Date of Birth</string>
@@ -424,4 +424,5 @@
<string name="use_camera">Use Camera</string>
<string name="take_aadhaar_card_photo">Take Aadhaar card photo</string>
<string name="recommended">Recommended</string>
<string name="first_last_name">First &amp; Last name</string>
</resources>