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;
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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));
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
 protected override void RenderTrackHeader(ConferenceSchedule schedule, int numOfDay)
 {
     Console.WriteLine($"\nTrack {numOfDay}:");
 }
 protected virtual void RenderTrackHeader(ConferenceSchedule schedule, int numOfDay)
 {
 }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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");
 }
Esempio n. 14
0
 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;
 }