예제 #1
0
        private async void OnBotCallbackQuery(object sender, CallbackQueryEventArgs e)
        {
            var message         = e.CallbackQuery.Message;
            var callbackData    = e.CallbackQuery.Data;
            var keyboardButtons = new List <InlineKeyboardButton>();

            switch (callbackData)
            {
            case "AddOrderCallback":
                _templateForms = await _httpClient.GetTemplateFormsAsync();

                foreach (var form in _templateForms)
                {
                    _callbackNames.Add(form.Id.ToString());
                    keyboardButtons.Add(new InlineKeyboardCallbackButton(form.Name, form.Id.ToString()));
                }

                var keyboard = new Telegram.Bot.Types.ReplyMarkups.InlineKeyboardMarkup(keyboardButtons.ToArray());

                await _bot.SendTextMessageAsync(message.Chat.Id, "Что хотите заказать?",
                                                replyMarkup : keyboard);

                break;

            case "GetOrdersCallback":
                var orders = await _httpClient.GetOrderAsync();

                var ordersMessage = MakeOrdersMessage(orders);
                await _bot.SendTextMessageAsync(message.Chat.Id, ordersMessage, ParseMode.Html);

                break;
            }

            var indexOfData = _callbackNames.IndexOf(callbackData);

            if (indexOfData > -1)
            {
                var templateFormId = Convert.ToInt32(_callbackNames[indexOfData]);
                _templateForm = GetTemplateFormById(templateFormId);
                if (_templateForm.Id != null)
                {
                    _order = await _httpClient.PostTemplateFormIntoOrderAsync((int)_templateForm.Id);
                }

                await _bot.SendTextMessageAsync(message.Chat.Id, _templateForm.Fields?[_templateFieldId].Name);

                _lastBotRequest = LastBotRequest.TemplateField;
            }
        }
예제 #2
0
        private async Task OrderBuilder(Message message)
        {
            var messageText = message.Text;

            switch (_lastBotRequest)
            {
            case LastBotRequest.OrderCustomerName:
                _lastBotRequest     = LastBotRequest.OrderCustomerPhone;
                _order.CustomerName = messageText;
                _order.CreatedDate  = DateTime.Now.ToShortDateString();
                await _bot.SendTextMessageAsync(message.Chat.Id, "Введите телефон заказчика");

                break;

            case LastBotRequest.OrderCustomerPhone:
                _lastBotRequest = LastBotRequest.OrderDeadlineDate;
                await _bot.SendTextMessageAsync(message.Chat.Id, "Введите дату окончания (дд/мм/гг)");

                _order.CustomerPhone = messageText;
                break;

            case LastBotRequest.OrderCreatedDate:
                _order.CreatedDate = messageText;
                break;

            case LastBotRequest.OrderDeadlineDate:
                _lastBotRequest = LastBotRequest.OrderStatus;
                await _bot.SendTextMessageAsync(message.Chat.Id, "Введите статус заказа");

                _order.DeadlineDate = messageText;
                break;

            case LastBotRequest.OrderStatus:
                _order.Status = message.Text;
                await _bot.SendTextMessageAsync(message.Chat.Id, "Новый заказ сформирован");

                await _httpClient.PostOrderAsync(_order);

                _templateFieldId = 0;
                break;

            case LastBotRequest.OrderOrderForms:
                break;

            case LastBotRequest.TemplateField:
                var fieldValues = _order.OrderForms?[0].Fields;
                if (fieldValues != null)
                {
                    fieldValues[_templateFieldId].Value = message.Text;
                }

                if (_templateFieldId++ == _templateForm.Fields?.Count - 1)
                {
                    await _bot.SendTextMessageAsync(message.Chat.Id, "Введите имя заказчика");

                    _lastBotRequest = LastBotRequest.OrderCustomerName;
                    return;
                }

                await _bot.SendTextMessageAsync(message.Chat.Id, _templateForm.Fields?[_templateFieldId].Name);

                break;

            case LastBotRequest.None:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }