From fbb2ffc097caec4fb2810f3d08212e2ceca5f6fc Mon Sep 17 00:00:00 2001
From: oleksandrsarapulovgl
<82441124+oleksandrsarapulovgl@users.noreply.github.com>
Date: Fri, 23 Jul 2021 10:42:38 +0300
Subject: [PATCH] Feature/os alignment new (#89)
* Updated wallet texts displaying
* Added certificate type to claim certificate page
* Implemented manufacturer check up
* Updated
* Update
* Update
* Update
* Update
* Update
* Update
---
.idea/sonarIssues.xml | 90 +++++++++++++++
.../0223df1f55766185176f6d7c6c73166998c9b604} | 0
.../4774f218010287c0da4585eacc9ffd61e11503ce} | 0
.../76dac2609fb4a81960df30700eef5f1189545226} | 0
... a506d20ab76082e565759f0570e17bdd3438fe20} | 0
.idea/sonarlint/issuestore/index.pb | 16 +--
.../certificate/CertificateCardsAdapter.kt | 3 +-
.../claim/ClaimCertificateFragment.kt | 49 ++++----
.../certificate/claim/RecoveryViewHolder.kt | 9 +-
.../certificate/claim/TestViewHolder.kt | 15 +--
.../claim/VaccinationViewHolder.kt | 7 +-
.../certificate/claim/ViewHolderUtils.kt | 56 +++++++++
.../view/ViewCertificateFragment.kt | 42 +++----
.../app/android/data/CertificateModel.kt | 31 ++++-
.../wallet/app/android/data/local/Mapper.kt | 74 +++++++++++-
.../res/layout/fragment_certificate_claim.xml | 108 ++++++++++--------
.../res/layout/fragment_certificate_view.xml | 96 ++++++----------
app/src/main/res/layout/item_recovery.xml | 37 +++---
app/src/main/res/layout/item_test.xml | 71 ++++++++----
app/src/main/res/layout/item_vaccination.xml | 34 ++++--
app/src/main/res/values/strings.xml | 26 ++---
21 files changed, 505 insertions(+), 259 deletions(-)
rename .idea/sonarlint/issuestore/{1/9/19ce0fd1a612f464942365b703899170a83ca69c => 0/2/0223df1f55766185176f6d7c6c73166998c9b604} (100%)
rename .idea/sonarlint/issuestore/{1/b/1b91abc18e5933645a5c49601bf7a7c50d860768 => 4/7/4774f218010287c0da4585eacc9ffd61e11503ce} (100%)
rename .idea/sonarlint/issuestore/{4/f/4f60981f36816db5bcc34a01c29b496f009b43b7 => 7/6/76dac2609fb4a81960df30700eef5f1189545226} (100%)
rename .idea/sonarlint/issuestore/a/5/{a5f5b6bca6a2efb76a4c5fa919d43eb5353e6a03 => a506d20ab76082e565759f0570e17bdd3438fe20} (100%)
create mode 100644 app/src/main/java/dgca/wallet/app/android/certificate/claim/ViewHolderUtils.kt
diff --git a/.idea/sonarIssues.xml b/.idea/sonarIssues.xml
index b4698ceb..76ddcb47 100644
--- a/.idea/sonarIssues.xml
+++ b/.idea/sonarIssues.xml
@@ -123,6 +123,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -333,6 +393,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -823,6 +893,11 @@
+
+
+
+
+
@@ -848,11 +923,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/sonarlint/issuestore/1/9/19ce0fd1a612f464942365b703899170a83ca69c b/.idea/sonarlint/issuestore/0/2/0223df1f55766185176f6d7c6c73166998c9b604
similarity index 100%
rename from .idea/sonarlint/issuestore/1/9/19ce0fd1a612f464942365b703899170a83ca69c
rename to .idea/sonarlint/issuestore/0/2/0223df1f55766185176f6d7c6c73166998c9b604
diff --git a/.idea/sonarlint/issuestore/1/b/1b91abc18e5933645a5c49601bf7a7c50d860768 b/.idea/sonarlint/issuestore/4/7/4774f218010287c0da4585eacc9ffd61e11503ce
similarity index 100%
rename from .idea/sonarlint/issuestore/1/b/1b91abc18e5933645a5c49601bf7a7c50d860768
rename to .idea/sonarlint/issuestore/4/7/4774f218010287c0da4585eacc9ffd61e11503ce
diff --git a/.idea/sonarlint/issuestore/4/f/4f60981f36816db5bcc34a01c29b496f009b43b7 b/.idea/sonarlint/issuestore/7/6/76dac2609fb4a81960df30700eef5f1189545226
similarity index 100%
rename from .idea/sonarlint/issuestore/4/f/4f60981f36816db5bcc34a01c29b496f009b43b7
rename to .idea/sonarlint/issuestore/7/6/76dac2609fb4a81960df30700eef5f1189545226
diff --git a/.idea/sonarlint/issuestore/a/5/a5f5b6bca6a2efb76a4c5fa919d43eb5353e6a03 b/.idea/sonarlint/issuestore/a/5/a506d20ab76082e565759f0570e17bdd3438fe20
similarity index 100%
rename from .idea/sonarlint/issuestore/a/5/a5f5b6bca6a2efb76a4c5fa919d43eb5353e6a03
rename to .idea/sonarlint/issuestore/a/5/a506d20ab76082e565759f0570e17bdd3438fe20
diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb
index 1d667db5..d8845623 100644
--- a/.idea/sonarlint/issuestore/index.pb
+++ b/.idea/sonarlint/issuestore/index.pb
@@ -67,11 +67,11 @@ m
=app/src/main/java/dgca/wallet/app/android/di/NetworkModule.kt,a/5/a5240ece1f0757097e00f43d148a437b74524977
v
Fapp/src/main/java/dgca/wallet/app/android/network/HeaderInterceptor.kt,8/f/8f7d10077315765fd963586fb7c6992ade217f49
-{
-Ksrc/main/java/dgca/verifier/app/engine/data/source/rules/RulesDataSource.kt,a/5/a5f5b6bca6a2efb76a4c5fa919d43eb5353e6a03
-v
-Fsrc/main/java/dgca/verifier/app/engine/domain/rules/GetRulesUseCase.kt,1/9/19ce0fd1a612f464942365b703899170a83ca69c
-}
-Msrc/main/java/dgca/verifier/app/engine/domain/rules/DefaultGetRulesUseCase.kt,4/f/4f60981f36816db5bcc34a01c29b496f009b43b7
-
-Qsrc/test/java/dgca/verifier/app/engine/domain/rules/DefaultGetRulesUseCaseTest.kt,1/b/1b91abc18e5933645a5c49601bf7a7c50d860768
\ No newline at end of file
+r
+Bapp/src/main/java/dgca/wallet/app/android/data/CertificateModel.kt,7/6/76dac2609fb4a81960df30700eef5f1189545226
+n
+>app/src/main/java/dgca/wallet/app/android/data/local/Mapper.kt,a/5/a506d20ab76082e565759f0570e17bdd3438fe20
+
+Tapp/src/main/java/dgca/wallet/app/android/certificate/claim/VaccinationViewHolder.kt,4/7/4774f218010287c0da4585eacc9ffd61e11503ce
+
+Papp/src/main/java/dgca/wallet/app/android/certificate/CertificateCardsAdapter.kt,0/2/0223df1f55766185176f6d7c6c73166998c9b604
\ No newline at end of file
diff --git a/app/src/main/java/dgca/wallet/app/android/certificate/CertificateCardsAdapter.kt b/app/src/main/java/dgca/wallet/app/android/certificate/CertificateCardsAdapter.kt
index 6d79b8c8..47923c77 100644
--- a/app/src/main/java/dgca/wallet/app/android/certificate/CertificateCardsAdapter.kt
+++ b/app/src/main/java/dgca/wallet/app/android/certificate/CertificateCardsAdapter.kt
@@ -47,7 +47,8 @@ class CertificateCardsAdapter(
binding.titleView.text = when {
certificateCard.certificate.vaccinations?.first() != null -> binding.root.resources.getString(
R.string.vaccination,
- certificateCard.certificate.vaccinations.first().doseNumber.toString()
+ certificateCard.certificate.vaccinations.first().doseNumber.toString(),
+ certificateCard.certificate.vaccinations.first().totalSeriesOfDoses.toString()
)
certificateCard.certificate.recoveryStatements?.isNotEmpty() == true -> binding.root.resources.getString(R.string.recovery)
certificateCard.certificate.tests?.isNotEmpty() == true -> binding.root.resources.getString(R.string.test)
diff --git a/app/src/main/java/dgca/wallet/app/android/certificate/claim/ClaimCertificateFragment.kt b/app/src/main/java/dgca/wallet/app/android/certificate/claim/ClaimCertificateFragment.kt
index e3cd7955..adb293c8 100644
--- a/app/src/main/java/dgca/wallet/app/android/certificate/claim/ClaimCertificateFragment.kt
+++ b/app/src/main/java/dgca/wallet/app/android/certificate/claim/ClaimCertificateFragment.kt
@@ -34,13 +34,10 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.LinearLayoutManager
import dagger.hilt.android.AndroidEntryPoint
-import dgca.wallet.app.android.FORMATTED_YEAR_MONTH_DAY
import dgca.wallet.app.android.R
-import dgca.wallet.app.android.YEAR_MONTH_DAY
import dgca.wallet.app.android.data.CertificateModel
import dgca.wallet.app.android.data.getCertificateListData
import dgca.wallet.app.android.databinding.FragmentCertificateClaimBinding
-import dgca.wallet.app.android.parseFromTo
@AndroidEntryPoint
class ClaimCertificateFragment : Fragment() {
@@ -88,31 +85,31 @@ class ClaimCertificateFragment : Fragment() {
_binding = null
}
+ private fun CertificateModel.getType() = when {
+ this.vaccinations?.isNotEmpty() == true -> getString(
+ R.string.vaccination,
+ this.vaccinations.first().doseNumber.toString(),
+ this.vaccinations.first().totalSeriesOfDoses.toString()
+ )
+ this.recoveryStatements?.isNotEmpty() == true -> getString(R.string.recovery)
+ this.tests?.isNotEmpty() == true -> getString(R.string.test)
+ else -> ""
+ }
+
private fun showUserData(certificate: CertificateModel) {
- binding.personFullName.text = certificate.getFullName()
- binding.personStandardisedFamilyName.text = certificate.person.standardisedFamilyName
- binding.personStandardisedFamilyNameTitle.isVisible = true
- val standardisedGivenName = certificate.person.standardisedGivenName
- if (standardisedGivenName?.isNotBlank() == true) {
- binding.personStandardisedGivenName.text = standardisedGivenName
- View.VISIBLE
- } else {
- View.GONE
- }.apply {
- binding.personStandardisedGivenNameTitle.visibility = this
- binding.personStandardisedGivenName.visibility = this
- }
+ certificate.getType().bindText(binding.certificateTypeTitle, binding.certificateTypeValue)
+ certificate.getFullName().bindText(binding.nameTitle, binding.personFullName)
- val dateOfBirth = certificate.dateOfBirth.parseFromTo(YEAR_MONTH_DAY, FORMATTED_YEAR_MONTH_DAY)
- if (dateOfBirth.isNotBlank()) {
- binding.dateOfBirth.text = dateOfBirth
- View.VISIBLE
- } else {
- View.GONE
- }.apply {
- binding.dateOfBirthTitle.visibility = this
- binding.dateOfBirth.visibility = this
- }
+// val dateOfBirth = certificate.dateOfBirth.parseFromTo(YEAR_MONTH_DAY, FORMATTED_YEAR_MONTH_DAY)
+// if (dateOfBirth.isNotBlank()) {
+// binding.dateOfBirth.text = dateOfBirth
+// View.VISIBLE
+// } else {
+// View.GONE
+// }.apply {
+// binding.dateOfBirthTitle.visibility = this
+// binding.dateOfBirth.visibility = this
+// }
}
private fun onViewModelEvent(event: ClaimCertificateViewModel.ClaimCertEvent) {
diff --git a/app/src/main/java/dgca/wallet/app/android/certificate/claim/RecoveryViewHolder.kt b/app/src/main/java/dgca/wallet/app/android/certificate/claim/RecoveryViewHolder.kt
index 9a050a54..62eb49f1 100644
--- a/app/src/main/java/dgca/wallet/app/android/certificate/claim/RecoveryViewHolder.kt
+++ b/app/src/main/java/dgca/wallet/app/android/certificate/claim/RecoveryViewHolder.kt
@@ -35,10 +35,13 @@ class RecoveryViewHolder(private val binding: ItemRecoveryBinding) : RecyclerVie
fun bind(data: RecoveryModel) {
binding.diseaseValue.text = data.disease.value
- binding.validFromValue.text = data.certificateValidFrom.parseFromTo(YEAR_MONTH_DAY, FORMATTED_YEAR_MONTH_DAY)
- binding.validUntilValue.text = data.certificateValidUntil.parseFromTo(YEAR_MONTH_DAY, FORMATTED_YEAR_MONTH_DAY)
+ val validFrom = data.certificateValidFrom.parseFromTo(YEAR_MONTH_DAY, FORMATTED_YEAR_MONTH_DAY)
+ val validTo = data.certificateValidUntil.parseFromTo(YEAR_MONTH_DAY, FORMATTED_YEAR_MONTH_DAY)
+ val validFromTo = if (validFrom.isNotBlank() && validTo.isNotBlank()) "$validFrom - $validTo" else ""
+ validFromTo.bindText(binding.validFromTitle, binding.validFromValue)
binding.dateOfPositiveValue.text = data.dateOfFirstPositiveTest.parseFromTo(YEAR_MONTH_DAY, FORMATTED_YEAR_MONTH_DAY)
- binding.countryValue.text = data.countryOfVaccination
+ data.countryOfVaccination.bindCountryWith(binding.countryTitle, binding.countryValue)
+ data.certificateIssuer.bindText(binding.certificateIssuerTitle, binding.certificateIssuerValue)
}
companion object {
diff --git a/app/src/main/java/dgca/wallet/app/android/certificate/claim/TestViewHolder.kt b/app/src/main/java/dgca/wallet/app/android/certificate/claim/TestViewHolder.kt
index f2fe1333..29faae9d 100644
--- a/app/src/main/java/dgca/wallet/app/android/certificate/claim/TestViewHolder.kt
+++ b/app/src/main/java/dgca/wallet/app/android/certificate/claim/TestViewHolder.kt
@@ -35,20 +35,13 @@ class TestViewHolder(private val binding: ItemTestBinding) : RecyclerView.ViewHo
fun bind(data: TestModel) {
binding.testResultValue.text = data.resultType.value
binding.dateOfCollectionValue.text = data.dateTimeOfCollection.toFormattedDateTime()
- val dateTimeOfTestResult = data.dateTimeOfTestResult?.toFormattedDateTime()
- if (dateTimeOfTestResult?.isNotBlank() == true) {
- binding.dateOfTestResultValue.text = dateTimeOfTestResult
- View.VISIBLE
- } else {
- View.GONE
- }.apply {
- binding.dateOfTestResultTitle.visibility = this
- binding.dateOfTestResultValue.visibility = this
- }
+ (data.dateTimeOfTestResult?.toFormattedDateTime() ?: "").bindText(binding.dateOfTestResultTitle, binding.dateOfTestResultValue)
binding.diseaseValue.text = data.disease.value
binding.typeOfTestValue.text = data.typeOfTest.value
- binding.countryValue.text = data.countryOfVaccination
+ data.testingCentre.bindText(binding.testingCenterTitle, binding.testingCenterValue)
+ data.countryOfVaccination.bindCountryWith(binding.countryTitle, binding.countryValue)
+ data.certificateIssuer.bindText(binding.certificateIssuerTitle, binding.certificateIssuerValue)
}
companion object {
diff --git a/app/src/main/java/dgca/wallet/app/android/certificate/claim/VaccinationViewHolder.kt b/app/src/main/java/dgca/wallet/app/android/certificate/claim/VaccinationViewHolder.kt
index 4d9dda2c..c12d51f3 100644
--- a/app/src/main/java/dgca/wallet/app/android/certificate/claim/VaccinationViewHolder.kt
+++ b/app/src/main/java/dgca/wallet/app/android/certificate/claim/VaccinationViewHolder.kt
@@ -36,9 +36,10 @@ class VaccinationViewHolder(private val binding: ItemVaccinationBinding) : Recyc
fun bind(data: VaccinationModel) {
binding.dateValue.text = data.dateOfVaccination.parseFromTo(YEAR_MONTH_DAY, FORMATTED_YEAR_MONTH_DAY)
binding.diseaseValue.text = data.disease.value
- binding.doseTotalNumberValue.text = data.totalSeriesOfDoses.toString()
- binding.doseSequenceValue.text = data.doseNumber.toString()
- binding.countryValue.text = data.countryOfVaccination
+ data.manufacturer.value.bindText(binding.manufacturerTitle, binding.manufacturerValue)
+ data.vaccine.value.bindText(binding.vaccineOrProphylaxisTitle, binding.vaccineOrProphylaxisValue)
+ data.countryOfVaccination.bindCountryWith(binding.countryTitle, binding.countryValue)
+ data.certificateIssuer.bindText(binding.certificateIssuerTitle, binding.certificateIssuerValue)
}
companion object {
diff --git a/app/src/main/java/dgca/wallet/app/android/certificate/claim/ViewHolderUtils.kt b/app/src/main/java/dgca/wallet/app/android/certificate/claim/ViewHolderUtils.kt
new file mode 100644
index 00000000..3f8b0933
--- /dev/null
+++ b/app/src/main/java/dgca/wallet/app/android/certificate/claim/ViewHolderUtils.kt
@@ -0,0 +1,56 @@
+/*
+ * ---license-start
+ * eu-digital-green-certificates / dgca-wallet-app-android
+ * ---
+ * Copyright (C) 2021 T-Systems International GmbH and all other contributors
+ * ---
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ---license-end
+ *
+ * Created by osarapulov on 7/22/21 8:42 PM
+ */
+
+package dgca.wallet.app.android.certificate.claim
+
+import android.view.View
+import android.widget.TextView
+import java.util.*
+
+
+fun String.bindCountryWith(countryTitleView: View, countryValueView: TextView) {
+ val issuerCountry =
+ if (this.isNotBlank()) Locale("", this).displayCountry else ""
+ issuerCountry.apply {
+ if (this.isNotBlank()) {
+ countryValueView.text = this
+ View.VISIBLE
+ } else {
+ View.GONE
+ }.apply {
+ countryTitleView.visibility = this
+ countryValueView.visibility = this
+ }
+ }
+}
+
+fun String.bindText(titleView: View, valueView: TextView) = apply {
+ if (this.isNotBlank()) {
+ valueView.text = this
+ View.VISIBLE
+ } else {
+ View.GONE
+ }.apply {
+ titleView.visibility = this
+ valueView.visibility = this
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/dgca/wallet/app/android/certificate/view/ViewCertificateFragment.kt b/app/src/main/java/dgca/wallet/app/android/certificate/view/ViewCertificateFragment.kt
index f57aeb0d..c42fa359 100644
--- a/app/src/main/java/dgca/wallet/app/android/certificate/view/ViewCertificateFragment.kt
+++ b/app/src/main/java/dgca/wallet/app/android/certificate/view/ViewCertificateFragment.kt
@@ -32,14 +32,12 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import androidx.recyclerview.widget.LinearLayoutManager
import dagger.hilt.android.AndroidEntryPoint
-import dgca.wallet.app.android.FORMATTED_YEAR_MONTH_DAY
import dgca.wallet.app.android.R
-import dgca.wallet.app.android.YEAR_MONTH_DAY
import dgca.wallet.app.android.certificate.claim.CertListAdapter
+import dgca.wallet.app.android.certificate.claim.bindText
import dgca.wallet.app.android.data.CertificateModel
import dgca.wallet.app.android.data.getCertificateListData
import dgca.wallet.app.android.databinding.FragmentCertificateViewBinding
-import dgca.wallet.app.android.parseFromTo
@AndroidEntryPoint
class ViewCertificateFragment : Fragment() {
@@ -76,7 +74,8 @@ class ViewCertificateFragment : Fragment() {
binding.title.text = when {
certificate.vaccinations?.first() != null -> binding.root.resources.getString(
R.string.vaccination,
- certificate.vaccinations.first().doseNumber.toString()
+ certificate.vaccinations.first().doseNumber.toString(),
+ certificate.vaccinations.first().totalSeriesOfDoses.toString()
)
certificate.recoveryStatements?.isNotEmpty() == true -> binding.root.resources.getString(R.string.recovery)
certificate.tests?.isNotEmpty() == true -> binding.root.resources.getString(R.string.test)
@@ -118,31 +117,18 @@ class ViewCertificateFragment : Fragment() {
}
private fun showUserData(certificate: CertificateModel) {
- binding.nameTitle.isVisible = true
- binding.personFullName.text = certificate.getFullName()
- binding.personStandardisedFamilyName.text = certificate.person.standardisedFamilyName
- binding.personStandardisedFamilyNameTitle.isVisible = true
- val standardisedGivenName = certificate.person.standardisedGivenName
- if (standardisedGivenName?.isNotBlank() == true) {
- binding.personStandardisedGivenName.text = standardisedGivenName
- View.VISIBLE
- } else {
- View.GONE
- }.apply {
- binding.personStandardisedGivenNameTitle.visibility = this
- binding.personStandardisedGivenName.visibility = this
- }
+ certificate.getFullName().bindText(binding.nameTitle, binding.personFullName)
- val dateOfBirthday = certificate.dateOfBirth.parseFromTo(YEAR_MONTH_DAY, FORMATTED_YEAR_MONTH_DAY)
- if (dateOfBirthday.isNotBlank()) {
- binding.dateOfBirth.text = dateOfBirthday
- View.VISIBLE
- } else {
- View.GONE
- }.apply {
- binding.dateOfBirthTitle.visibility = this
- binding.dateOfBirth.visibility = this
- }
+// val dateOfBirthday = certificate.dateOfBirth.parseFromTo(YEAR_MONTH_DAY, FORMATTED_YEAR_MONTH_DAY)
+// if (dateOfBirthday.isNotBlank()) {
+// binding.dateOfBirth.text = dateOfBirthday
+// View.VISIBLE
+// } else {
+// View.GONE
+// }.apply {
+// binding.dateOfBirthTitle.visibility = this
+// binding.dateOfBirth.visibility = this
+// }
}
private fun onViewModelEvent(event: ViewCertificateViewModel.ViewCertEvent) {
diff --git a/app/src/main/java/dgca/wallet/app/android/data/CertificateModel.kt b/app/src/main/java/dgca/wallet/app/android/data/CertificateModel.kt
index 7bce03c4..9003dd32 100644
--- a/app/src/main/java/dgca/wallet/app/android/data/CertificateModel.kt
+++ b/app/src/main/java/dgca/wallet/app/android/data/CertificateModel.kt
@@ -29,6 +29,7 @@ data class CertificateModel(
val tests: List?,
val recoveryStatements: List?
) {
+
fun getFullName(): String {
val givenName: String? = person.givenName?.trim()
val familyName: String? = person.familyName?.trim()
@@ -62,9 +63,9 @@ data class PersonModel(
data class VaccinationModel(
override val disease: DiseaseType,
- val vaccine: String,
+ val vaccine: VaccinePropylaxisType,
val medicinalProduct: String,
- val manufacturer: String,
+ val manufacturer: ManufacturerType,
val doseNumber: Int,
val totalSeriesOfDoses: Int,
val dateOfVaccination: String,
@@ -104,6 +105,32 @@ enum class TypeOfTest(val value: String) {
UNDEFINED("")
}
+enum class VaccinePropylaxisType(val value: String) {
+ SARS_CoV_2_antigen_vaccine("SARS-CoV-2 antigen vaccine"),
+ SARS_CoV_2_mRNA_vaccine("SARS-CoV-2 mRNA vaccine"),
+ covid_19_vaccines("covid-19 vaccines"),
+ UNDEFINED("")
+}
+
+enum class ManufacturerType(val value: String) {
+ AstraZenecaAB("AstraZenecaAB"),
+ BiontechManufacturingGmbH("BiontechManufacturingGmbH"),
+ Janssen_CilagInternational("Janssen-CilagInternational"),
+ ModernaBiotechSpainS_L("ModernaBiotechSpainS.L."),
+ CurevacAG("CurevacAG"),
+ CanSinoBiologics("CanSinoBiologics"),
+ ChinaSinopharmInternationalCorp_Beijinglocation("ChinaSinopharmInternationalCorp.-Beijinglocation"),
+ SinopharmWeiqidaEuropePharmaceuticals_r_o_Praguelocation("SinopharmWeiqidaEuropePharmaceuticals.r.o.-Praguelocation"),
+ SinopharmZhijun_Shenzhen_PharmaceuticalCo_Ltd_Shenzhenlocation("SinopharmZhijun(Shenzhen)PharmaceuticalCo.Ltd.-Shenzhenlocation"),
+ NovavaxCZAS("NovavaxCZAS"),
+ GamaleyaResearchInstitute("GamaleyaResearchInstitute"),
+ VectorInstitute("VectorInstitute"),
+ SinovacBiotech("SinovacBiotech"),
+ BharatBiotech("BharatBiotech"),
+ SerumInstituteOfIndiaPrivateLimited("SerumInstituteOfIndiaPrivateLimited"),
+ UNDEFINED("UNDEFINED")
+}
+
data class RecoveryModel(
override val disease: DiseaseType,
val dateOfFirstPositiveTest: String,
diff --git a/app/src/main/java/dgca/wallet/app/android/data/local/Mapper.kt b/app/src/main/java/dgca/wallet/app/android/data/local/Mapper.kt
index 43cb52f7..f379eb99 100644
--- a/app/src/main/java/dgca/wallet/app/android/data/local/Mapper.kt
+++ b/app/src/main/java/dgca/wallet/app/android/data/local/Mapper.kt
@@ -82,12 +82,38 @@ fun TypeOfTestCode.toTypeOfTest(): TypeOfTest = when (this) {
else -> TypeOfTest.UNDEFINED
}
+fun VaccinePropylaxisCode.toVaccineProphylaxisType(): VaccinePropylaxisType = when (this) {
+ VaccinePropylaxisCode.SARS_CoV_2_antigen_vaccine -> VaccinePropylaxisType.SARS_CoV_2_antigen_vaccine
+ VaccinePropylaxisCode.SARS_CoV_2_mRNA_vaccine -> VaccinePropylaxisType.SARS_CoV_2_mRNA_vaccine
+ VaccinePropylaxisCode.covid_19_vaccines -> VaccinePropylaxisType.covid_19_vaccines
+ else -> VaccinePropylaxisType.UNDEFINED
+}
+
+fun ManufacturerCode.toManufacturerType(): ManufacturerType = when (this) {
+ ManufacturerCode.AstraZenecaAB -> ManufacturerType.AstraZenecaAB
+ ManufacturerCode.BiontechManufacturingGmbH -> ManufacturerType.BiontechManufacturingGmbH
+ ManufacturerCode.Janssen_CilagInternational -> ManufacturerType.Janssen_CilagInternational
+ ManufacturerCode.ModernaBiotechSpainS_L -> ManufacturerType.ModernaBiotechSpainS_L
+ ManufacturerCode.CurevacAG -> ManufacturerType.CurevacAG
+ ManufacturerCode.CanSinoBiologics -> ManufacturerType.CanSinoBiologics
+ ManufacturerCode.ChinaSinopharmInternationalCorp_Beijinglocation -> ManufacturerType.ChinaSinopharmInternationalCorp_Beijinglocation
+ ManufacturerCode.SinopharmWeiqidaEuropePharmaceuticals_r_o_Praguelocation -> ManufacturerType.SinopharmWeiqidaEuropePharmaceuticals_r_o_Praguelocation
+ ManufacturerCode.SinopharmZhijun_Shenzhen_PharmaceuticalCo_Ltd_Shenzhenlocation -> ManufacturerType.SinopharmZhijun_Shenzhen_PharmaceuticalCo_Ltd_Shenzhenlocation
+ ManufacturerCode.NovavaxCZAS -> ManufacturerType.NovavaxCZAS
+ ManufacturerCode.GamaleyaResearchInstitute -> ManufacturerType.GamaleyaResearchInstitute
+ ManufacturerCode.VectorInstitute -> ManufacturerType.VectorInstitute
+ ManufacturerCode.SinovacBiotech -> ManufacturerType.SinovacBiotech
+ ManufacturerCode.BharatBiotech -> ManufacturerType.BharatBiotech
+ ManufacturerCode.SerumInstituteOfIndiaPrivateLimited -> ManufacturerType.SerumInstituteOfIndiaPrivateLimited
+ else -> ManufacturerType.UNDEFINED
+}
+
fun Vaccination.toVaccinationModel(): VaccinationModel {
return VaccinationModel(
disease.toDiseaseCode().toDiseaseType(),
- vaccine,
+ vaccine.toVaccineProphylaxisCode().toVaccineProphylaxisType(),
medicinalProduct,
- manufacturer,
+ manufacturer.toManufacturerCode().toManufacturerType(),
doseNumber,
totalSeriesOfDoses,
dateOfVaccination,
@@ -117,11 +143,55 @@ fun String.toTypeOfTestCode(): TypeOfTestCode = when (this) {
else -> TypeOfTestCode.UNDEFINED
}
+fun String.toVaccineProphylaxisCode(): VaccinePropylaxisCode {
+ VaccinePropylaxisCode.values().forEach {
+ if (it.value == this) {
+ return it
+ }
+ }
+ return VaccinePropylaxisCode.UNDEFINED
+}
+
+fun String.toManufacturerCode(): ManufacturerCode {
+ ManufacturerCode.values().forEach {
+ if (it.value == this) {
+ return it
+ }
+ }
+ return ManufacturerCode.UNDEFINED
+}
+
enum class DiseaseCode(val value: String) {
COVID_19("840539006"),
UNDEFINED("")
}
+enum class VaccinePropylaxisCode(val value: String) {
+ SARS_CoV_2_antigen_vaccine("1119305005"),
+ SARS_CoV_2_mRNA_vaccine("1119349007"),
+ covid_19_vaccines("J07BX03"),
+ UNDEFINED("")
+}
+
+enum class ManufacturerCode(val value: String) {
+ AstraZenecaAB("ORG-100001699"),
+ BiontechManufacturingGmbH("ORG-100030215"),
+ Janssen_CilagInternational("ORG-100001417"),
+ ModernaBiotechSpainS_L("ORG-100031184"),
+ CurevacAG("ORG-100006270"),
+ CanSinoBiologics("ORG-100013793"),
+ ChinaSinopharmInternationalCorp_Beijinglocation("ORG-100020693"),
+ SinopharmWeiqidaEuropePharmaceuticals_r_o_Praguelocation("ORG-100010771"),
+ SinopharmZhijun_Shenzhen_PharmaceuticalCo_Ltd_Shenzhenlocation("ORG-100024420"),
+ NovavaxCZAS("ORG-100032020"),
+ GamaleyaResearchInstitute("Gamaleya-Research-Institute"),
+ VectorInstitute("Vector-Institute"),
+ SinovacBiotech("Sinovac-Biotech"),
+ BharatBiotech("Bharat-Biotech"),
+ SerumInstituteOfIndiaPrivateLimited("ORG-100001981"),
+ UNDEFINED("")
+}
+
enum class TypeOfTestCode(val value: String) {
NUCLEIC_ACID_AMPLIFICATION_WITH_PROBE_DETECTION("LP6464-4"),
RAPID_IMMUNOASSAY("LP217198-3"),
diff --git a/app/src/main/res/layout/fragment_certificate_claim.xml b/app/src/main/res/layout/fragment_certificate_claim.xml
index fcedc9e1..9b512896 100644
--- a/app/src/main/res/layout/fragment_certificate_claim.xml
+++ b/app/src/main/res/layout/fragment_certificate_claim.xml
@@ -1,6 +1,6 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+ android:text="@string/certificate_type"
+ android:textSize="18sp" />
-
-
-
-
-
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ tools:text="Vaccination 1 of 2" />
-
-
-
+ android:fontFamily="sans-serif-light"
+ android:text="@string/name"
+ android:textSize="18sp" />
+ android:textColor="@color/black"
+ android:textSize="22sp"
+ tools:text="Gabriele Musterfrau" />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:text="@string/first_positive_test_result" />
+ tools:text="Feb 26, 1998" />
+ android:text="@string/certificate_valid_from_to_title" />
+ tools:text="Feb 26, 1998 - Feb 26, 2000" />
+ android:text="@string/target_disease" />
+ tools:text="COVID-19" />
+ android:text="@string/country_of_test" />
+ tools:text="UA" />
+ android:text="@string/certificate_issuer" />
-
+ tools:text="Custom Issuer Certificate" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_test.xml b/app/src/main/res/layout/item_test.xml
index 3efbe52e..914db001 100644
--- a/app/src/main/res/layout/item_test.xml
+++ b/app/src/main/res/layout/item_test.xml
@@ -29,79 +29,94 @@
tools:background="@color/white">
+ android:text="@string/date_of_test" />
+ tools:text="Feb 26, 1998" />
+ android:text="@string/target_disease" />
+ tools:text="COVID-19" />
+ android:text="@string/type_of_test_title" />
+ tools:text="Rapid immunoassay" />
+ android:text="@string/test_result_title" />
+ tools:text="Negative" />
+ android:text="@string/date_of_test_result_title" />
+
+
+
+
+ tools:text="Custom Testing Center" />
+ android:text="@string/issuer_country" />
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_vaccination.xml b/app/src/main/res/layout/item_vaccination.xml
index 87147869..e47ab005 100644
--- a/app/src/main/res/layout/item_vaccination.xml
+++ b/app/src/main/res/layout/item_vaccination.xml
@@ -49,7 +49,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
- android:text="@string/disease_or_agent_targeted_title" />
+ android:text="@string/target_disease" />
+ android:text="@string/manufacturer" />
+ tools:text="Biontech Manufacturing GmbH" />
+ android:text="@string/vaccine_of_prophylaxis" />
+ tools:text="SARS-CoV-2 antigen vaccine" />
+ android:text="@string/issuer_country" />
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 552c862d..80b638b1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -11,7 +11,7 @@
Scan Code
Check Validity
I agree, check validity
- Vaccination Shot #%1$s
+ Vaccination %1$s of %2$s
Recovery
Test
Your Certificate
@@ -34,23 +34,17 @@
Wallet App
Next
- Standardised Family Name
- Standardised Given Name
- Date of Birth
+
Date of Vaccination
- Total Series of Doses
- Dose Number
- Country of Vaccination
- Country of Test
- Country of Issuance
- Disease or agent targeted
- Date of Collection
+ Issuer Country
+ Country of Test
+ Target Disease
+ Date of Test
Date of Test Result
Type of Test
Test Result
- Certificate Valid From
- Certificate Valid Until
- Date of First Positive Test
+ Certificate Valid From - To
+ First Positive Test Result
Tan: %1$s
TAN cannot be empty
Delete
@@ -75,4 +69,8 @@
Your certificate allows you to enter the chosen country
Your certificate is valid but has the following restrictions:
Please note that this information is without guaranty. This functions check if the certificate matches the rules of the country you are traveling to at the given time.
+ Certificate Type
+ Certificate Issuer
+ Manufacturer
+ Vaccine or Prophylaxis