aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-06-27 17:13:02 -0700
committervlad <vlad@driver.xyz>2017-06-27 17:13:02 -0700
commit5832f63b84d7388441d1200f2442dc1e9de0225c (patch)
tree32f63acdc920c14effc3d0d2822c05c125ad49e4 /src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala
parent9dd50590d4c8f8b9442d7c21ddd1def9dd453d5e (diff)
downloadrest-query-5832f63b84d7388441d1200f2442dc1e9de0225c.tar.gz
rest-query-5832f63b84d7388441d1200f2442dc1e9de0225c.tar.bz2
rest-query-5832f63b84d7388441d1200f2442dc1e9de0225c.zip
All PDS UI domain models, API case classes, service traits and necessary utils moved to pdsui-commonv0.1.11
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala b/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala
new file mode 100644
index 0000000..416237a
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuidomain/formats/json/intervention/ApiPartialIntervention.scala
@@ -0,0 +1,44 @@
+package xyz.driver.pdsuidomain.formats.json.intervention
+
+import xyz.driver.pdsuicommon.domain.LongId
+import xyz.driver.pdsuidomain.entities.{InterventionArm, InterventionWithArms}
+import play.api.libs.functional.syntax._
+import play.api.libs.json._
+
+final case class ApiPartialIntervention(typeId: Option[Long],
+ description: Option[String],
+ isActive: Option[Boolean],
+ arms: Option[List[Long]]) {
+
+ def applyTo(orig: InterventionWithArms): InterventionWithArms = {
+ val origIntervention = orig.intervention
+ val draftArmList = arms.map(_.map(x => InterventionArm(LongId(x), orig.intervention.id)))
+ orig.copy(
+ intervention = origIntervention.copy(
+ typeId = typeId.map(LongId(_)).orElse(origIntervention.typeId),
+ description = description.getOrElse(origIntervention.description),
+ isActive = isActive.getOrElse(origIntervention.isActive)
+ ),
+ arms = draftArmList.getOrElse(orig.arms)
+ )
+ }
+}
+
+object ApiPartialIntervention {
+
+ private val reads: Reads[ApiPartialIntervention] = (
+ (JsPath \ "typeId").readNullable[Long] and
+ (JsPath \ "description").readNullable[String] and
+ (JsPath \ "isActive").readNullable[Boolean] and
+ (JsPath \ "arms").readNullable[List[Long]]
+ ) (ApiPartialIntervention.apply _)
+
+ private val writes: Writes[ApiPartialIntervention] = (
+ (JsPath \ "typeId").writeNullable[Long] and
+ (JsPath \ "description").writeNullable[String] and
+ (JsPath \ "isActive").writeNullable[Boolean] and
+ (JsPath \ "arms").writeNullable[List[Long]]
+ ) (unlift(ApiPartialIntervention.unapply))
+
+ implicit val format: Format[ApiPartialIntervention] = Format(reads, writes)
+}