public Participant AddParticipant(string firstname, string lastname) { if (_data == null) { LoadData(); } var participant = _data.Keys.FirstOrDefault(x => x.Firstname.Equals(firstname, StringComparison.InvariantCultureIgnoreCase) && x.Lastname.Equals(lastname, StringComparison.InvariantCultureIgnoreCase)); if (participant != null) { throw new Exception("Participant already exists"); } participant = new Participant { Firstname = firstname, Lastname = lastname }; var teaPreference = new TeaPreference { ParticipantId = participant.Id }; _data.TryAdd(participant, teaPreference); SaveChanges(); return(participant); }
private void LoadData() { if (_data == null) { var now = DateTime.Now; // Normally, data is loaded from some database or appropriate repository // For the purpose of this exercise, we just use some dummy data _data = new ConcurrentDictionary <Participant, TeaPreference>(); var participant = new Participant { Firstname = "Theresa", Lastname = "May" }; var teaPreference = new TeaPreference { ParticipantId = participant.Id, AddSugar = true, TeaBrand = TeaBrand.Lipton }; _data.TryAdd(participant, teaPreference); participant.Rounds.Add(now - new TimeSpan(1, 0, 0, 0)); participant.Rounds.Add(now - new TimeSpan(2, 0, 0, 0)); participant = new Participant { Firstname = "John", Lastname = "Major" }; teaPreference = new TeaPreference { ParticipantId = participant.Id, AddMilk = true, AddSugar = true, TeaBrand = TeaBrand.Decaf }; _data.TryAdd(participant, teaPreference); participant.Rounds.Add(now - new TimeSpan(4, 0, 0, 0)); participant.Rounds.Add(now - new TimeSpan(10, 0, 0, 0)); participant = new Participant { Firstname = "Tony", Lastname = "Blair" }; teaPreference = new TeaPreference { ParticipantId = participant.Id, AddMilk = true, TeaBrand = TeaBrand.Twinnings }; _data.TryAdd(participant, teaPreference); participant.Rounds.Add(now - new TimeSpan(0, 1, 0, 0)); participant = new Participant { Firstname = "Gordon", Lastname = "Brown" }; teaPreference = new TeaPreference { ParticipantId = participant.Id, TeaBrand = TeaBrand.Lipton }; _data.TryAdd(participant, teaPreference); participant.Rounds.Add(now - new TimeSpan(0, 2, 0, 0)); participant.Rounds.Add(now - new TimeSpan(0, 3, 0, 0)); participant.Rounds.Add(now - new TimeSpan(1, 1, 0, 0)); participant.Rounds.Add(now - new TimeSpan(2, 1, 0, 0)); participant.Rounds.Add(now - new TimeSpan(2, 2, 0, 0)); participant = new Participant { Firstname = "David", Lastname = "Cameron" }; teaPreference = new TeaPreference { ParticipantId = participant.Id, TeaBrand = TeaBrand.Tetley }; _data.TryAdd(participant, teaPreference); participant.Rounds.Add(now - new TimeSpan(0, 3, 0, 0)); participant.Rounds.Add(now - new TimeSpan(1, 3, 0, 0)); } }