public async Task <SkillResponse> Handle(AlexaRequestInformation information) { information.State.ClearSession(); var intent = ((IntentRequest)information.SkillRequest.Request).Intent; var dates = AmazonDateParser.Parse(intent.Slots[Consts.SlotDateRange].Value); var currentDate = LocalDate.FromDateTime(DateTime.Now); var id = intent.Slots[Consts.SlotEvent].Id(); var meetup = new TechMeetState { GroupName = id }; var rawEvents = await meetup.GetEventsFromS3(); var groupData = await meetup.GetGroupFromS3(); information.State.SetSession(SessionKeys.CurrentActivity, SkillActivities.Event); information.State.SetSession(SessionKeys.CurrentGroup, id); var eventToRecognise = rawEvents.ToLocalEventTime() .Where(d => d.Date >= dates.From && d.Date <= dates.To).Where(d => d.Date >= currentDate).ToArray(); if (!eventToRecognise.Any()) { return(SpeechHelper.NoEvent(true)); } if (eventToRecognise.Length == 1) { return(await SpeechHelper.SingleEventResponse((APLSkillRequest)information.SkillRequest, eventToRecognise.First(), currentDate, groupData, "I've got information on a meetup event. ")); } return(SpeechHelper.RespondToEvent(eventToRecognise, currentDate, groupData.Name)); }
public void ParseDecadeOnlyDate() { var result = AmazonDateParser.Parse(DecadeString); Utility.IsDate(result.From, 2010, 01, 01); Utility.IsDate(result.To, 2020, 01, 01); }
public void TryParseInvalidLocalDate() { var result = AmazonDateParser.TryParse(InvalidDateString, out var testResultDate); Assert.False(result); Assert.Null(testResultDate); }
public void ParseYearOnlyDate() { var result = AmazonDateParser.Parse(YearString); Utility.IsDate(result.From, 2015, 01, 01); Utility.IsDate(result.To, 2016, 01, 01); }
public void ParseMonthOnlyDate() { var result = AmazonDateParser.Parse(MonthString); Utility.IsDate(result.From, 2015, 11, 01); Utility.IsDate(result.To, 2015, 12, 01); }
public void ParseValidLocalDate() { var result = AmazonDateParser.Parse(LocalDateString); Utility.IsFirst2015(result.From); Utility.IsFirst2015(result.To); }
public void TryParseValidLocalDate() { var result = AmazonDateParser.TryParse(LocalDateString, out var testResultDate); Assert.True(result); Utility.IsFirst2015(testResultDate.From); Utility.IsFirst2015(testResultDate.To); }
public void ValidWeekendSpecifierReturnsCorrectDates() { var result = AmazonDateParser.Parse(ValidWeekendDate); Assert.NotNull(result); Utility.IsDate(result.From, Year, Month, FromDayWeekend); Utility.IsDate(result.To, Year, Month, ToDay); }
public async Task <SkillResponse> Handle(AlexaRequestInformation information) { information.State.ClearSession(); var intent = ((IntentRequest)information.SkillRequest.Request).Intent; var dates = AmazonDateParser.Parse(intent.Slots[Consts.SlotDateRange].Value); var currentDate = LocalDate.FromDateTime(DateTime.Now); var meetupTasks = Meetups.Select(m => new TechMeetState { GroupName = m }.GetEventsFromS3()); var rawEvents = (await Task.WhenAll(meetupTasks)).SelectMany(t => t).ToLocalEventTime() .Where(d => d.Date >= dates.From && d.Date <= dates.To); var eventToRecognise = rawEvents.OrderBy(l => l.Date).Where(d => d.Date >= currentDate).ToArray(); if (!eventToRecognise.Any()) { return(SpeechHelper.NoEvent(true)); } return(SpeechHelper.RespondToEvent(eventToRecognise, currentDate)); }
public void ParseInvalidLocalDate() { var result = AmazonDateParser.Parse(InvalidDateString); Assert.Null(result); }
public void InvalidWeekNumberReturnsNull() { var result = AmazonDateParser.Parse(InvalidWeekDate); Assert.Null(result); }