public Contest?Find(string contestId) { lock (_lock) { if (_cache.ContainsKey(contestId)) { return(Contest.FromData(_cache[contestId])); } return(null); } }
public Contest?FindActiveByContestantId(string contestantId) { lock (_lock) { var data = _cache.Values.FirstOrDefault( c => !c.HasEnded && c.Contestants.Values.Any( x => x.Contains(contestantId))); if (data == null) { return(null); } return(Contest.FromData(data)); } }