Skip to content

Commit 11429c0

Browse files
- add vaccination date check to verification result; (#64)
1 parent 1558ee9 commit 11429c0

File tree

3 files changed

+28
-5
lines changed

3 files changed

+28
-5
lines changed

decoder/src/main/java/dgca/verifier/app/decoder/model/RecoveryStatement.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@
2323
package dgca.verifier.app.decoder.model
2424

2525
import com.fasterxml.jackson.annotation.JsonProperty
26-
import org.joda.time.DateTime
2726
import java.io.Serializable
2827
import java.time.*
29-
import java.time.format.DateTimeFormatter
3028

3129
data class RecoveryStatement(
3230

decoder/src/main/java/dgca/verifier/app/decoder/model/Vaccination.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@
2323
package dgca.verifier.app.decoder.model
2424

2525
import com.fasterxml.jackson.annotation.JsonProperty
26+
import org.joda.time.DateTime
2627
import java.io.Serializable
28+
import java.time.OffsetDateTime
2729

2830
data class Vaccination(
2931

@@ -57,4 +59,12 @@ data class Vaccination(
5759
@JsonProperty("ci")
5860
val certificateIdentifier: String
5961

60-
) : Serializable
62+
) : Serializable {
63+
64+
fun isDateInThePast(): Boolean =
65+
try {
66+
DateTime.parse(dateOfVaccination).millis < OffsetDateTime.now().toEpochSecond() * 1000
67+
} catch (ex: Exception) {
68+
false
69+
}
70+
}

decoder/src/main/java/dgca/verifier/app/decoder/model/VerificationResult.kt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,17 @@ data class VerificationResult(
3232
var isIssuedTimeCorrect: Boolean = false,
3333
var isNotExpired: Boolean = false,
3434
var rulesValidationFailed: Boolean = false,
35+
var vaccinationVerification: VaccinationVerificationResult? = null,
3536
var testVerification: TestVerificationResult? = null,
3637
var recoveryVerification: RecoveryVerificationResult? = null
3738
) {
3839

3940
fun isValid(): Boolean {
41+
val isVaccinationValid = vaccinationVerification?.isVaccinationValid() ?: true
4042
val isTestValid = testVerification?.isTestValid() ?: true
41-
val isRecoveryValid = recoveryVerification?.isRecoveryValid() ?: true;
43+
val isRecoveryValid = recoveryVerification?.isRecoveryValid() ?: true
4244
return base45Decoded && zlibDecoded && coseVerified && cborDecoded && isSchemaValid && isTestValid &&
43-
isIssuedTimeCorrect && isNotExpired && !rulesValidationFailed && isRecoveryValid
45+
isIssuedTimeCorrect && isNotExpired && !rulesValidationFailed && isRecoveryValid && isVaccinationValid
4446
}
4547

4648
/**
@@ -73,6 +75,15 @@ data class VerificationResult(
7375
recoveryVerification!!.isNotValidSoFar
7476
}
7577

78+
/**
79+
* Checks if vaccination date is valid.
80+
*/
81+
fun isVaccinationDateInTheFuture(): Boolean = if (vaccinationVerification == null) {
82+
false
83+
} else {
84+
!vaccinationVerification!!.isVaccinationDateInThePast
85+
}
86+
7687
override fun toString(): String {
7788
return "VerificationResult: \n" +
7889
"base45Decoded: $base45Decoded \n" +
@@ -84,6 +95,10 @@ data class VerificationResult(
8495
}
8596
}
8697

98+
data class VaccinationVerificationResult(val isVaccinationDateInThePast: Boolean) {
99+
fun isVaccinationValid(): Boolean = isVaccinationDateInThePast
100+
}
101+
87102
data class TestVerificationResult(val isTestResultNegative: Boolean, val isTestDateInThePast: Boolean) {
88103
fun isTestValid(): Boolean = isTestResultNegative && isTestDateInThePast
89104
}

0 commit comments

Comments
 (0)