From 5832f63b84d7388441d1200f2442dc1e9de0225c Mon Sep 17 00:00:00 2001 From: vlad Date: Tue, 27 Jun 2017 17:13:02 -0700 Subject: All PDS UI domain models, API case classes, service traits and necessary utils moved to pdsui-common --- .../formats/json/message/ApiPartialMessage.scala | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiPartialMessage.scala (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiPartialMessage.scala') diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiPartialMessage.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiPartialMessage.scala new file mode 100644 index 0000000..151234c --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/message/ApiPartialMessage.scala @@ -0,0 +1,84 @@ +package xyz.driver.pdsuidomain.formats.json.message + +import java.time.LocalDateTime + +import xyz.driver.pdsuicommon.domain._ +import play.api.libs.functional.syntax._ +import play.api.libs.json.{Format, JsPath} +import xyz.driver.pdsuidomain.entities.Message + +final case class ApiPartialMessage(text: Option[String], + recordId: Option[Long], + documentId: Option[Long], + patientId: Option[String], + trialId: Option[String], + startPage: Option[Double], + endPage: Option[Double], + evidence: Option[String], + archiveRequired: Option[Boolean], + meta: Option[String]) { + + def toDomain(userId: LongId[User]) = Message( + id = LongId(0), + text = text.getOrElse(""), + userId = userId, + isDraft = true, + recordId = recordId.map(LongId(_)), + documentId = documentId.map(LongId(_)), + patientId = patientId.map(UuidId(_)), + trialId = trialId.map(StringId(_)), + startPage = startPage, + endPage = endPage, + evidence = evidence, + archiveRequired = archiveRequired, + meta = meta, + lastUpdate = LocalDateTime.MIN + ) + + def applyTo(orig: Message): Message = { + orig.copy( + text = text.getOrElse(""), + recordId = recordId.map(LongId(_)), + documentId = documentId.map(LongId(_)), + patientId = patientId.map(UuidId(_)), + trialId = trialId.map(StringId(_)), + startPage = startPage, + endPage = endPage, + evidence = evidence, + archiveRequired = archiveRequired, + meta = meta, + lastUpdate = LocalDateTime.MIN + ) + } + +} + +object ApiPartialMessage { + + implicit val format: Format[ApiPartialMessage] = ( + (JsPath \ "text").formatNullable[String] and + (JsPath \ "recordId").formatNullable[Long] and + (JsPath \ "documentId").formatNullable[Long] and + (JsPath \ "patientId").formatNullable[String] and + (JsPath \ "trialId").formatNullable[String] and + (JsPath \ "startPage").formatNullable[Double] and + (JsPath \ "endPage").formatNullable[Double] and + (JsPath \ "evidence").formatNullable[String] and + (JsPath \ "archiveRequired").formatNullable[Boolean] and + (JsPath \ "meta").formatNullable[String] + ) (ApiPartialMessage.apply, unlift(ApiPartialMessage.unapply)) + + def fromDomain(domain: Message) = ApiPartialMessage( + text = Some(domain.text), + recordId = domain.recordId.map(_.id), + documentId = domain.documentId.map(_.id), + patientId = domain.patientId.map(_.toString), + trialId = domain.trialId.map(_.toString), + startPage = domain.startPage, + endPage = domain.endPage, + evidence = domain.evidence, + archiveRequired = domain.archiveRequired, + meta = domain.meta + ) + +} -- cgit v1.2.3