From 601446186065793bb7c5fd508c4880d23b637302 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sat, 6 Nov 2021 16:42:01 +0100 Subject: [PATCH] unset RelayRound.startedAt upon reset if startsAt is in the future --- modules/relay/src/main/RelayApi.scala | 13 +++++++++---- modules/relay/src/main/RelayRound.scala | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/relay/src/main/RelayApi.scala b/modules/relay/src/main/RelayApi.scala index 23f97efe00..749c7961fe 100644 --- a/modules/relay/src/main/RelayApi.scala +++ b/modules/relay/src/main/RelayApi.scala @@ -217,10 +217,15 @@ final class RelayApi( } } - def reset(relay: RelayRound, by: User): Funit = - studyApi.deleteAllChapters(relay.studyId, by) >>- - multiboard.invalidate(relay.studyId) >> - requestPlay(relay.id, v = true) + def reset(old: RelayRound, by: User): Funit = + WithRelay(old.id) { relay => + studyApi.deleteAllChapters(relay.studyId, by) >> { + old.hasStartedEarly ?? roundRepo.coll.update + .one($id(relay.id), $set("finished" -> false) ++ $unset("startedAt")) + .void + } >>- + multiboard.invalidate(relay.studyId) + } >> requestPlay(old.id, v = true) def deleteRound(roundId: RelayRound.Id): Fu[Option[RelayTour]] = byIdWithTour(roundId) flatMap { diff --git a/modules/relay/src/main/RelayRound.scala b/modules/relay/src/main/RelayRound.scala index ea9b019a42..02b610cb51 100644 --- a/modules/relay/src/main/RelayRound.scala +++ b/modules/relay/src/main/RelayRound.scala @@ -47,6 +47,7 @@ case class RelayRound( ) def hasStarted = startedAt.isDefined + def hasStartedEarly = hasStarted && startsAt.exists(_ isAfter DateTime.now) def shouldHaveStarted = hasStarted || startsAt.exists(_ isBefore DateTime.now) def shouldGiveUp =