metadata-editor/app/model/UsageRightsLease.scala (43 lines of code) (raw):

package model import com.gu.mediaservice.model._ import play.api.ConfigLoader import play.api.libs.json._ import scala.jdk.CollectionConverters._ case class UsageRightsLease( category: String, `type`: String, startDate: String, duration: Option[Int], notes: Option[String] ) object UsageRightsLease { def getLeasesForSpec(u: UsageRightsSpec, leases: Seq[UsageRightsLease]): Seq[UsageRightsLease] = leases.filter(_.category == u.category) implicit val writes: Writes[UsageRightsLease] = Json.writes[UsageRightsLease] implicit val configLoader: ConfigLoader[Seq[UsageRightsLease]] = { ConfigLoader(_.getConfigList).map( _.asScala.toSeq.map(config => { val categoryId = if (config.hasPath("category")) { config.getString("category") } else "" val leaseType = if (config.hasPath("type")) { config.getString("type") } else "" val startDate = if (config.hasPath("startDate")) { config.getString("startDate") } else "" val duration = if (config.hasPath("duration")) { Some(config.getInt("duration")) } else None val notes = if (config.hasPath("notes")) { Some(config.getString("notes")) } else None UsageRightsLease ( category = categoryId, `type` = leaseType, startDate = startDate, duration = duration, notes = notes ) })) } }