diff options
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json/trial/ApiTrial.scala')
-rw-r--r-- | src/main/scala/xyz/driver/pdsuidomain/formats/json/trial/ApiTrial.scala | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial/ApiTrial.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial/ApiTrial.scala new file mode 100644 index 0000000..3267617 --- /dev/null +++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/trial/ApiTrial.scala @@ -0,0 +1,63 @@ +package xyz.driver.pdsuidomain.formats.json.trial + +import java.time.{ZoneId, ZonedDateTime} +import java.util.UUID + +import xyz.driver.pdsuidomain.entities.Trial +import play.api.libs.functional.syntax._ +import play.api.libs.json._ + +final case class ApiTrial(id: String, + lastUpdate: Option[ZonedDateTime], + status: String, + assignee: Option[Long], + previousStatus: Option[String], + previousAssignee: Option[Long], + condition: Option[String], + phase: Option[String], + hypothesisId: Option[UUID], + studyDesignId: Option[Long], + isPartner: Boolean, + overview: Option[String], + overviewTemplate: String, + isUpdated: Boolean, + title: String) + +object ApiTrial { + + implicit val format: Format[ApiTrial] = ( + (JsPath \ "id").format[String] and + (JsPath \ "lastUpdate").formatNullable[ZonedDateTime] and + (JsPath \ "status").format[String] and + (JsPath \ "assignee").formatNullable[Long] and + (JsPath \ "previousStatus").formatNullable[String] and + (JsPath \ "previousAssignee").formatNullable[Long] and + (JsPath \ "condition").formatNullable[String] and + (JsPath \ "phase").formatNullable[String] and + (JsPath \ "hypothesisId").formatNullable[UUID] and + (JsPath \ "studyDesignId").formatNullable[Long] and + (JsPath \ "isPartner").format[Boolean] and + (JsPath \ "overview").formatNullable[String] and + (JsPath \ "overviewTemplate").format[String] and + (JsPath \ "isUpdated").format[Boolean] and + (JsPath \ "title").format[String] + ) (ApiTrial.apply, unlift(ApiTrial.unapply)) + + def fromDomain(trial: Trial): ApiTrial = ApiTrial( + id = trial.id.id, + status = TrialStatus.statusToString(trial.status), + assignee = trial.assignee.map(_.id), + previousStatus = trial.previousStatus.map(TrialStatus.statusToString), + previousAssignee = trial.previousAssignee.map(_.id), + lastUpdate = Option(ZonedDateTime.of(trial.lastUpdate, ZoneId.of("Z"))), + condition = Option(trial.condition.toString), + phase = Option(trial.phase), + hypothesisId = trial.hypothesisId.map(_.id), + studyDesignId = trial.studyDesignId.map(_.id), + isPartner = trial.isPartner, + overview = trial.overview, + overviewTemplate = trial.overviewTemplate, + isUpdated = trial.isUpdated, + title = trial.title + ) +} |