示例#1
0
        private async Task AfterReservationConfirmationAsync(IDialogContext context, IAwaitable <bool> result)
        {
            try
            {
                var confirm = await result;
                if (confirm)
                {
                    ReservationForm reservationForm = context.UserData.GetValue <ReservationForm>("reservationForm");

                    var bookingResult = await CampingService.Book(context.Activity.From.Id, reservationForm);

                    if (bookingResult.Errors != null && bookingResult.Errors.Count > 0)
                    {
                        await context.PostAsync("Houve um erro ao emitir sua reserva. Por favor, tente novamente.");
                    }
                    else
                    {
                        await context.PostAsync($"Sua reserva foi confirmada com o ID {bookingResult.Id}.");
                    }
                }
                else
                {
                    await context.PostAsync("Ok, posso te ajudar em mais alguma coisa?");
                }
            }
            finally
            {
                context.UserData.RemoveValue("reservationForm");
            }

            context.Wait(MessageReceived);
        }
示例#2
0
        public async Task BookingInfo(IDialogContext context, LuisResult result)
        {
            var entity = result.Entities.FirstOrDefault();

            if (entity != null)
            {
                var bookingId   = entity.Entity;
                var bookingData = await CampingService.GetBookingData(context.Activity.From.Id, bookingId);

                if (bookingData != null)
                {
                    await context.PostAsync($"\n\nID: {bookingData.Id}\n\nPassageiro principal: {bookingData.MainPaxName}\n\nNúmero total de hóspedes: {bookingData.NumberOfGuests}" +
                                            $"\n\nData da chegada: {bookingData.ArrivalDate.ToString("dd/MM/yyyy")}\n\nData da volta: {bookingData.DepartureDate.ToString("dd/MM/yyyy")}" +
                                            $"\n\nIncluir barraca: {(bookingData.IncludeTent ? "Sim" : "Não")}\n\nValor da reserva: R$ {bookingData.Price.ToString("N2")}");
                }
                else
                {
                    await context.PostAsync("Não consegui identificar o número da sua reserva.");
                }
            }
            else
            {
                await context.PostAsync("Não consegui identificar o número da sua reserva.");
            }
        }
示例#3
0
        private CampingInfo GetCampingInfo()
        {
            if (_campingInfo == null)
            {
                var campingTask = Task.Run(() => CampingService.GetCampingInfo());
                campingTask.Wait();
                _campingInfo = campingTask.Result;
            }

            return(_campingInfo);
        }
示例#4
0
        private async Task ReservationFormCompletedAsync(IDialogContext context, IAwaitable <ReservationForm> result)
        {
            var reservationForm = await result;

            context.UserData.SetValue("reservationForm", reservationForm);
            decimal?price = await CampingService.GetPrice(reservationForm);

            if (price == null)
            {
                await context.PostAsync("Existem dados inválidos na sua reserva, por favor tente novamente.");

                context.Wait(MessageReceived);
            }
            else
            {
                PromptDialog.Confirm(context, AfterReservationConfirmationAsync, $"Sua reserva totalizou R$ {price.Value.ToString("N2")}. Posso confirmar?", "Não entendi, por favor, responda 'Sim' ou 'Não'", promptStyle: PromptStyle.Keyboard);
            }
        }
示例#5
0
 public StreamingModule(CampingService campingService, LyricaContext db, CodePasteService paste)
 {
     _campingService = campingService;
     _db             = db;
     _paste          = paste;
 }