diff --git a/app/core/core-common-public/src/main/kotlin/com/hedvig/android/core/common/PersonalInfoStringBuilders.kt b/app/core/core-common-public/src/main/kotlin/com/hedvig/android/core/common/PersonalInfoStringBuilders.kt index fd080a8497..ba9bbc88c6 100644 --- a/app/core/core-common-public/src/main/kotlin/com/hedvig/android/core/common/PersonalInfoStringBuilders.kt +++ b/app/core/core-common-public/src/main/kotlin/com/hedvig/android/core/common/PersonalInfoStringBuilders.kt @@ -12,6 +12,26 @@ fun formatSsn(ssn: String): String { } } +fun formatShortSsn(ssn: String): String { + val formattedSSN = ssn.replace("-", "") + if (formattedSSN.length == 10) { + val ssnLastTwoDigitsOfYear = formattedSSN.substring(0, 2) + val currentYear = java.util.Calendar.getInstance().get(java.util.Calendar.YEAR) + val firstTwoDigitsOfTheYear = currentYear / 100 + val lastTwoDigitsOfTheYear = currentYear % 100 + + val ssnLastTwoDigits = ssnLastTwoDigitsOfYear.toIntOrNull() + + return if (ssnLastTwoDigits != null && ssnLastTwoDigits > lastTwoDigitsOfTheYear) { + "${firstTwoDigitsOfTheYear - 1}$ssn" + } else { + "$firstTwoDigitsOfTheYear$ssn" + } + } else { + return ssn + } +} + fun formatName(firstName: String?, lastName: String?): String { return buildString { if (firstName != null) { diff --git a/app/feature/feature-edit-coinsured/src/main/kotlin/com/hedvig/android/feature/editcoinsured/ui/EditCoInsuredPresenter.kt b/app/feature/feature-edit-coinsured/src/main/kotlin/com/hedvig/android/feature/editcoinsured/ui/EditCoInsuredPresenter.kt index 2bef918984..e927c5f8d6 100644 --- a/app/feature/feature-edit-coinsured/src/main/kotlin/com/hedvig/android/feature/editcoinsured/ui/EditCoInsuredPresenter.kt +++ b/app/feature/feature-edit-coinsured/src/main/kotlin/com/hedvig/android/feature/editcoinsured/ui/EditCoInsuredPresenter.kt @@ -9,6 +9,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshots.Snapshot import arrow.core.raise.either +import com.hedvig.android.core.common.formatShortSsn import com.hedvig.android.core.common.safeCast import com.hedvig.android.core.uidata.UiMoney import com.hedvig.android.feature.editcoinsured.data.CoInsured @@ -187,7 +188,7 @@ internal class EditCoInsuredPresenter( addBottomSheetState = addBottomSheetState.copy(errorMessage = null) val ssn = addBottomSheetState.ssn if (ssn != null) { - val paddedSsn = getPaddedSsn(ssn) + val paddedSsn = formatShortSsn(ssn) either { val result = fetchCoInsuredPersonalInformationUseCase.invoke(paddedSsn).bind() addBottomSheetState = addBottomSheetState.copy( @@ -319,12 +320,6 @@ internal class EditCoInsuredPresenter( } else { (listState.coInsured + coInsured).toImmutableList() } - - private fun getPaddedSsn(ssn: String) = if (ssn.length == 10) { - "19$ssn" // Need to add century if not included in SSN - } else { - ssn - } } internal sealed interface EditCoInsuredEvent {