Пример #1
0
        public async Task OnStart(ApplicationContext context, Message message, TelegramBotClient client)
        {
            var chatId = message.Chat.Id;
            await DatabaseUtils.AddUser(context, chatId);

            await client.SendTextMessageAsync(
                chatId,
                "Добро пожаловать, введите администраторский пароль",
                ParseMode.Markdown);

            await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForPassword);
        }
Пример #2
0
        public async Task OnWaitingForTagAction(ApplicationContext context, Message message,
                                                TelegramBotClient client)
        {
            var           text    = message.Text;
            var           chatId  = message.Chat.Id;
            StringBuilder builder = new StringBuilder();

            switch (text)
            {
            case "Добавить родительский тег":
                await client.SendTextMessageAsync(
                    chatId,
                    "Введите название нового тега",
                    ParseMode.Markdown);

                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForParentTag);

                break;

            case "Добавить дочерний тег":

                var parentTags            = Utils.SplitList(2, context.Tags.Where(t => t.Level == 1).ToList());
                TelegramKeyboard keyboard = new TelegramKeyboard();
                foreach (var parentTag in parentTags)
                {
                    keyboard.AddRow(parentTag.Select(e => e.Name));
                }

                await client.SendTextMessageAsync(
                    chatId,
                    "Введите родительский тег к которому надо добавить дочерний",
                    ParseMode.Markdown, replyMarkup : keyboard.Markup);

                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForChoosingParentTag);

                break;

            case "Вывести все родительские теги":
                builder.Clear();
                builder.AppendLine("теги:");
                List <Tag> tags = context.Tags.Where(e => e.Level == 1).ToList();
                foreach (var tag in tags)
                {
                    builder.AppendLine(tag.Name);
                }
                await client.SendTextMessageAsync(
                    chatId,
                    builder.ToString(),
                    ParseMode.Markdown);

                break;
            }
        }
Пример #3
0
        public async Task OnWaitingForEventAdminCode(ApplicationContext context, Message message,
                                                     TelegramBotClient client)
        {
            var           text    = message.Text;
            var           chatId  = message.Chat.Id;
            StringBuilder builder = new StringBuilder();

            if (await DatabaseUtils.CheckEventExists(context, text))
            {
                builder.AppendLine("Мероприятие с таким кодом _уже существует_");
                builder.AppendLine();
                builder.AppendLine("Введите код организатора");
                await client.SendTextMessageAsync(chatId, builder.ToString(), ParseMode.Markdown);
            }
            else
            {
                AdminUser user = await DatabaseUtils.GetUserByChatId(context, chatId);

                builder.AppendLine($"Код организатора \"*{text}*\" сохранен");

                await client.SendTextMessageAsync(
                    chatId,
                    builder.ToString(),
                    ParseMode.Markdown);

                Event ev = new Event()
                {
                    Name      = user.TempEventCode,
                    EventCode = user.TempEventCode,
                    AdminCode = text
                };

                context.Events.Add(ev);
                await context.SaveChangesAsync();

                await DatabaseUtils.ClearUserTempData(context, chatId);

                await client.SendTextMessageAsync(
                    chatId,
                    $"Мероприятие <b>{ev.Name}</b> успешно сохранено",
                    ParseMode.Html);

                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForAction);
            }
        }
Пример #4
0
        public async Task OnWaitingForChoosingParentTag(ApplicationContext context, Message message,
                                                        TelegramBotClient client)
        {
            var text   = message.Text;
            var chatId = message.Chat.Id;
            Tag tag    = context.Tags.FirstOrDefault(t => t.Level == 1 && t.Name == text);

            if (tag != null)
            {
                AdminUser user = await DatabaseUtils.GetUserByChatId(context, chatId);

                user.TempParentTag = tag.TagId;
                context.Update(user);
                context.SaveChanges();
                await client.SendTextMessageAsync(chatId, "Введите новый дочерний тег", ParseMode.Markdown);

                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForNewChildTag);
            }
        }
Пример #5
0
        public async Task OnWaitingForNewChildTag(ApplicationContext context, Message message,
                                                  TelegramBotClient client)
        {
            var       text   = message.Text;
            var       chatId = message.Chat.Id;
            AdminUser user   = await DatabaseUtils.GetUserByChatId(context, chatId);

            Tag newChildTag = new Tag()
            {
                ParentTagID = user.TempParentTag,
                Name        = text,
                Level       = 2
            };

            context.Tags.Add(newChildTag);
            context.SaveChanges();

            await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForTagAction);

            await client.SendTextMessageAsync(chatId, "Выберите опцию", ParseMode.Markdown);
        }
Пример #6
0
        public async Task OnWaitingForPassword(ApplicationContext context, Message message,
                                               TelegramBotClient client)
        {
            var text   = message.Text;
            var chatId = message.Chat.Id;

            if (text == AppSettings.Password)
            {
                StringBuilder builder = new StringBuilder();
                builder.AppendLine("Пароль *правильный*");
                builder.AppendLine();
                builder.AppendLine("Вам доступен мой функционал");

                TelegramKeyboard keyboard = new TelegramKeyboard();
                keyboard.AddRow("Создать новое мероприятие");
#if WORK
                keyboard.AddRow("Изменение тегов (в разработке)");
#else
                keyboard.AddRow("Изменение тегов");
#endif
                keyboard.AddRow("Вывести все мероприятия");

                await DatabaseUtils.SetUserAdmin(context, chatId);

                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForAction);

                await client.SendTextMessageAsync(
                    chatId,
                    builder.ToString(),
                    ParseMode.Markdown,
                    replyMarkup : keyboard.Markup);
            }
            else
            {
                await client.SendTextMessageAsync(
                    chatId,
                    "Пароль неправильный",
                    ParseMode.Markdown);
            }
        }
Пример #7
0
        public async Task OnWaitingForEventName(ApplicationContext context, Message message,
                                                TelegramBotClient client)
        {
            var           text    = message.Text;
            var           chatId  = message.Chat.Id;
            StringBuilder builder = new StringBuilder();

            AdminUser user = await DatabaseUtils.GetUserByChatId(context, chatId);

            user.TempEventName = text;

            context.Update(user);
            await context.SaveChangesAsync();

            await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForEventCode);

            builder.AppendLine($"Название \"*{text}*\" сохранено");
            builder.AppendLine();
            builder.AppendLine("_Введите ивент код для участников_");

            await client.SendTextMessageAsync(chatId, builder.ToString(), ParseMode.Markdown);
        }
Пример #8
0
        public async Task OnWaitingForAction(ApplicationContext context, Message message,
                                             TelegramBotClient client)
        {
            var           text    = message.Text;
            var           chatId  = message.Chat.Id;
            StringBuilder builder = new StringBuilder();

            switch (text)
            {
            case "Создать новое мероприятие":
                builder.Clear();
                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForEventName);

                builder.AppendLine("*Режим добавления мероприятия*");
                builder.AppendLine();
                builder.AppendLine("_Введите название мероприятия_");

                await client.SendTextMessageAsync(chatId, builder.ToString(), ParseMode.Markdown);

                break;

            case "Изменение тегов":
                builder.Clear();

                builder.AppendLine("Выберите опцию");

                TelegramKeyboard keyboard = new TelegramKeyboard();
                keyboard.AddRow("Добавить родительский тег");
                keyboard.AddRow("Добавить дочерний тег");
                keyboard.AddRow("Вывести все родительские теги");

                await DatabaseUtils.ChangeUserAction(context, chatId, Actions.WaitingForTagAction);

                await client.SendTextMessageAsync(chatId, builder.ToString(), ParseMode.Markdown, replyMarkup : keyboard.Markup);

                break;

            case "Вывести все мероприятия":
                List <Event> events = context.Events.ToList();
                if (events.Count > 0)
                {
                    for (var i = 0; i < events.Count; i++)
                    {
                        builder.AppendLine($"{i+1}: {events[i].Name}");
                    }
                }
                else
                {
                    builder.AppendLine("Нету ивентов");
                }

                await client.SendTextMessageAsync(chatId, builder.ToString());

                break;

            default:
                await client.SendTextMessageAsync(chatId, "Я вас не понимаю");

                break;
            }
        }