public SkillResponse Handle(IntentRequest intentRequest, ILambdaContext context, Session session) { if (IsDialogIntentRequest(intentRequest)) { if (IsDialogSequenceComplete(intentRequest) == false) { return(ResponseBuilder.DialogDelegate(session)); } } var intent = intentRequest.Intent; var dateSlotValue = intent.Slots["date"].Value; var clubNameSlotValue = intent.Slots["clubName"].Value; var classNameSlotValue = intent.Slots["className"].Value; var date = NodaTime.AmazonDate.AmazonDateParser.Parse(dateSlotValue); var dateFrom = date.From.ToDateTimeUnspecified(); var dateTo = date.To.ToDateTimeUnspecified(); if (dateFrom == dateTo) { dateFrom = new DateTime(dateFrom.Year, dateFrom.Month, dateFrom.Day, 0, 0, 0); dateTo = new DateTime(dateTo.Year, dateTo.Month, dateTo.Day, 23, 59, 59); } var goApiClient = new GoApiClient(); var result = goApiClient.UpcomingClasses(classNameSlotValue, clubNameSlotValue, dateFrom, dateTo).Result; if (result.Errors.Any()) { return(ResponseBuilder.Tell($"{result.Errors.First().Message}")); } var bookingsResponse = string.Join(',', result.Data.OrderBy(x => x.StartDate). Select(x => { var startDate = x.StartDate.ToString("dddd dd MMMM hh:mm tt", CultureInfo.CreateSpecificCulture("en-US")); return($" {x.ClassName} on {startDate}"); })); var speech = new SsmlOutputSpeech { Ssml = $"<speak>{ GetFirstPartResponse(result.Data.Count())}{ bookingsResponse}</speak>" }; var repromptMessage = new PlainTextOutputSpeech { Text = "Would you like to book one ?" }; var repromptBody = new Reprompt(); repromptBody.OutputSpeech = repromptMessage; var finalResponse = ResponseBuilder.Ask(speech, repromptBody); return(finalResponse); //return ResponseBuilder.Ask($"{GetFirstPartResponse(result.Data.Count())}{bookingsResponse}", // new Reprompt("Whould you like to book one? ")); }
public async Task UpcomingClasses_Should_Return_UpcomingBookings_For_Valid_Request() { var goApiClient = new GoApiClient(); var result = await goApiClient.UpcomingClasses("Aerobics", "PerfectFit", new DateTime(2018, 8, 22), new DateTime(2018, 8, 24)); Assert.NotNull(result); Assert.True(result.Data.Any()); }
public async Task UpcomingClasses_Should_Return_Error_For_BadRequest() { var goApiClient = new GoApiClient(); var result = await goApiClient.UpcomingClasses("", "", new DateTime(2018, 8, 22), new DateTime(2018, 8, 24)); Assert.NotNull(result); Assert.True(result.Errors.Any()); }