public void TestArrageActivitiesAfternoonOnly() { //Arrange var mock = new Mock <IActivitySource>(); mock.Setup(x => x.GetActivities()).Returns(new List <Activity> { new Activity("Activity A", new ActivityDuration(TimeUnit.Min, 60)), new Activity("Activity B", new ActivityDuration(TimeUnit.Min, 60)), new Activity("Activity C", new ActivityDuration(TimeUnit.Min, 45)), new Activity("Activity D", new ActivityDuration(TimeUnit.Min, 30)), }); var activitySource = mock.Object; var outputFile = Path.Combine(Environment.CurrentDirectory, "output.txt"); var conferenceManager = new ConferenceManager( activitySource, new TextFileSchedulePrinter(outputFile) ); //Act var schedules = new ConferenceSchedule[] { new ConferenceSchedule(null, new ConferencePhase(240)) }; conferenceManager.Arrange(schedules); conferenceManager.Print(schedules); //Assert Assert.True(schedules.All(x => x.IsValid())); Assert.True(schedules[0].Afternoon.Slots.Count == 4); Assert.True(File.Exists(outputFile)); }
public void TestArrageWithCustomComparer() { //Arrange var mock = new Mock <IActivitySource>(); mock.Setup(x => x.GetActivities()).Returns(new List <Activity> { new Activity("Activity A", new ActivityDuration(TimeUnit.Min, 60)), new Activity("Activity B", new ActivityDuration(TimeUnit.Min, 60)), new Activity("Activity C", new ActivityDuration(TimeUnit.Min, 45)), new Activity("Activity D", new ActivityDuration(TimeUnit.Min, 30)), }); var activitySource = mock.Object; var outputFile = Path.Combine(Environment.CurrentDirectory, "output.txt"); var conferenceManager = new ConferenceManager( activitySource, new TextFileSchedulePrinter(outputFile) ); //Act & Assert var schedules = new ConferenceSchedule[] { new ConferenceSchedule(new ConferencePhase(180), new ConferencePhase(240)) }; conferenceManager.Arrange(schedules, new LongTermFirstComparer()); Assert.True(schedules[0].Morning.Slots[0].Duration == 60M); conferenceManager.Arrange(schedules, new ShortTermFirstComparer()); Assert.True(schedules[0].Morning.Slots[0].Duration == 30M); conferenceManager.Arrange(schedules, new ASCIIFirstComparer()); Assert.True(schedules[0].Morning.Slots[0].Title == "Activity D"); }
public static List<string> ConvertToLines(ConferenceSchedule conferenceSchedule) { var lines = new List<string>(); var i = 1; foreach(var track in conferenceSchedule.Tracks){ var line = string.Format("Track {0}:", i); lines.Add(line); foreach(var talk in track.Morning.Talks){ var talkLine = GetTalkLine(talk); lines.Add(talkLine); } lines.Add("12:00PM Lunch"); foreach (var talk in track.Afternoon.Talks) { var talkLine = GetTalkLine(talk); lines.Add(talkLine); } var networkingLine = GetNetworkingLine(track); lines.Add(networkingLine); lines.Add(""); i++; } return lines; }
public List <ConferenceSchedule> GetAll(int programId, int day) { ConferenceScheduleDAC _conferenceScheduleComponent = new ConferenceScheduleDAC(); IDataReader reader = _conferenceScheduleComponent.GetAllConferenceSchedule(String.Format(" ConferenceProgramId = {0} AND DAY(StartTime) = {1}", programId, day)).CreateDataReader(); List <ConferenceSchedule> _conferenceScheduleList = new List <ConferenceSchedule>(); while (reader.Read()) { if (_conferenceScheduleList == null) { _conferenceScheduleList = new List <ConferenceSchedule>(); } ConferenceSchedule _conferenceSchedule = new ConferenceSchedule(); if (reader["ScheduleId"] != DBNull.Value) { _conferenceSchedule.ScheduleId = Convert.ToInt32(reader["ScheduleId"]); } if (reader["ConferenceProgramId"] != DBNull.Value) { _conferenceSchedule.ConferenceProgramId = Convert.ToInt32(reader["ConferenceProgramId"]); } if (reader["Title"] != DBNull.Value) { _conferenceSchedule.Title = Convert.ToString(reader["Title"]); } if (reader["ScheduleSessionTypeId"] != DBNull.Value) { _conferenceSchedule.ScheduleSessionTypeId = Convert.ToInt32(reader["ScheduleSessionTypeId"]); } if (reader["StartTime"] != DBNull.Value) { _conferenceSchedule.StartTime = Convert.ToDateTime(reader["StartTime"]); } if (reader["EndTime"] != DBNull.Value) { _conferenceSchedule.EndTime = Convert.ToDateTime(reader["EndTime"]); } if (reader["SpeakerName"] != DBNull.Value) { _conferenceSchedule.SpeakerName = Convert.ToString(reader["SpeakerName"]); } if (reader["ConferenceHallId"] != DBNull.Value) { _conferenceSchedule.ConferenceHallId = Convert.ToInt32(reader["ConferenceHallId"]); } if (reader["Description"] != DBNull.Value) { _conferenceSchedule.Description = Convert.ToString(reader["Description"]); } if (reader["AllDescription"] != DBNull.Value) { _conferenceSchedule.AllDescription = Convert.ToString(reader["AllDescription"]); } _conferenceSchedule.NewRecord = false; _conferenceScheduleList.Add(_conferenceSchedule); } reader.Close(); return(_conferenceScheduleList); }
public async Task <ConferenceSchedule> GetSessions() { HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Accept.Clear(); Task <string> response = client.GetStringAsync("https://sessionize.com/api/v2/r45vzc0j/view/Sessions"); string r = await response; //dynamic resp = JsonConvert.DeserializeObject<dynamic>(r); List <SessionizeResponse> resp = JsonConvert.DeserializeObject <List <SessionizeResponse> >(r); List <SessionizeSession> sessionizeSessions = resp[0].SessionizeSessions; List <LiveSession> liveSessions = new List <LiveSession>(); List <OnDemandSession> onDemandSessions = new List <OnDemandSession>(); foreach (SessionizeSession szSession in sessionizeSessions) { if (szSession.Categories[0].CategoryItems[0].Name == "On Demand") { onDemandSessions.Add(new OnDemandSession { Id = szSession.Id, Title = szSession.Title, Description = szSession.Description, Watch = szSession.questionAnswers[0].Answer, Speakers = szSession.Speakers }); } else { liveSessions.Add(new LiveSession { Id = szSession.Id, Title = szSession.Title, Description = szSession.Description, Watch = szSession.questionAnswers[0].Answer, StartsAt = szSession.StartsAt, EndsAt = szSession.EndsAt, Speakers = szSession.Speakers }); } } ConferenceSchedule schedule = new ConferenceSchedule { LiveSessions = liveSessions, OnDemandSessions = onDemandSessions }; return(schedule); }
public bool Insert(ConferenceSchedule conferenceschedule) { int autonumber = 0; ConferenceScheduleDAC conferencescheduleComponent = new ConferenceScheduleDAC(); bool endedSuccessfuly = conferencescheduleComponent.InsertNewConferenceSchedule(ref autonumber, conferenceschedule.ConferenceProgramId, conferenceschedule.Title, conferenceschedule.ScheduleSessionTypeId, conferenceschedule.StartTime, conferenceschedule.EndTime, conferenceschedule.SpeakerName, conferenceschedule.ConferenceHallId, conferenceschedule.Description, conferenceschedule.AllDescription, conferenceschedule.SpeakerID, conferenceschedule.DocPath); if (endedSuccessfuly) { conferenceschedule.ScheduleId = autonumber; } return(endedSuccessfuly); }
public void TestLackOfAcitivities() { //Arrange var mock = new Mock <IActivitySource>(); mock.Setup(x => x.GetActivities()).Returns(new List <Activity>()); var activitySource = mock.Object; var outputFile = Path.Combine(Environment.CurrentDirectory, "output.txt"); var conferenceManager = new ConferenceManager( activitySource, new TextFileSchedulePrinter(outputFile) ); //Act & Assert var schedules = new ConferenceSchedule[] { new ConferenceSchedule(new ConferencePhase(180), new ConferencePhase(240)) }; Assert.Throws <LackOfActivitiesException>(() => conferenceManager.Arrange(schedules)); }
static void Main(string[] args) { var inputFile = Path.Combine(Environment.CurrentDirectory, "tracks.txt"); var outputFile = Path.Combine(Environment.CurrentDirectory, "output.txt"); /* * ConferenceManager is a high-level component to arrange and print schedules.You can load activities * from any type implements IActivitySource. TextFileActivitySource is default implemention what I provided * in this app. To make different outputs with any type inherits from SchedulePrinterBase. TextFileSchedulePrinter * and TerminalSchedulePrinter are available in this app. */ var conferenceManager = new ConferenceManager( new TextFileActivitySource(inputFile), new TextFileSchedulePrinter(outputFile) ); //Build a 2 days schedule plan and then to arrange activities from IActivitySource. var schedules = ConferenceSchedule.Days(2); conferenceManager.Arrange(schedules); conferenceManager.Print(schedules); }
protected override void RenderTrackHeader(ConferenceSchedule schedule, int numOfDay) { Console.WriteLine($"\nTrack {numOfDay}:"); }
protected virtual void RenderTrackHeader(ConferenceSchedule schedule, int numOfDay) { }
public ConferenceSchedule GetByID(int _scheduleId) { ConferenceScheduleDAC _conferenceScheduleComponent = new ConferenceScheduleDAC(); IDataReader reader = _conferenceScheduleComponent.GetByIDConferenceSchedule(_scheduleId); ConferenceSchedule _conferenceSchedule = null; while (reader.Read()) { _conferenceSchedule = new ConferenceSchedule(); if (reader["ScheduleId"] != DBNull.Value) { _conferenceSchedule.ScheduleId = Convert.ToInt32(reader["ScheduleId"]); } if (reader["ConferenceProgramId"] != DBNull.Value) { _conferenceSchedule.ConferenceProgramId = Convert.ToInt32(reader["ConferenceProgramId"]); } if (reader["Title"] != DBNull.Value) { _conferenceSchedule.Title = Convert.ToString(reader["Title"]); } if (reader["ScheduleSessionTypeId"] != DBNull.Value) { _conferenceSchedule.ScheduleSessionTypeId = Convert.ToInt32(reader["ScheduleSessionTypeId"]); } if (reader["StartTime"] != DBNull.Value) { _conferenceSchedule.StartTime = Convert.ToDateTime(reader["StartTime"]); } if (reader["EndTime"] != DBNull.Value) { _conferenceSchedule.EndTime = Convert.ToDateTime(reader["EndTime"]); } if (reader["SpeakerName"] != DBNull.Value) { _conferenceSchedule.SpeakerName = Convert.ToString(reader["SpeakerName"]); } if (reader["ConferenceHallId"] != DBNull.Value) { _conferenceSchedule.ConferenceHallId = Convert.ToInt32(reader["ConferenceHallId"]); } if (reader["Description"] != DBNull.Value) { _conferenceSchedule.Description = Convert.ToString(reader["Description"]); } if (reader["AllDescription"] != DBNull.Value) { _conferenceSchedule.AllDescription = Convert.ToString(reader["AllDescription"]); } if (reader["SpeakerID"] != DBNull.Value) { _conferenceSchedule.SpeakerID = Convert.ToInt32(reader["SpeakerID"]); } if (reader["DocPath"] != DBNull.Value) { _conferenceSchedule.DocPath = Convert.ToString(reader["DocPath"]); } _conferenceSchedule.NewRecord = false; } reader.Close(); return(_conferenceSchedule); }
public bool Update(ConferenceSchedule conferenceschedule, int old_scheduleId) { ConferenceScheduleDAC conferencescheduleComponent = new ConferenceScheduleDAC(); return(conferencescheduleComponent.UpdateConferenceSchedule(conferenceschedule.ConferenceProgramId, conferenceschedule.Title, conferenceschedule.ScheduleSessionTypeId, conferenceschedule.StartTime, conferenceschedule.EndTime, conferenceschedule.SpeakerName, conferenceschedule.ConferenceHallId, conferenceschedule.Description, conferenceschedule.AllDescription, conferenceschedule.SpeakerID, conferenceschedule.DocPath, old_scheduleId)); }
protected override void RenderTrackHeader(ConferenceSchedule schedule, int numOfDay) { _builder.Append($"\r\nTrack {numOfDay}:\r\n"); }
private async Task LoadSessions() { ConferenceSchedule = await sessionize.GetSessions(); }
public static List<string> ExportFile(ConferenceSchedule conferenceSchedule, string path) { var lines = ConvertToLines(conferenceSchedule); File.WriteAllLines(path, lines.ToArray()); return lines; }