show daily or nightly tournaments in scheduled list

This commit is contained in:
Thibault Duplessis 2015-06-05 01:55:54 +02:00
parent c0af5ede43
commit 6c639cf003
2 changed files with 15 additions and 1 deletions

View file

@ -20,7 +20,7 @@ object Tournament extends LilaController {
private def tournamentNotFound(implicit ctx: Context) = NotFound(html.tournament.notFound())
val home = Open { implicit ctx =>
fetchTournaments zip repo.scheduled zip UserRepo.allSortToints(10) map {
fetchTournaments zip repo.scheduledDedup zip UserRepo.allSortToints(10) map {
case ((((created, started), finished), scheduled), leaderboard) =>
Ok(html.tournament.home(created, started, finished, scheduled, leaderboard))
}

View file

@ -84,6 +84,20 @@ object TournamentRepo {
"schedule" -> BSONDocument("$exists" -> true)
)).sort(BSONDocument("schedule.at" -> 1)).toList[Created](none)
def scheduledDedup: Fu[List[Created]] = scheduled map {
import Schedule.Freq
_.flatMap { tour =>
tour.schedule map (tour -> _)
}.foldLeft(List[Created]() -> none[Freq]) {
case ((tours, skip), (_, sched)) if skip.contains(sched.freq) => (tours, skip)
case ((tours, skip), (tour, sched)) => (tour :: tours, sched.freq match {
case Freq.Daily => Freq.Nightly.some
case Freq.Nightly => Freq.Daily.some
case _ => skip
})
}._1.reverse
}
def lastFinishedScheduledByFreq(freq: Schedule.Freq, nb: Int): Fu[List[Finished]] = coll.find(
finishedSelect ++ BSONDocument(
"schedule.freq" -> freq.name,