コード例 #1
0
        private void RightToBeForgottenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var personalDataForm = new PersonalDataForm(true);

            personalDataForm.Show();
        }
コード例 #2
0
        public static IDialog <object> MainChain(IBotContext context, bool isFirstPass = true)
        {
            context.ConversationData.SetValue(ConversationDataProperties.MainChainFirstPass.ToString(), isFirstPass);

            return(Chain.Return("Pojďme na to! Jsem tu od toho, abych Vám pomohl získat Váš voličský průkaz. Položím Vám proto několik otázek.")
                   .PostToUser()
                   .ContinueWith(async(ctx, res) =>
            {
                await res;
                var isFirstPassData = ctx.ConversationData.GetValue <bool>(ConversationDataProperties.MainChainFirstPass.ToString());

                if (isFirstPassData)
                {
                    return Chain.From(() =>
                                      FormDialog.FromForm(() =>
                    {
                        return new FormBuilder <VotePerson>()
                        .AddRemainingFields()
                        .Confirm("", state => false)
                        .Build();
                    }, FormOptions.None));
                }
                else
                {
                    return Chain.From(() =>
                                      FormDialog.FromForm(() =>
                    {
                        return new FormBuilder <VotePerson>()
                        .AddRemainingFields()
                        .Confirm("", state => false)
                        .Build();
                    }, FormOptions.PromptInStart));
                }
            })
                   .ContinueWith(async(ctx, res) =>
            {
                var result = await res;
                ctx.ConversationData.SetValue(ConversationDataProperties.VotePeson.ToString(), result);

                if (result.Type == VotePersonType.SendToDifferentAddress)
                {
                    return new AddressDialog("Napište mi prosím adresu, na kterou chcete voličský průkaz zaslat.",
                                             confirmText: "Děkuji, tam jsem ještě nebyl! 👀 Je tato adresa podle mapy správně?",
                                             questionAgainText: "Aha. Někde se tedy stala chyba. Je z Vaší strany adresa napsána skutečně správně? Zkuste to prosím ještě jednou jinak, podrobněji.",
                                             addressNotFoundByGoogleText: "Tomu bohužel nerozumím. Pojďme tedy Vaši adresu rozebrat postupně.");
                }
                else
                {
                    return Chain.Return <AddressDM>(null);
                }
            })
                   .ContinueWith(async(ctx, res) =>
            {
                var contactAddress = await res;

                if (contactAddress != null)
                {
                    ctx.ConversationData.SetValue(ConversationDataProperties.ContactAddress.ToString(), contactAddress);
                }

                return Chain.From(() => FormDialog.FromForm(() => PersonalDataForm.GetPersonalDataForm(), FormOptions.PromptInStart));
            })
                   .ContinueWith <PersonalDataDM, AddressDM>(async(ctx, res) =>
            {
                var personalData = await res;
                ctx.ConversationData.SetValue(ConversationDataProperties.PersonalData.ToString(), personalData);
                return new AddressDialog("Výborně. V tuto chvíli potřebuji ještě adresu Vašeho trvalého bydliště.",
                                         confirmText: "Děkuji, tam jsem ještě nebyl! 👀 Je tato adresa podle mapy správně?",
                                         questionAgainText: "Aha. Někde se tedy stala chyba. Je z Vaší strany adresa napsána skutečně správně? Zkuste to prosím ještě jednou jinak, podrobněji.",
                                         addressNotFoundByGoogleText: "Tomu bohužel nerozumím. Pojďme tedy Vaši adresu rozebrat postupně.");
            })
                   .ContinueWith <AddressDM, object>(async(ctx, res) =>
            {
                var addressDM = await res;
                var office = new OfficesContext(HttpContext.Current.Server.MapPath("/offices.json"))
                             .GetOffices(addressDM.Zip, addressDM.City).FirstOrDefault();

                var personalData = ctx.ConversationData.GetValue <PersonalDataDM>(ConversationDataProperties.PersonalData.ToString());
                var voterPerson = ctx.ConversationData.GetValue <VotePerson>(ConversationDataProperties.VotePeson.ToString());

                ctx.ConversationData.TryGetValue(ConversationDataProperties.ContactAddress.ToString(), out AddressDM contactAddress);

                var voterPassServiceUri = GetVoterPassUri(addressDM, personalData, office, voterPerson, contactAddress);
                var warrantServiceUri = GetWarrantPassUri();

                if (office == null)
                {
                    var officeNotFoundMsg = ctx.MakeMessage();
                    officeNotFoundMsg.Text = "Bohužel jsem nemohl najít městský úřad odpovídající Vašemu bydlišti. Vyplňte ho prosím do vygenerované žádosti.";
                    await ctx.PostAsync(officeNotFoundMsg);
                }

                var replyMessage = ctx.MakeMessage();
                replyMessage.Text = "Tak hotovo! 👌 Žádost o Váš voličský průkaz je tu.";

                if (replyMessage.ChannelId == ChannelIds.Facebook)
                {
                    var buttons = new List <CardAction>();

                    buttons.Add(new CardAction()
                    {
                        Type = "openUrl",
                        Value = voterPassServiceUri.ToString(),
                        Title = "Stáhnout žádost"
                    });

                    if (voterPerson.Type == VotePersonType.AuthorizedPerson)
                    {
                        buttons.Add(new CardAction()
                        {
                            Type = "openUrl",
                            Value = warrantServiceUri.ToString(),
                            Title = "Stáhnout plnou moc"
                        });
                    }

                    HeroCard hc = new HeroCard()
                    {
                        Buttons = buttons
                    };

                    replyMessage.Attachments.Add(hc.ToAttachment());
                }
                else
                {
                    replyMessage.Attachments.Add(new Attachment()
                    {
                        ContentUrl = voterPassServiceUri.ToString(),
                        ContentType = "application/msword",
                        Name = "zadost-o-vp.docx"
                    });

                    if (voterPerson.Type == VotePersonType.AuthorizedPerson)
                    {
                        replyMessage.Attachments.Add(new Attachment()
                        {
                            ContentUrl = warrantServiceUri.ToString(),
                            ContentType = "application/msword",
                            Name = "plna-moc-volby-2017.docx"
                        });
                    }
                }

                await ctx.PostAsync(replyMessage);

                return Chain.Return(string.Empty);
            })
                   .ContinueWith <object, object>(async(ctx, res) =>
            {
                await res;
                return new ConfirmDialog("Bylo mi velkým potěšením.",
                                         "Více informací",
                                         "Tomu bohužel nerozumím :(",
                                         possibleAnswers: new[] { "pokračovat", "informace" });
            })
                   .ContinueWith(async(ctx, res) => {
                await res;

                return Chain.Return("Já a moji druzi se snažíme zjednodušovat Váš styk s úřady. Víte, že už nyní jde s úřady komunikovat datovou schránkou? " +
                                    "Díky ní už nemusíte na úřady fyzicky chodit, spousta formulářů se dá odeslat pomocí portálu https://podejto.cz/. " +
                                    "Mrkněte na to, Váš čas je přeci drahý! Vyvinuto s podporou Hlídače Státu.")
                .PostToUser();
            })
                   .ContinueWith(async(ctx, res) =>
            {
                await Task.Run(() => Thread.Sleep(5000));
                await res;

                return new ConfirmDialog("Novou žádost o voličský průkaz společně vytvoříme po stisknutí tlačítka \"Pokračovat\"",
                                         "Pokračovat",
                                         "Tomu bohužel nerozumím :(",
                                         possibleAnswers: new[] { "ano", "jo", "pokračovat", "přeji", "přeju" })
                .ContinueWith(async(ctx2, res2) =>
                {
                    await res2;
                    return StartOverChain(ctx2);
                });
            }));
        }
コード例 #3
0
        private void RightToAccessToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var personalDataForm = new PersonalDataForm();

            personalDataForm.Show();
        }