public ResultReasonTuple CanBeEnded() { var result = new ResultReasonTuple(true); if (Status == TournamentStatus.Prestart) { return(new ResultReasonTuple(false, Text.RoundNotStarted)); } if (Status == TournamentStatus.Ended) { return(new ResultReasonTuple(false, Text.RoundAlreadyEnded)); } var nonScoredContestants = ContestantEntries.Where(p => p.TotalScore == null).Select(p => p.Contestant.Name); if (nonScoredContestants.Count() != 0) { result.IsTrue = false; if (nonScoredContestants.Count() > 1) { result.Reason = Text.ContestantsNotScored; } else { result.Reason = String.Format(Text.ContestantXNotScored, nonScoredContestants.First()); } } return(result); }
public ResultReasonTuple CanEndCurrentRound(bool?forceRecheck = false) { if (_canEndRound == null || forceRecheck.IsTrue()) { _canEndRound = new ResultReasonTuple(); var round = GetCurrentRound(); if (round != null) { _canEndRound = round.CanBeEnded(); } } return(_canEndRound); }