Esempio n. 1
0
        public static IForm <PedidoForm> BuildForm()
        {
            var builder = new FormBuilder <PedidoForm>()
                          .Message("Bem-vindo ao bot do MC! \U0001F609")
                          .Field(nameof(Name))
                          .Field(new FieldReflector <PedidoForm>(nameof(Sandwiche))
                                 .SetType(null)
                                 .SetActive((state) =>
            {
                return(string.IsNullOrEmpty(state.Sandwiche));
            })
                                 .SetPrompt(new PromptAttribute("Por favor, selecione o sanduíche: {||}")
            {
                ChoiceStyle = ChoiceStyleOptions.Carousel
            })
                                 .SetDefine((state, field) =>
            {
                var crawler = new McDonaldsBrSite();
                var result  = crawler.GetMenu().Distinct();

                foreach (var item in result)
                {
                    field
                    .AddDescription(item.ItemName, item.ItemName, item.ImgUrl)
                    .AddTerms(item.ItemName, item.ItemName);
                }

                return(Task.FromResult(true));
            }))
                          .Field(new FieldReflector <PedidoForm>(nameof(Garnish))
                                 .SetType(null)
                                 .SetActive((state) =>
            {
                return(string.IsNullOrEmpty(state.Garnish));
            })
                                 .SetPrompt(new PromptAttribute("Por favor, selecione o acompanhamento: {||}")
            {
                ChoiceStyle = ChoiceStyleOptions.Carousel
            })
                                 .SetDefine((state, field) =>
            {
                var crawler = new McDonaldsBrSite();
                var result  = crawler.GetGarnish().Distinct();

                foreach (var item in result)
                {
                    field
                    .AddDescription(item.ItemName, item.ItemName, item.ImgUrl)
                    .AddTerms(item.ItemName, item.ItemName);
                }

                return(Task.FromResult(true));
            }))
                          .Field(new FieldReflector <PedidoForm>(nameof(Drink))
                                 .SetType(null)
                                 .SetActive((state) =>
            {
                return(string.IsNullOrEmpty(state.Drink));
            })
                                 .SetPrompt(new PromptAttribute("Selecione a sua bebida {||}")
            {
                ChoiceStyle = ChoiceStyleOptions.Carousel
            })
                                 .SetDefine((state, field) =>
            {
                var crawler = new McDonaldsBrSite();
                var result  = crawler.GetDrink().Distinct();

                foreach (var item in result)
                {
                    field
                    .AddDescription(item.ItemName, item.ItemName, item.ImgUrl)
                    .AddTerms(item.ItemName, item.ItemName);
                }

                return(Task.FromResult(true));
            }))
                          .AddRemainingFields();



            builder.Confirm("Legal, finalizamos o preenchimento do seu pedido. Pra finalizar, você confirma os dados abaixo? {*} {||}");
            builder.OnCompletion(async(context, pedido) =>
            {
                TrelloHelper.PublishIntoTrello(pedido.Name,
                                               pedido.Sandwiche,
                                               pedido.Drink,
                                               pedido.Garnish,
                                               pedido.AddShipsFor1Real.ToString(),
                                               pedido.IsVoyage.ToString(),
                                               pedido.PaymentType.ToString());

                var userAccount    = new ChannelAccount(name: context.Activity.From.Name, id: context.Activity.From.Id);
                var botAccount     = new ChannelAccount(name: context.Activity.Recipient.Name, id: context.Activity.Recipient.Id);
                var connector      = new ConnectorClient(new Uri(context.Activity.ServiceUrl));
                var conversationId = await connector.Conversations.CreateDirectConversationAsync(botAccount, userAccount);



                IMessageActivity message = Activity.CreateMessageActivity();
                message.From             = botAccount;
                message.Recipient        = userAccount;
                message.Conversation     = new ConversationAccount(id: conversationId.Id);
                message.Text             = $"{pedido.Name}, seu pedido foi realizado com sucesso. Assim que estiver pronto te aviso, fique ligado!";
                message.Locale           = "pt-BR";
                await context.PostAsync(message);
            });   //IMessageActivity activity = context.MakeMessage();


            var form = builder.Build();


            return(form);
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            var mcCrawler = new McDonaldsBrSite();

            mcCrawler.GetMeatMenu();
        }