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; } }
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(); } }