public IEnumerable<Talk> Load() { var registeredTalks = new List<Talk>(); foreach (var talk in TalksList) { var unit = CheckForValidUnit(talk); string topic=null; var durationPosition = talk.IndexOfAny("0123456789".ToCharArray()); var duration = "1"; if (durationPosition == -1) topic = talk.Substring(0, talk.LastIndexOf(unit, StringComparison.OrdinalIgnoreCase)); else { topic = talk.Substring(0, durationPosition); duration = talk.Substring(durationPosition, talk.LastIndexOfAny("0123456789".ToCharArray()) - durationPosition + 1); } var talkDuration = new TalkDuration((ConferenceTalkTimeUnit)Enum.Parse(typeof(ConferenceTalkTimeUnit), unit, true) ,Convert.ToInt32(duration)); registeredTalks.Add(new Talk(topic, talkDuration)); } return registeredTalks; }
public Talk(string topic, TalkDuration duration) { try { Duration = duration; if (IsInValidTitle(topic)) throw new ArgumentException("Title Cannot contain Numeric values"); Topic = topic; } catch (ArgumentException e) { throw; } }
static void Main(string[] args) { Conference _technicalConference; TalkDuration _duration; ITalkScheduler _scheduler; List<Track> _tracks; List<Day> _days; // TEST THOUGHTWORKS TEST INPUTS _duration = new TalkDuration(ConferenceTalkTimeUnit.Min, 60); // Initialize Talk Duration _scheduler = new Scheduler(); _days = new List<Day>(); // Initialization of Two days Track from the _tracks = new List<Track>(); for (var i = 0; i < 2; i++) { _tracks.Add(InputFactory.GetNewTrack()); } _days.Add(new Day(_tracks)); _technicalConference = new Conference(_scheduler, _days); _technicalConference.TalksLoader = new ConferenceTalkLoader(InputFactory.GetTalksListOne()); _technicalConference.TalksSubmission(); _technicalConference.TalksLoader = new ConferenceTalkLoader(InputFactory.GetTalksListTwo()); _technicalConference.TalksSubmission(); _technicalConference.Schedule(); Console.WriteLine("*******************Conference Tracking Management System******************"); Console.WriteLine("**************************************************************************"); Console.WriteLine(); Console.WriteLine("*********************TEST INPUTS GIVEN BY THOUGHTWORKS********************"); Console.WriteLine("**************************************************************************"); PrintFormatter t = new PrintFormatter(); t.PrintFormat(_days); /// TEST MY OWN CONFERENCE TRACK INPUTS Console.WriteLine(); Console.WriteLine(); Console.WriteLine("**************************************************************************"); Console.WriteLine("*********************TEST INPUTS GIVEN BY ME******************************"); Console.WriteLine("**************************************************************************"); // TEST THOUGHTWORKS TEST INPUTS _duration = new TalkDuration(ConferenceTalkTimeUnit.Min, 60); // Initialize Talk Duration _scheduler = new Scheduler(); _days = new List<Day>(); // Initialization of Two days Track from the _tracks = new List<Track>(); for (var i = 0; i < 2; i++) { _tracks.Add(InputFactory.GetNewTrack()); } _days.Add(new Day(_tracks)); _technicalConference = new Conference(_scheduler, _days); _technicalConference.TalksLoader = new ConferenceTalkLoader(InputFactory.GetMyTalksListOne()); _technicalConference.TalksSubmission(); _technicalConference.TalksLoader = new ConferenceTalkLoader(InputFactory.GetMyTalksListTwo()); _technicalConference.TalksSubmission(); _technicalConference.Schedule(); t.PrintFormat(_days); Console.ReadLine(); }