Example #1
0
        public override async Task Execute(Update update, TelegramBotClient client)
        {
            var userId    = GetUserId(update);
            var chatId    = GetChatId(update);
            var messageId = GetMessageId(update);

            if (StateMachine.GetCurrentStep(userId) == 0)
            {
                var revenueButton = Bot.MakeInlineButton($"{new Emoji(0x1F4C8)} В доходи", "revenue");
                var expenseButton = Bot.MakeInlineButton($"{new Emoji(0x1F4C9)} До витрат", "expense");

                await client.SendTextMessageAsync(chatId, "Куди саме додати категорію?", replyMarkup : Bot.MakeInlineKeyboard(revenueButton, expenseButton));

                StateMachine.NextStep(userId);
                return;
            }
            if (StateMachine.GetCurrentStep(userId) == 1)
            {
                if (update.CallbackQuery.Data == "revenue")
                {
                    AddCategory(userId, "", CategoryType.Revenue);
                }
                if (update.CallbackQuery.Data == "expense")
                {
                    AddCategory(userId, "", CategoryType.Expense);
                }
                await client.EditMessageTextAsync(chatId, messageId, "Введіть назву категорії");

                StateMachine.NextStep(userId);
                return;
            }
            if (StateMachine.GetCurrentStep(userId) == 2)
            {
                var category = _userCategories.Single(r => r.UserId == userId);
                category.Name = update.Message.Text;
                if (_dbContext.ContainsCategory(userId, category.Name, category.CategoryType))
                {
                    await client.SendTextMessageAsync(chatId, "Упс... така категорія вже існує, спробуйте ввести щось інше");

                    return;
                }
                _dbContext.Categories.Add(category);
                await _dbContext.SaveChangesAsync();

                var answer = $"{new Emoji(0x2705)} Категорію <u><b>{category.Name}</b></u> додано";
                answer += category.CategoryType == CategoryType.Expense ? " до витрат" : " в доходи";

                await client.SendTextMessageAsync(chatId, answer, ParseMode.Html);

                _userCategories.Remove(category);
                StateMachine.FinishCurrentCommand(userId);
            }
        }