app/controllers/EditorialSupportTeamsController.scala (52 lines of code) (raw):
package controllers
import com.gu.pandomainauth.PanDomainAuthSettingsRefresher
import com.gu.permissions.PermissionsProvider
import com.gu.workflow.util.Dynamo
import config.Config
import models.{EditorialSupportStaff, StaffUpdate}
import play.api.libs.ws.WSClient
import play.api.mvc.{BaseController, ControllerComponents}
import scala.jdk.CollectionConverters._
class EditorialSupportTeamsController(
override val config: Config,
override val controllerComponents: ControllerComponents,
override val wsClient: WSClient,
override val panDomainSettings: PanDomainAuthSettingsRefresher,
override val permissions: PermissionsProvider
) extends BaseController with PanDomainAuthActions with Dynamo {
private val editorialSupportTable = dynamoDb.getTable(config.editorialSupportDynamoTable)
def listStaff(): List[EditorialSupportStaff] = {
val items = editorialSupportTable.scan().asScala.toList
val staff = items.map(EditorialSupportStaff.fromItem)
staff.map {
case s if s.name == "none" => s.copy(name = "")
case s => s
}
}
def updateStaff(update: StaffUpdate): Unit = {
val name = if(update.name == "") { "none" } else { update.name }
update.action match {
case "delete" =>
editorialSupportTable.deleteItem("id", s"${update.team}-${update.name}")
case "add_front" =>
save(EditorialSupportStaff(
id = s"Fronts-${update.team}",
name,
update.team,
active = true,
description = None
))
case _ =>
save(EditorialSupportStaff(
id = update.id.getOrElse(s"${update.team}-${update.name}"),
name,
update.team,
update.active.contains("on"),
update.description
))
}
}
private def save(staff: EditorialSupportStaff): Unit = {
editorialSupportTable.putItem(EditorialSupportStaff.toItem(staff))
}
}