diff --git a/src/main/kotlin/application/presenter/external/serialization/ExternalServiceSerialization.kt b/src/main/kotlin/application/presenter/external/serialization/ExternalServiceSerialization.kt index d1451886..5071de10 100644 --- a/src/main/kotlin/application/presenter/external/serialization/ExternalServiceSerialization.kt +++ b/src/main/kotlin/application/presenter/external/serialization/ExternalServiceSerialization.kt @@ -9,8 +9,15 @@ package application.presenter.external.serialization import application.presenter.external.model.HealthcareUserResultDto +import application.presenter.external.model.TrackingInfoResultDto +import application.presenter.external.model.TrackingTypeResultDto import entity.healthcareuser.HealthcareUser import entity.healthcareuser.TaxCode +import entity.healthprofessional.HealthProfessionalID +import entity.room.RoomID +import entity.tracking.TrackType +import entity.tracking.TrackingInfo +import java.time.Instant /** * Serialization for external system. @@ -25,4 +32,20 @@ object ExternalServiceSerialization { name = this.name, surname = this.surname, ) + + /** + * Extension method to obtain the [TrackingInfo] of an [HealthProfessionalID] from a [TrackingInfoResultDto]. + * @return the deserialized tracking information about a health professional + */ + fun TrackingInfoResultDto.toHealthProfessionalTrackingInfo(): TrackingInfo = TrackingInfo( + dateTime = Instant.parse(this.dateTime), + individual = HealthProfessionalID(this.healthProfessionalId), + roomID = RoomID(this.roomId), + trackType = this.trackingType.toTrackingType(), + ) + + private fun TrackingTypeResultDto.toTrackingType(): TrackType = when (this) { + TrackingTypeResultDto.ENTER -> TrackType.ENTER + TrackingTypeResultDto.EXIT -> TrackType.EXIT + } }