Beispiel #1
0
        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));
        }
Beispiel #2
0
        public void ParseDecadeOnlyDate()
        {
            var result = AmazonDateParser.Parse(DecadeString);

            Utility.IsDate(result.From, 2010, 01, 01);
            Utility.IsDate(result.To, 2020, 01, 01);
        }
Beispiel #3
0
        public void TryParseInvalidLocalDate()
        {
            var result = AmazonDateParser.TryParse(InvalidDateString, out var testResultDate);

            Assert.False(result);
            Assert.Null(testResultDate);
        }
Beispiel #4
0
        public void ParseYearOnlyDate()
        {
            var result = AmazonDateParser.Parse(YearString);

            Utility.IsDate(result.From, 2015, 01, 01);
            Utility.IsDate(result.To, 2016, 01, 01);
        }
Beispiel #5
0
        public void ParseMonthOnlyDate()
        {
            var result = AmazonDateParser.Parse(MonthString);

            Utility.IsDate(result.From, 2015, 11, 01);
            Utility.IsDate(result.To, 2015, 12, 01);
        }
Beispiel #6
0
        public void ParseValidLocalDate()
        {
            var result = AmazonDateParser.Parse(LocalDateString);

            Utility.IsFirst2015(result.From);
            Utility.IsFirst2015(result.To);
        }
Beispiel #7
0
        public void TryParseValidLocalDate()
        {
            var result = AmazonDateParser.TryParse(LocalDateString, out var testResultDate);

            Assert.True(result);
            Utility.IsFirst2015(testResultDate.From);
            Utility.IsFirst2015(testResultDate.To);
        }
Beispiel #8
0
        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));
        }
Beispiel #10
0
        public void ParseInvalidLocalDate()
        {
            var result = AmazonDateParser.Parse(InvalidDateString);

            Assert.Null(result);
        }
Beispiel #11
0
        public void InvalidWeekNumberReturnsNull()
        {
            var result = AmazonDateParser.Parse(InvalidWeekDate);

            Assert.Null(result);
        }