From 9a82b2ff881fd6fa61a9ae69618df09770f98533 Mon Sep 17 00:00:00 2001
From: Chilja Gossow <49635654+chiljamgossow@users.noreply.github.com>
Date: Mon, 14 Jun 2021 19:46:28 +0200
Subject: [PATCH]  Recovery json (EXPOSUREAPP-7676) (#3432)

* interface recovery

* interface recovery

Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com>
---
 .../recovery/core/RecoveryCertificate.kt      |  6 ++++--
 .../core/certificate/RecoveryDccV1.kt         | 19 +++++++++++++++----
 .../storage/RecoveryCertificateContainer.kt   | 15 +++++++++------
 3 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/RecoveryCertificate.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/RecoveryCertificate.kt
index 4bc87fc83..d4fb3bc6b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/RecoveryCertificate.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/RecoveryCertificate.kt
@@ -1,8 +1,10 @@
 package de.rki.coronawarnapp.covidcertificate.recovery.core
 
 import de.rki.coronawarnapp.covidcertificate.common.certificate.CwaCovidCertificate
+import org.joda.time.LocalDate
 
 interface RecoveryCertificate : CwaCovidCertificate {
-
-    // TODO
+    val testedPositiveOn: LocalDate
+    val validFrom: LocalDate
+    val validUntil: LocalDate
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/certificate/RecoveryDccV1.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/certificate/RecoveryDccV1.kt
index 93696ec4d..0038ed3a7 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/certificate/RecoveryDccV1.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/certificate/RecoveryDccV1.kt
@@ -2,6 +2,7 @@ package de.rki.coronawarnapp.covidcertificate.recovery.core.certificate
 
 import com.google.gson.annotations.SerializedName
 import de.rki.coronawarnapp.covidcertificate.common.certificate.Dcc
+import org.joda.time.LocalDate
 
 data class RecoveryDccV1(
     @SerializedName("ver") override val version: String,
@@ -13,14 +14,24 @@ data class RecoveryDccV1(
     data class RecoveryCertificateData(
         // Disease or agent targeted, e.g. "tg": "840539006"
         @SerializedName("tg") override val targetId: String,
-
-        // TODO
-
+        // Date of First Positive NAA Test Result (required) e.g. "2021-04-21"
+        @SerializedName("fr") val fr: String,
+        // Certificate Valid From (required) e.g. "2021-05-01"
+        @SerializedName("df") val df: String,
+        // Certificate Valid Until (required) e.g. "2021-10-21"
+        @SerializedName("du") val du: String,
         // Country of Test (required)
         @SerializedName("co") override val certificateCountry: String,
         // Certificate Issuer, e.g. "is": "Ministry of Public Health, Welfare and Sport",
         @SerializedName("is") override val certificateIssuer: String,
         // Unique Certificate Identifier, e.g.  "ci": "urn:uvci:01:NL:PlA8UWS60Z4RZXVALl6GAZ"
         @SerializedName("ci") override val uniqueCertificateIdentifier: String
-    ) : Payload
+    ) : Dcc.Payload {
+        val testedPositiveOn: LocalDate
+            get() = LocalDate.parse(fr)
+        val validFrom: LocalDate
+            get() = LocalDate.parse(df)
+        val validUntil: LocalDate
+            get() = LocalDate.parse(du)
+    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/storage/RecoveryCertificateContainer.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/storage/RecoveryCertificateContainer.kt
index 496cbf7c1..65209c919 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/storage/RecoveryCertificateContainer.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/recovery/core/storage/RecoveryCertificateContainer.kt
@@ -31,7 +31,7 @@ data class RecoveryCertificateContainer(
     ): RecoveryCertificate {
         val header = certificateData.header
         val certificate = certificateData.certificate
-        val testCertificate = certificate.payload
+        val recoveryCertificate = certificate.payload
 
         return object : RecoveryCertificate {
             override val personIdentifier: CertificatePersonIdentifier
@@ -39,25 +39,28 @@ data class RecoveryCertificateContainer(
 
             override val firstName: String?
                 get() = certificate.nameData.firstName
-
             override val lastName: String
                 get() = certificate.nameData.lastName
-
             override val fullName: String
                 get() = certificate.nameData.fullName
 
             override val dateOfBirth: LocalDate
                 get() = certificate.dateOfBirth
 
-            // TODO
+            override val testedPositiveOn: LocalDate
+                get() = recoveryCertificate.testedPositiveOn
+            override val validFrom: LocalDate
+                get() = recoveryCertificate.validFrom
+            override val validUntil: LocalDate
+                get() = recoveryCertificate.validUntil
 
             override val certificateIssuer: String
                 get() = header.issuer
             override val certificateCountry: String
-                get() = Locale(userLocale.language, testCertificate.certificateCountry.uppercase())
+                get() = Locale(userLocale.language, recoveryCertificate.certificateCountry.uppercase())
                     .getDisplayCountry(userLocale)
             override val certificateId: String
-                get() = testCertificate.uniqueCertificateIdentifier
+                get() = recoveryCertificate.uniqueCertificateIdentifier
 
             override val issuer: String
                 get() = header.issuer
-- 
GitLab