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); }
public SessionResult Create(SessionDefinition sessionDefinition) { using (var driver = new ChromeDriver(ChromeDriverDirectory)) { NavigateToDashboard(driver); LoginIfRequired(driver); CheckFriends(driver, sessionDefinition.FriendsToAdd); return(CreateGamingSession(driver, sessionDefinition)); } }
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)); }