Example #1
0
        public static async Task AddComparator(IDialogContext context, string message)
        {
            string[] parts   = message.Split(':');
            var      product = parts[1].Replace(" ", "");

            if (parts.Length >= 2)
            {
                List <string> items = StateHelper.GetComparatorItems(context);

                if (ComparatorLogic.MAX_PRODUCTS_ON_COMPARATOR <= items.Count)
                {
                    await context.PostAsync("Lamento mas só consigo avaliar até " +
                                            ComparatorLogic.MAX_PRODUCTS_ON_COMPARATOR.ToString() + " produtos.");
                }
                else
                {
                    Product productToAdd = ProductController.getProduct(product);

                    var reply = context.MakeMessage();
                    reply.Text = String.Format(Interactions.getAddComparator());
                    await context.PostAsync(reply);

                    StateHelper.AddItemComparator(context, product);
                }
            }
        }
Example #2
0
        public async Task Compare(IDialogContext context)
        {
            // fetch products
            var itemsToCompare = StateHelper.GetComparatorItems(context);

            foreach (string o in itemsToCompare)
            {
                products.Add(ProductController.getProduct(o.ToString()));
            }

            if (products.Count > 0)
            {
                var reply = context.MakeMessage();
                reply.Text = Interactions.getOngoingComp();
                await context.PostAsync(reply);

                ComparatorLogic.ShowProductComparison(context, products);

                /*
                 * //show options
                 * if(products.Count <= ComparatorLogic.MAX_PRODUCTS_ON_COMPARATOR)
                 * {
                 *  reply = context.MakeMessage();
                 *  reply.Attachments.Add(getCardButtonsAttachment(
                 *      new List<ButtonType> { ButtonType.ADD_PRODUCT }, DialogType.COMPARE));
                 *  await context.PostAsync(reply);
                 * }*/
            }
            else
            {
                await context.PostAsync("Não tem produtos para comparar.");

                //show options
                var reply = context.MakeMessage();
                reply.Attachments.Add(getCardButtonsAttachment(
                                          new List <ButtonType> {
                    ButtonType.ADD_PRODUCT
                }, DialogType.COMPARE));
                await context.PostAsync(reply);
            }
        }
Example #3
0
        public async Task InitAsync(IDialogContext context, IAwaitable <IMessageActivity> activity)
        {
            List <ButtonType> buttons = new List <ButtonType>();

            // fetch products
            var itemsToCompare = StateHelper.GetComparatorItems(context);

            foreach (string o in itemsToCompare)
            {
                products.Add(ProductController.getProduct(o));
            }

            var reply = context.MakeMessage();

            string intro_msg  = "Bem-vindo ao comparador. Aqui posso dar-lhe sugestões sobre quais os melhores produtos que deseja comparar.";
            string button_msg = "";

            if (products.Count > 0)
            {
                intro_msg = "\nVou buscar os produtos em que demonstrou interesse em avaliar. Espere só um momento por favor.";
                await Interactions.SendMessage(context, intro_msg, 0, 0);

                //display products
                reply = context.MakeMessage();
                reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
                List <Attachment> cards = new List <Attachment>();

                //limit
                for (var i = 0; i < products.Count && i < Constants.N_ITEMS_CARROUSSEL; i++)
                {
                    cards.Add(ProductCard.GetProductCard(products[i], ProductCard.CardType.COMPARATOR).ToAttachment());
                }

                reply.Attachments = cards;

                await Interactions.SendMessage(context, "Aqui estão os produtos:", 4000, 2000);

                await context.PostAsync(reply);

                if (products.Count <= ComparatorLogic.MAX_PRODUCTS_ON_COMPARATOR)
                {
                    buttons.Add(ButtonType.ADD_PRODUCT);
                }

                buttons.Add(ButtonType.COMPARE);

                button_msg = "Se quiser posso fazer uma avaliação dos produtos, clique no botão abaixo para que eu iniciar a comparação.";
            }
            else
            {
                intro_msg = "\nDe momentos ainda não adicionou nenhum produto para ser avaliado.";
                await Interactions.SendMessage(context, intro_msg, 0, 3000);

                buttons.Add(ButtonType.ADD_PRODUCT);
            }

            button_msg += "\nSe tiver interesse em adicionar produtos para serem avaliados, faça uma pesquisa no nosso catálogo. Para isto, clique no botão abaixo para preencher um formulário de pesquisa.";
            await Interactions.SendMessage(context, button_msg, 3000, 2000);

            //show options
            reply = context.MakeMessage();
            reply.Attachments.Add(getCardButtonsAttachment(buttons, DialogType.COMPARE));
            await context.PostAsync(reply);

            context.Wait(InputHandler);
        }