public SkillResponse Handle(IntentRequest intentRequest, ILambdaContext context, Session session) { var goApiClient = new GoApiClient(); var intent = intentRequest.Intent; if (IsDialogIntentRequest(intentRequest)) { if (IsDialogSequenceComplete(intentRequest) == false) { return(ResponseBuilder.DialogDelegate(session)); } } var dateSlotValue = intent.Slots["date"].Value; var timeSlotValue = intent.Slots["time"].Value; var classNameSlotValue = intent.Slots["className"].Value; var time = Convert.ToDateTime(timeSlotValue); context.Logger.LogLine($"Date:{dateSlotValue}"); var localBindDate = NodaTime.AmazonDate.AmazonDateParser.Parse(dateSlotValue); var dateFrom = localBindDate.From.ToDateTimeUnspecified(); var bookingDateTime = new DateTime(dateFrom.Year, dateFrom.Month, dateFrom.Day, time.Hour, time.Minute, time.Second); var result = goApiClient.BookClass(new BookClassParams { ClassStartDate = bookingDateTime, ClassName = classNameSlotValue }).Result; return(ResponseBuilder.Tell(result.Errors.Any() ? "There was an error booking a class. Please try again." : "Classes was booked.")); }
public async Task BookClass_Should_Return_Error_For_BadRequest() { var goApiClient = new GoApiClient(); var result = await goApiClient.BookClass(new BookClassParams() { ClassName = "aaa", ClassStartDate = DateTime.Now }); Assert.NotNull(result); Assert.True(result.Errors.Any()); }
public async Task CancelBooking_Should_Return_Success_For_ValidRequest() { var goApiClient = new GoApiClient(); var bookClassResult = await goApiClient.BookClass(new BookClassParams { ClassName = "Aerobics", ClassStartDate = new DateTime(2018, 8, 31, 0, 0, 0) }); Assert.NotNull(bookClassResult); Assert.False(bookClassResult.Errors.Any()); var result = await goApiClient.CancelBooking(new CancelBookingParams { ClassName = "Aerobics", ClassStartDate = new DateTime(2018, 8, 31, 0, 0, 0) }); Assert.NotNull(result); Assert.False(result.Errors.Any()); }