Ejemplo n.º 1
0
        public override async Task Action(MessageResult message)
        {
            var call = message.GetData <CallbackData> ();

            await message.ConfirmAction();

            if (call == null)
            {
                return;
            }

            message.Handled = true;

            var api = await ModelScoutAPI.ModelScoutAPIPooler.GetOrCreateApi(message.DeviceId);

            switch (call.Method)
            {
            case "GoToCfgAccForm":
                var caf = new CfgAccForm(Convert.ToInt64(call.Value));
                await this.NavigateTo(caf);

                break;

            case "GoToAddAccForm":
                PromptDialog pd = new PromptDialog(
                    "Введите токен аккаунта\n" +
                    "(Можно получить тут https://vkhost.github.io/)");

                pd.Closed += async(s, en) => {
                    ModelScoutAPI.Models.VkAcc vkAcc;
                    vkAcc = await api.CreateVkAcc(pd.Value);

                    if (vkAcc == null)
                    {
                        this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm;
                        await this.Device.Send("Аккаунт не был добавлен. Проверьте токен");
                    }
                    else
                    {
                        this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm;
                        await this.Device.Send($"Был добавлен аккаунт {vkAcc.FirstName} {vkAcc.LastName}");
                    }
                };

                await this.OpenModal(pd);

                break;

            case "GoToStartForm":
                var alf = new StartForm();
                await this.NavigateTo(alf);

                break;

            default:
                message.Handled = false;
                break;
            }
        }
Ejemplo n.º 2
0
        public override async Task Action(MessageResult message)
        {
            var call = message.GetData <CallbackData> ();

            await message.ConfirmAction();

            if (call == null)
            {
                return;
            }

            var api = await ModelScoutAPI.ModelScoutAPIPooler.GetOrCreateApi(message.DeviceId);

            var vkAcc = await api.GetVkAcc(_vkAccId);

            message.Handled = true;

            PromptDialog pd;

            switch (call.Method)
            {
            case "ChangeCity":
                pd         = new PromptDialog("Введите id города:");
                pd.Closed += async(s, en) => {
                    int result;
                    this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm;
                    if (Int32.TryParse(pd.Value, out result) && result >= 0)
                    {
                        vkAcc.City = result;
                        await this.Device.Send("Город изменен");

                        await api.SaveVkAcc(vkAcc);

                        await api.ClearUncheckedClients();
                    }
                    else
                    {
                        await this.Device.Send("Неверный ввод");
                    }
                };
                await this.OpenModal(pd);

                break;

            case "ChangeCountry":
                pd         = new PromptDialog("Введите id страны:");
                pd.Closed += async(s, en) => {
                    int result;
                    this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm;
                    if (Int32.TryParse(pd.Value, out result) && result >= 0)
                    {
                        vkAcc.Country = result;
                        await this.Device.Send("Страна изменена");

                        await api.SaveVkAcc(vkAcc);

                        await api.ClearUncheckedClients();
                    }
                    else
                    {
                        await this.Device.Send("Неверный ввод");
                    }
                };
                await this.OpenModal(pd);

                break;

            case "ChangeBirthDay":
                pd         = new PromptDialog("Введите день рождения (0 - любой):");
                pd.Closed += async(s, en) => {
                    int result;
                    this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm;
                    if (Int32.TryParse(pd.Value, out result) && result >= 0 && result <= 31)
                    {
                        vkAcc.BirthDay = result;
                        await api.SaveVkAcc(vkAcc);

                        await this.Device.Send("День рождения изменен");

                        await api.ClearUncheckedClients();
                    }
                    else
                    {
                        await this.Device.Send("Неверный ввод");
                    }
                };
                await this.OpenModal(pd);

                break;

            case "ChangeBirthMonth":
                pd         = new PromptDialog("Введите месяц рождения (0 - любой)::");
                pd.Closed += async(s, en) => {
                    int result;
                    this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm;
                    if (Int32.TryParse(pd.Value, out result) && result >= 0 && result <= 12)
                    {
                        vkAcc.BirthMonth = result;
                        await api.SaveVkAcc(vkAcc);

                        await this.Device.Send("Месяц рождения изменен");

                        await api.ClearUncheckedClients();
                    }
                    else
                    {
                        await this.Device.Send("Неверный ввод");
                    }
                };
                await this.OpenModal(pd);

                break;

            case "ChangeAgeFrom":
                pd         = new PromptDialog("Введите нижний предел возраста:");
                pd.Closed += async(s, en) => {
                    int result;
                    this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm;
                    if (Int32.TryParse(pd.Value, out result) && result >= 0)
                    {
                        vkAcc.AgeFrom = result;
                        await api.SaveVkAcc(vkAcc);

                        await this.Device.Send("Нижний предел возраста изменен");

                        await api.ClearUncheckedClients();
                    }
                    else
                    {
                        await this.Device.Send("Неверный ввод");
                    }
                };
                await this.OpenModal(pd);

                break;

            case "ChangeAgeTo":
                pd         = new PromptDialog("Введите верхний предел возраста:");
                pd.Closed += async(s, en) => {
                    int result;
                    this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm;
                    if (Int32.TryParse(pd.Value, out result) && result >= 0 && result <= 200)
                    {
                        vkAcc.AgeTo = result;
                        await api.SaveVkAcc(vkAcc);

                        await this.Device.Send("Верхний предел возраста изменен");

                        await api.ClearUncheckedClients();
                    }
                    else
                    {
                        await this.Device.Send("Неверный ввод");
                    }
                };
                await this.OpenModal(pd);

                break;

            case "ChangeSex":
                pd         = new PromptDialog("Введите пол (0 - любой, 1 - ж, 2 - м):");
                pd.Closed += async(s, en) => {
                    int result;
                    this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm;
                    if (Int32.TryParse(pd.Value, out result) && result >= 0 && result <= 2)
                    {
                        vkAcc.Sex = result;
                        await this.Device.Send("Пол изменен");

                        await api.SaveVkAcc(vkAcc);

                        await api.ClearUncheckedClients();
                    }
                    else
                    {
                        await this.Device.Send("Неверный ввод");
                    }
                };
                await this.OpenModal(pd);

                break;

            case "ChangeLimit":
                pd = new PromptDialog(
                    "Введите лимит на добавление друзей\n" +
                    "(Этот лимит ограничивает кол-во заявок в друзья в день):");
                pd.Closed += async(s, en) => {
                    int result;
                    this.DeleteMode = TelegramBotBase.Enums.eDeleteMode.OnLeavingForm;
                    if (Int32.TryParse(pd.Value, out result) && result >= 0)
                    {
                        vkAcc.FriendsLimit = result;
                        await this.Device.Send("Лимит изменен");

                        await api.SaveVkAcc(vkAcc);

                        await api.ClearUncheckedClients();
                    }
                    else
                    {
                        await this.Device.Send("Неверный ввод");
                    }
                };
                await this.OpenModal(pd);

                break;

            case "GoToCfgAccForm":
                var ccaf = new CfgAccForm(_vkAccId);
                await this.NavigateTo(ccaf);

                break;

            default:
                message.Handled = false;
                break;
            }
        }