private static Developer CreateAnonymousDeveloper(IDeveloperCollection developerCollection) { var anonymousDeveloper = new Developer(); developerCollection.Insert(anonymousDeveloper); return(anonymousDeveloper); }
private static Developer FindOrCreateCurrentDeveloper(string ideSessionUUID, IDeveloperCollection developerCollection) { if (ideSessionUUID == null) { return(CreateAnonymousDeveloper(developerCollection)); } var candidates = developerCollection.FindBySessionId(ideSessionUUID); switch (candidates.Count) { case 0: var newDeveloper = new Developer(); newDeveloper.SessionIds.Add(ideSessionUUID); developerCollection.Insert(newDeveloper); return(newDeveloper); case 1: return(candidates.First()); default: _logger.Error("More than one developer with the same session id encountered:"); _logger.Error(" - Session Id: {0}", ideSessionUUID); _logger.Error(" - {0} developers with same id:", candidates.Count); foreach (var developer in candidates) { _logger.Error(" - Developer: {0}", developer.Id); } throw new Exception("More than one developer with the same session id encountered"); } }