lila/app/controllers/Learn.scala

46 lines
1.1 KiB
Scala

package controllers
import lila.app._
import play.api.data._
import play.api.data.Forms._
import play.api.libs.json._
import views.html
object Learn extends LilaController {
val env = Env.learn
import lila.learn.JSONHandlers._
def index = Open { implicit ctx =>
ctx.me.?? { me =>
env.api.get(me) map { Json.toJson(_) } map some
}.map { progress =>
Ok(html.learn.index(progress))
}
}
private val scoreForm = Form(mapping(
"stage" -> nonEmptyText,
"level" -> number,
"score" -> number
)(Tuple3.apply)(Tuple3.unapply))
def score = AuthBody { implicit ctx => me =>
implicit val body = ctx.body
scoreForm.bindFromRequest.fold(
err => BadRequest.fuccess, {
case (stage, level, s) =>
val score = lila.learn.StageProgress.Score(s)
env.api.setScore(me, stage, level, score) >>
Env.activity.write.learn(me.id, stage) inject Ok(Json.obj("ok" -> true))
}
)
}
def reset = AuthBody { implicit ctx => me =>
env.api.reset(me) inject Ok(Json.obj("ok" -> true))
}
}