public SessionDefinition Build(DateTime weekStart)
        {
            if (Hour < 0 || Hour > 23)
            {
                throw new ArgumentException("Hour is invalid.", nameof(Hour));
            }

            if (Minutes < 0 || Minutes > 59)
            {
                throw new ArgumentException("Minutes is invalid.", nameof(Minutes));
            }

            var sessionDefinition = new SessionDefinition
            {
                Activity     = Activity,
                Details      = Details,
                GroupId      = GroupId,
                LightLevel   = LightLevel,
                FriendsToAdd = FriendsToAdd,
            };

            var daysUntilDayOfWeek = ((int)DayOfWeek - (int)weekStart.DayOfWeek + 7) % 7;
            var sessionStartDate   = weekStart.AddDays(daysUntilDayOfWeek);

            sessionDefinition.StartTime = new DateTime(sessionStartDate.Year, sessionStartDate.Month, sessionStartDate.Day, Hour, Minutes, 0);

            return(sessionDefinition);
        }
Example #2
0
        public SessionResult Create(SessionDefinition sessionDefinition)
        {
            using (var driver = new ChromeDriver(ChromeDriverDirectory))
            {
                NavigateToDashboard(driver);
                LoginIfRequired(driver);
                CheckFriends(driver, sessionDefinition.FriendsToAdd);

                return(CreateGamingSession(driver, sessionDefinition));
            }
        }
Example #3
0
        static SessionResult CreateGamingSession(IWebDriver driver, SessionDefinition sessionDefinition)
        {
            driver.Navigate().GoToUrl(The100Api.NewGamingSessionUri);

            var moreLink = driver.FindElement(By.LinkText("more options »"));

            moreLink.Click();

            var activitySelect         = new SelectElement(driver.FindElement(By.Id("gaming_session_category")));
            var detailsText            = driver.FindElement(By.Id("gaming_session_name"));
            var startDate              = driver.FindElement(By.Id("gaming_session_start_date"));
            var startTimeHourSelect    = new SelectElement(driver.FindElement(By.Id("gaming_session_start_time_4i")));
            var startTimeMinutesSelect = new SelectElement(driver.FindElement(By.Id("gaming_session_start_time_5i")));
            var groupIdSelect          = new SelectElement(driver.FindElement(By.Id("gaming_session_group_id")));
            var lightLevelSelect       = new SelectElement(driver.FindElement(By.Id("gaming_session_light_level")));
            var submitButton           = driver.FindElement(By.Name("commit"));

            activitySelect.SelectByValue(sessionDefinition.Activity);
            detailsText.SendKeys(sessionDefinition.Details);
            startDate.SendKeys(sessionDefinition.StartTime.ToString("dd/MM/yyyy"));
            startTimeHourSelect.SelectByValue(sessionDefinition.StartTime.Hour.ToString("D2"));
            startTimeMinutesSelect.SelectByValue(sessionDefinition.StartTime.Minute.ToString("D2"));
            groupIdSelect.SelectByValue(sessionDefinition.GroupId.ToString());
            lightLevelSelect.SelectByValue(sessionDefinition.LightLevel.ToString());

            submitButton.Submit();

            IWebElement danger;

            if (driver.TryFindElement(By.ClassName("bg-danger"), out danger))
            {
                throw new Exception(danger.Text);
            }

            var sessionId = driver.Url.Replace(The100Api.GamingSessionsUri.ToString(), string.Empty);

            AddFriends(driver, sessionDefinition.FriendsToAdd);

            return(new SessionResult(sessionId, sessionDefinition.Details, sessionDefinition.StartTime));
        }