public async Task NavigateTo(string messageBody, long chatId, int userId, TelegramBotClient _telegramBot) { await _telegramBot.SendChatActionAsync(chatId, ChatAction.Typing); if (messageBody == "🆘 SOS ДТП" || messageBody == "💲 Купить" || messageBody == "☎️ Связаться с оператором" || messageBody == "📝 Мои полисы") { messagePath = string.Empty; } else { messageBody = '\\' + messageBody; } var responseMessage = string.Empty; var splittedMessageBody = messagePath.Split('\\'); if (messageBody == "\\🔙 Назад..." || messageBody == "\\⏩ Продолжить...") { CutMessagePath(splittedMessageBody, 0); } else { if (splittedMessageBody[splittedMessageBody.Length - 1] != messageBody) { messagePath += messageBody; } } splittedMessageBody = messagePath.Split('\\'); if (splittedMessageBody.Length > 2 && (splittedMessageBody[splittedMessageBody.Length - 1] == splittedMessageBody[splittedMessageBody.Length - 2])) { CutMessagePath(splittedMessageBody); } switch (splittedMessageBody[0]) { case "💲 Купить": { if (splittedMessageBody.Length > 1) { switch (splittedMessageBody[1]) { case "Sam takoi": { await _telegramBot.SendTextMessageAsync( chatId, "Ty durak?"); break; } case "Izvinis": { await _telegramBot.SendTextMessageAsync( chatId, "izvini"); break; } } } inlineKeyboard = CreateInlineKeyboard("🔙 Назад...|"); await _telegramBot.SendTextMessageAsync( chatId, "otvet", replyMarkup : inlineKeyboard); break; } case "🆘 SOS ДТП": if (splittedMessageBody.Length > 1) { switch (splittedMessageBody[1]) { case "📞 Контакты при ДТП": { responseMessage = "Вызовите сотрудников административной полиции – 102\n" + "<b>1) В случае необходимости:</b>\n" + "\t- 101 – пожарная служба; 🚒\n" + "\t- 103 – скорая медицинская помощь; 🚑\n" + "\t- 104 – газовая служба; 👷\n" + "\t- 112 – служба спасения. ⛑️\n" + "<b>2) Сообщите другим участникам ДТП номер Вашего полиса ОГПО ВТС и телефон Jysan Garant</b>\n" + "\t- <b>Контакты для консультации:</b> \n" + "\tс <b>8:00 до 22:00</b> – call центр: 3264 с мобильных бесплатно, +7 (727) 357 25 25\n" + "\tс <b>22:00 до 8:00</b> – аварийный комиссар +7 701 529 80 48 🚔\n"; inlineKeyboard = CreateInlineKeyboard("🔙 Назад...|"); await _telegramBot.SendTextMessageAsync( chatId, responseMessage, replyMarkup : inlineKeyboard, parseMode : ParseMode.Html); break; } case "📝 Список документов": { inlineKeyboard = CreateInlineKeyboard("🔙 Назад...|"); await _telegramBot.SendTextMessageAsync( chatId, "1⃣ Включите аварийную световую сигнализацию.\n" + "2⃣ Выставьте знак аварийной остановки(не менее 15 м от авто в населенном пункте и не менее 30 м от - вне населенного пункта).\n" + "3⃣ Вызовите сотрудников административной полиции – 102 👮\n\n" + " В случае необходимости:\n" + "👨🚒 101 – пожарная служба;\n" + "👨⚕ 103 – скорая медицинская помощь;\n" + "👷 104 – газовая служба;\n" + "⛑ 112 – служба спасения.\n\n" + "4⃣ Сообщите другим участникам ДТП номер Вашего полиса ОГПО ВТС и телефон «Jýsan Garant»\n" + "Контакты для консультации:\n\n" + "с 8:00 до 22:00 – call центр: 3264 с мобильных бесплатно, +7(727) 357 25 25\n" + "с 22:00 до 8:00 – аварийный комиссар 8 701 529 80 48\n\n" + "5⃣ Оставайтесь на месте ДТП до приезда сотрудников Административной полиции.\n" + "Вниманию лиц, пострадавших в дорожно-транспортных происшествиях, в случаях, когда виновное лицо не установлено!\n" + "АО «Фонд гарантирования страховых выплат» сообщает, что при ДТП, произошедших с 1 октября 2008 года, предусмотрена выплата компенсаций пострадавшим, получившим тяжкие телесные повреждения и родственникам погибших.\n\n" + "Выплаты осуществляются только в случаях, когда виновник ДТП скрылся с места аварии.\n\n" + "Для получения компенсаций пострадавшим необходимо представить в Фонд полный пакет документов в соответствии с требованиями действующего законодательства:\n\n" + "⚫ заявление на выплату возмещения вреда в произвольной форме;\n\n" + "⚫ документ от органов Министерства внутренних дел Республики Казахстан, подтверждающий факт наступления случая, то есть случай не установления лица, скрывшегося с места транспортного происшествия и ответственного за причинение вреда потерпевшему;\n\n" + "⚫ копия заключения организации здравоохранения, в которой потерпевшему была оказана медицинская помощь в связи с причиненным тяжким вредом здоровью в результате транспортного происшествия, с указанием характера полученных потерпевшим травм и увечий, диагноза, периода временной нетрудоспособности;\n\n" + "⚫ копия заключения учреждений медико-социальной или судебно-медицинской экспертизы;\n\n" + "⚫ нотариально засвидетельствованная копия свидетельства о смерти потерпевшего(в случае смерти потерпевшего);\n\n" + "⚫ документ, подтверждающий право лица, имеющего согласно законодательным актам Республики Казахстан право на возмещение вреда(в случае смерти потерпевшего);\n\n" + "⚫ документы либо их копии, подтверждающие затраты на погребение(при отсутствии родственников);\n\n" + "⚫ копия удостоверения личности заявителя(получателя);\n\n" + "⚫ данные о банковских реквизитах для перечисления средств.\n\n" + "Обращаем внимание, что право на выплату компенсаций в случае смерти потерпевшего согласно статье 940 Гражданского кодекса РК имеют только \n" + "нетрудоспособные лица, состоявшие на иждивении умершего или имевшие ко дню его смерти право на получение от него содержания; ребенок умершего, \n" + "родившийся после его смерти, а также один из родителей, супруг либо другой член семьи, независимо от трудоспособности, который не работает и\n" + " занят уходом за находившимся на иждивении умершего его детьми, внуками, братьями и сестрами, не достигшими четырнадцати лет либо хотя и достигшими \n" + "указанного возраста, но по заключению медицинских органов, нуждающимися по состоянию здоровья в постороннем уходе.\n" + "Потерпевшие вправе обратиться в Фонд в течение одного года с момента наступления дорожно - транспортного происшествия.\n", replyMarkup : inlineKeyboard); break; } case "❓ Действия клиента": { if (splittedMessageBody.Length > 2) { switch (splittedMessageBody[2]) { case "❗ Виновник": { responseMessage = "1) заявление о страховом случае;\n" + "2) страховой полис(его дубликат) виновника ДТП;\n" + "3) документ компетентных органов, подтверждающий факт наступления страхового случая и размер вреда, причиненного потерпевшим;\n" + "4) копию удостоверения личности;\n" + "5) копия водительского удостоверения(временных прав);заключение медицинского освидетельствования.\n"; break; } case "❕ Потерпевший": { responseMessage = "1) (Прямое урегулирование)\n" + "2) К вышеперечисленному списку документов + полис виновника ДТП\n" + "3) Более полную информацию по перечню предоставляемых документов можно получить у специалиста\n" + "4) Отдела страховых выплат(список аварийных комиссаров)\n"; break; } } CutMessagePath(splittedMessageBody); await _telegramBot.SendTextMessageAsync(chatId, responseMessage, replyMarkup : inlineKeyboard); break; } inlineKeyboard = CreateInlineKeyboard("❗ Виновник|❕ Потерпевший|🔙 Назад...|"); await _telegramBot.SendTextMessageAsync( chatId, "izvini", replyMarkup : inlineKeyboard); break; } case string s when s == "🛂 Заявить о ДТП": var user = _insuranceService.GetUserInfo(userId); if (splittedMessageBody.Length > 2) { switch (splittedMessageBody[2]) { case string st when st == "❌ ФИО" || st == "✔️ ФИО": if (splittedMessageBody.Length == 3) { await _telegramBot.SendTextMessageAsync(chatId, "⌨️ Введите ФИО", replyMarkup : new ReplyKeyboardRemove()); } else if (splittedMessageBody[3].Split(' ').Length == 3) { user.FIO = st; _insuranceService.UserUpdate(user); CutMessagePath(splittedMessageBody, 0); } else { await _telegramBot.SendTextMessageAsync(chatId, "Неверное ФИО", replyMarkup : new ReplyKeyboardRemove()); CutMessagePath(splittedMessageBody); } break; case string st when st == "❌ ИИН" || st == "✔️ ИИН" || IsStringIIN(st): if (splittedMessageBody.Length == 3) { await _telegramBot.SendTextMessageAsync(chatId, "⌨️ Введите ИИН", replyMarkup : new ReplyKeyboardRemove(), parseMode : ParseMode.Html); } else if (IsStringIIN(splittedMessageBody[3])) { user.IIN = splittedMessageBody[3]; _insuranceService.UserUpdate(user); CutMessagePath(splittedMessageBody); } else { await _telegramBot.SendTextMessageAsync(chatId, "Неверный ИИН", replyMarkup : new ReplyKeyboardRemove()); CutMessagePath(splittedMessageBody); } break; case string st when st == "❌ Телефон" || st == "✔️ Телефон": if (splittedMessageBody.Length == 3) { replyKeyboardMarkup = new ReplyKeyboardMarkup(KeyboardButton.WithRequestContact("Отправить телефон")); replyKeyboardMarkup.ResizeKeyboard = true; await _telegramBot.SendTextMessageAsync(chatId, "📲 Поделитесь номером телефона", parseMode : ParseMode.Html, replyMarkup : replyKeyboardMarkup); } break; case string st when st == "❌ Местоположение" || st == "✔️ Местоположение": if (splittedMessageBody.Length == 3) { replyKeyboardMarkup = new ReplyKeyboardMarkup(KeyboardButton.WithRequestLocation("🌏 Отправить местоположение")); replyKeyboardMarkup.ResizeKeyboard = true; await _telegramBot.SendTextMessageAsync(chatId, "🌏 Поделитесь местоположением", parseMode : ParseMode.Html, replyMarkup : replyKeyboardMarkup); } break; case string st when st == "❌ Фото" || st == "✔️ Фото": if (splittedMessageBody.Length == 3) { await _telegramBot.SendTextMessageAsync(chatId, "Отправьте фото <b>ДТП</b>", parseMode : ParseMode.Html); } break; case string st when st == "❓ Как сделать фото?": inlineKeyboard = CreateInlineKeyboard("🔙 Назад...|"); responseMessage = "<b>Какие снимки делаются при ДТП?</b>\n" + "<i>Фотоснимки, необходимые для документирования дорожно-транспортного происшествия:</i>\n" + "❕ Фотография, на которой запечатлено место аварии. На ней также должны быть видны машины, ставшие участниками ДТП;\n" + "❕ Снимки государственных номеров ТС. Если есть такая возможность – примените макросъемку;\n" + "❕ Фотоснимок общего вида автомобиля, участвовавшего в ДТП. Особенно важно снять место контакта двух машин. Повреждения фотографируйте детально. Неплохо запечатлеть малейшие следы соприкосновения, например, след краски;\n" + "❕ Фотография общего плана ДТП и его главного очевидца;\n" + "❕ Снимок, запечатлевший положение автомобилей относительно полос движения. При фотографировании в вечернее время или ночное, учтите особенности вспышки своего фотоаппарата, особенно ее дальность;\n" + "❕ Фото со следами торможения (если таковые есть);\n" + "❕ Снимки, запечатлевшие погодные условия на момент аварии (снег, лужи, прочее);\n" + "❕ Если в районе места аварии есть дорожные знаки, сделайте их фотографии в том виде, в котором они были на момент столкновения (например, знак “STOP”, закрытый деревьями, прочее);\n" + "❕ Фото приборной доски автомобиля, особенно часов, спидометра (если он сохранил показания скорости);\n" + "❕ Сделайте снимок водителя и пассажиров ТС, их состояние. Это необходимо для того случая, когда они потребуют возмещения ущерба. А если у вас есть возможность сделать видеосъемку – это будет еще лучше;\n" + "Фотографии, снятые крупным планом травм и ранений пострадавших в ДТП, вплоть до выбитых зубов.\n\n" + "<b>Иногда участники ДТП, которые все сфотографировали, говорят о том, что другие участники аварии даже не хотят писать заявление, стараются оправдаться. " + "А все это происходит по той причине, что по снимкам совершенно ясно, что это именно они виновны в данном происшествии. Позвольте дать вам несколько полезных советов:</b>" + "❕ Место, в котором произошло столкновение машин, снимайте крупным планом;\n" + "❕ Обязательно делайте фото таким образом, чтобы в объектив попадал и государственный номер машины. " + "Так специалисты точно поймут, какой именно автомобиль сфотографирован.\n"; await _telegramBot.SendTextMessageAsync(chatId, responseMessage, parseMode : ParseMode.Html, replyMarkup : inlineKeyboard);; break; } CutMessagePath(splittedMessageBody, 3); } if (splittedMessageBody.Length != 3) { string FIO = string.Empty, IIN = string.Empty, phoneNum = string.Empty, location = string.Empty, photos = string.Empty, fullKeyboardString = string.Empty; if (user.FIO == null) { FIO += "❌ ФИО"; } else { FIO += "✔️ ФИО"; } if (user.IIN == null) { IIN += "❌ ИИН"; } else { IIN += "✔️ ИИН"; } if (user.Contact == null) { phoneNum += "❌ Телефон"; } else { phoneNum += "✔️ Телефон"; } if (user.DTPs == null) { user.DTPs = new DTOs.DTP(); } if (user.DTPs.Location == null) { location += "❌ Местоположение"; } else { location += "✔️ Местоположение"; } if (user.DTPs.Photos == null) { photos += "❌ Фото"; } else { photos += "✔️ Фото"; } fullKeyboardString = $"{FIO}\\{IIN}\\{phoneNum}|{location}\\{photos}|❓ Как сделать фото?|"; if (fullKeyboardString.Contains("❌")) { inlineKeyboard = CreateInlineKeyboard(fullKeyboardString); } else { inlineKeyboard = CreateInlineKeyboard(fullKeyboardString + "🛂 Заявить о ДТП|"); } await _telegramBot.SendTextMessageAsync(chatId, "❕ Заполните все поля чтобы продолжить", replyMarkup : inlineKeyboard); } break; case "📖 Вернуться в меню": messagePath = string.Empty; break; } break; } else { inlineKeyboard = CreateInlineKeyboard("📞 Контакты при ДТП\\📝 Список документов|🛂 Заявить о ДТП|❓ Действия клиента\\🔙 Назад...|"); await _telegramBot.SendTextMessageAsync( chatId, "<b>🆘 SOS ДТП</b>\n\n" + "- для того, чтобы заявить о ДТП, нажмите на кнопку - <b>'🛂 Заявить о ДТП'</b>\n\n" + "- для того, чтобы узнать что делать при ДТП, нажмите на кнопку - <b>'❓ Действия клиента</b>\n\n" + "- для того, чтобы посмотреть необходимые контакты при ДТП, нажмите на кнопку - <b>'📞 Контакты при ДТП</b>\n\n" + "- для того, чтобы просмотреть необходимый перечень документов при ДТП, нажмите на кнопку - <b>'📝 Список документов'</b>\n\n", replyMarkup : inlineKeyboard, parseMode : ParseMode.Html);; break; } case "☎️ Связаться с оператором": if (splittedMessageBody.Length > 1) { switch (splittedMessageBody[1]) { case "🌎 Ближайшее отделение": var user = _insuranceService.GetUserInfo(userId); if (user.DTPs.IsLocationNeeded()) { replyKeyboardMarkup = new ReplyKeyboardMarkup(KeyboardButton.WithRequestLocation("🌏 Отправить местоположение")); replyKeyboardMarkup.ResizeKeyboard = true; await _telegramBot.SendTextMessageAsync(chatId, "🌏 Поделитесь местоположением", parseMode : ParseMode.Html, replyMarkup : replyKeyboardMarkup); } else { List <Tuple <Location, string, float> > allDepartamentsAndPhones = new List <Tuple <Location, string, float> >(); string connetionString = System.Configuration.ConfigurationManager.ConnectionStrings["fstpString"].ConnectionString; try { using (SqlConnection cnn = new SqlConnection(connetionString)) { using (SqlCommand command = new SqlCommand("exec [Fstp]..Report_ogpo_dept", cnn)) { cnn.Open(); using (SqlDataReader dataReader = command.ExecuteReader()) { while (dataReader.Read()) { try { Location loc = GetLocationByAdress(dataReader.GetValue(4).ToString()); String phon = dataReader.GetValue(5).ToString(); float dist = GetDistanceBettweenLocations(user.DTPs.Location.Latitude, user.DTPs.Location.Longitude, float.Parse(loc.lat, CultureInfo.InvariantCulture), float.Parse(loc.lon, CultureInfo.InvariantCulture)); allDepartamentsAndPhones.Add(new Tuple <Location, string, float>(loc, phon, dist)); } catch { } } } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } Tuple <Location, string, float> sortedDepts = allDepartamentsAndPhones.OrderBy(x => x.Item3).First(); await _telegramBot.SendTextMessageAsync(chatId, $"🌏 Ближайшее подразеделение\n" + $"🚶 Расстояние: {sortedDepts.Item3.ToString("0.##")}км", parseMode : ParseMode.Html); await _telegramBot.SendLocationAsync(chatId, float.Parse(sortedDepts.Item1.lat, CultureInfo.InvariantCulture), float.Parse(sortedDepts.Item1.lon, CultureInfo.InvariantCulture)); await _telegramBot.SendTextMessageAsync(chatId, $"☎️ Номер: {sortedDepts.Item2}\n", parseMode : ParseMode.Html, replyMarkup : CreateInlineKeyboard("🔙 Назад...|")); } break; } } else { responseMessage = "Вошел в \"☎️ Связаться с оператором\""; inlineKeyboard = CreateInlineKeyboard("🌎 Ближайшее отделение|"); await _telegramBot.SendTextMessageAsync(chatId, responseMessage, replyMarkup : inlineKeyboard); } break; default: inlineKeyboard = CreateInlineKeyboard("💲 Купить\\🆘 SOS ДТП|🌍 Подразделения|📝 Мои полисы|"); responseMessage = $"<b>'🕮 Главное меню'</b> \n\n" + $"- для того, чтобы приобрести полис, нажмите на кнопку - <b>'💲 Купить'</b>\n\n" + "- для того, чтобы заявить о ДТП и получить необходимую информацию, нажмите на кнопку - <b>'🆘 SOS ДТП'</b>\n\n" + "- для того, чтобы получить необходимые контакты, нажмите на кнопку - <b>'🌍 Подразделения'</b>\n\n" + "- для того, чтобы посмотреть свои полисы, нажмите на кнопку - <b>'📝 Мои полисы'</b>\n\n"; await _telegramBot.SendTextMessageAsync(chatId, responseMessage, parseMode : ParseMode.Html, replyMarkup : inlineKeyboard); break; } }
private static async void BotOnMessageReceived(object sender, MessageEventArgs messageEventArgs) { var messageBody = messageEventArgs.Message; string responseMessage = String.Empty; Console.WriteLine($"Received inline query from: {messageEventArgs.Message.Location}, {messageEventArgs.Message.Contact}"); ReplyKeyboardMarkup ReplyKeyboard = new ReplyKeyboardMarkup { }; InlineKeyboardMarkup inlineKeyboard = new InlineKeyboardMarkup(new[] { InlineKeyboardButton.WithCallbackData(""), }); var user = new DTOs.User(); var DTP = new DTP(); try { user = _insuranceService.GetUserInfo(messageEventArgs.Message.From.Id); DTP = _insuranceService.GetDtpInfo(messageEventArgs.Message.From.Id); }catch { } if (messageBody != null) { switch (messageBody as object) { case Message l when l.Location != null: user.DTPs.Location = l.Location; user.DTPs.LocationGetTime = DateTime.Now; _insuranceService.UserUpdate(user); inlineKeyboard = _navigationService.CreateInlineKeyboard("⏩ Продолжить...|"); await _telegramBot.SendTextMessageAsync(messageEventArgs.Message.Chat.Id, "Местоположение успешно отправлено", replyMarkup : inlineKeyboard); break; case Message c when c.Contact != null: user.Contact = c.Contact; _insuranceService.UserUpdate(user); await _telegramBot.SendTextMessageAsync(messageEventArgs.Message.Chat.Id, "✔️", replyMarkup : new ReplyKeyboardRemove()); inlineKeyboard = _navigationService.CreateInlineKeyboard("⏩ Продолжить...|"); await _telegramBot.SendTextMessageAsync(messageEventArgs.Message.Chat.Id, "Номер телефона успешно добавлен", replyMarkup : inlineKeyboard); break; case Message p when p.Photo != null: //var teleFile = _telegramBot.GetFileAsync(p.Photo[p.Photo.Count() - 1].FileId); //var downloadUrl = $@"https://api.telegram.org/file/bot{EnvironmentVariables.BotToken}/" + teleFile.Result.FilePath; //using (WebClient client = new WebClient()) //{ // client.DownloadFile(new Uri(downloadUrl), @"Files\image.png"); //} ////using (var fileStream = new FileStream(@"Files\image.png", FileMode.Open, FileAccess.Read, FileShare.Read)) ////{ //// await _telegramBot.SendPhotoAsync( //// p.Chat.Id, //// fileStream, //// "Nice Picture"); ////} //var img = Image.FromFile(@"Files\image.png"); //if (user.DTPs.Photos == null) user.DTPs.Photos = new System.Collections.Generic.List<Image>(); //user.DTPs.Photos.Add(img); //_insuranceService.UserUpdate(user); //foreach (var photo in user.DTPs.Photos) //{ // using (var fileStream = new FileStream(@"Files\image.png", FileMode.Open, FileAccess.Read, FileShare.Read)) // { // //photo.Save(fileStream, ImageFormat.Png); // await _telegramBot.SendPhotoAsync( // p.Chat.Id, // fileStream, // "Nice Picture"); // } //} inlineKeyboard = _navigationService.CreateInlineKeyboard("⏩ Продолжить...|"); await _telegramBot.SendTextMessageAsync(messageEventArgs.Message.Chat.Id, "Фото успешно добавлено", replyMarkup : inlineKeyboard); break; case Message s when s.Text == "/start": responseMessage = _insuranceService.GenerateHelloMessage( messageEventArgs.Message.From.Username, messageEventArgs.Message.From.Id); await _telegramBot.SendTextMessageAsync( chatId : messageEventArgs.Message.Chat, text : responseMessage); inlineKeyboard = _navigationService.CreateInlineKeyboard("💲 Купить\\🆘 SOS ДТП|🌍 Подразделения|📝 Мои полисы|"); await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat.Id, $"<b>'🕮 Главное меню'</b> \n\n" + $"- для того, чтобы приобрести полис, нажмите на кнопку - <b>'💲 Купить'</b>\n\n" + "- для того, чтобы заявить о ДТП и получить необходимую информацию, нажмите на кнопку - <b>'🆘 SOS ДТП'</b>\n\n" + "- для того, чтобы получить необходимые контакты, нажмите на кнопку - <b>'🌍 Подразделения'</b>\n\n" + "- для того, чтобы посмотреть свои полисы, нажмите на кнопку - <b>'📝 Мои полисы'</b>\n\n", replyMarkup : inlineKeyboard, parseMode : ParseMode.Html); EnvironmentVariables.ShowLastPrintedMessage = false; break; #region insApplication case string s when s == "Оформить договор страхования": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); responseMessage = "Выберете интересующий вас продукт"; ReplyKeyboard = new[] { new[] { "Обязательные виды" }, new[] { "Личное страхование" }, new[] { "Имущество" }, new[] { "Каско" }, new[] { "Ответственность" }, new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += s; break; case string s when s == "Обязательные виды": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Оформить договор страхования") { responseMessage = "Выберете интересующий вас продукт"; ReplyKeyboard = new[] { new[] { "ОГПО ВТС" }, new[] { "ОГПО ПП" }, new[] { "ОГПО А" }, new[] { "ОГПО ЧН" }, new[] { "ОГПО Эко" }, new[] { "ОГПО ВОО" }, new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, "\nДля начала я задам несколько вопросов, чтобы посчитать стоимость полиса." + responseMessage, replyMarkup : ReplyKeyboard); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; break; } goto default; case string s when s == "ОГПО ВТС": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Обязательные виды") { responseMessage = "Выберите тип транспортного средства"; ReplyKeyboard = new[] { new[] { "Легковые машины" }, new[] { "Автобусы до 16 пассажирских мест (включительно)" }, new[] { "Автобусы свыше 16 пассажирских мест" }, new[] { "Грузовые" }, new[] { "Троллейбусы, трамваи" }, new[] { "Мототранспорт" }, new[] { "Прицепы, полуприцепы" }, new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; break; } goto default; case string s when s == "Легковые машины" || s == "Автобусы до 16 пассажирских мест (включительно)" || s == "Автобусы свыше 16 пассажирских мест" || s == "Грузовые" || s == "Троллейбусы, трамваи" || s == "Мототранспорт" || s == "Прицепы, полуприцепы": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "ОГПО ВТС") { responseMessage = "Выберите регион регистрации автомобиля"; ReplyKeyboard = new[] { new[] { "Алматинская область" }, new[] { "Южно-Казахстанская область" }, new[] { "Восточно-Казахстанская область" }, new[] { "Костанайская область" }, new[] { "Карагандинская область" }, new[] { "Северо-Казахстанская область" }, new[] { "Акмолинская область" }, new[] { "Павлодарская область" }, new[] { "Жамбылская область" }, new[] { "Актюбинская область" }, new[] { "Западно-Казахстанская область" }, new[] { "Кызылординская область" }, new[] { "Атырауская область" }, new[] { "Мангистауская область" }, new[] { "Алматы" }, new[] { "Астана" }, new[] { "ТС снятые с учета для последующей регистрации" }, new[] { "Временный въезд" }, new[] { "Шымкент" }, new[] { "Туркестанская область" }, new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; break; } goto default; case string s when s == "Алматинская область" || s == "Южно-Казахстанская область" || s == "Восточно-Казахстанская область" || s == "Костанайская область" || s == "Карагандинская область" || s == "Северо-Казахстанская область" || s == "Акмолинская область" || s == "Павлодарская область" || s == "Жамбылская область" || s == "Актюбинская область" || s == "Западно-Казахстанская область" || s == "Кызылординская область" || s == "Атырауская область" || s == "Мангистауская область" || s == "Алматы" || s == "Астана" || s == "ТС снятые с учета для последующей регистрации" || s == "Временный въезд" || s == "Шымкент" || s == "Туркестанская область": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Легковые машины" || EnvironmentVariables.LastInputMessage == "Автобусы до 16 пассажирских мест (включительно)" || EnvironmentVariables.LastInputMessage == "Автобусы свыше 16 пассажирских мест" || EnvironmentVariables.LastInputMessage == "Грузовые" || EnvironmentVariables.LastInputMessage == "Троллейбусы, трамваи" || EnvironmentVariables.LastInputMessage == "Мототранспорт" || EnvironmentVariables.LastInputMessage == "Прицепы, полуприцепы") { responseMessage = "Гор.обл. или респ.значения"; ReplyKeyboard = new[] { new[] { "Да" }, new[] { "Нет" }, new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; break; } goto default; case string s when s == "Да" || s == "Нет": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Алматинская область" || EnvironmentVariables.LastInputMessage == "Южно-Казахстанская область" || EnvironmentVariables.LastInputMessage == "Восточно-Казахстанская область" || EnvironmentVariables.LastInputMessage == "Костанайская область" || EnvironmentVariables.LastInputMessage == "Карагандинская область" || EnvironmentVariables.LastInputMessage == "Северо-Казахстанская область" || EnvironmentVariables.LastInputMessage == "Акмолинская область" || EnvironmentVariables.LastInputMessage == "Павлодарская область" || EnvironmentVariables.LastInputMessage == "Жамбылская область" || EnvironmentVariables.LastInputMessage == "Актюбинская область" || EnvironmentVariables.LastInputMessage == "Западно-Казахстанская область" || EnvironmentVariables.LastInputMessage == "Кызылординская область" || EnvironmentVariables.LastInputMessage == "Атырауская область" || EnvironmentVariables.LastInputMessage == "Мангистауская область" || EnvironmentVariables.LastInputMessage == "Алматы" || EnvironmentVariables.LastInputMessage == "Астана" || EnvironmentVariables.LastInputMessage == "ТС снятые с учета для последующей регистрации" || EnvironmentVariables.LastInputMessage == "Временный въезд" || EnvironmentVariables.LastInputMessage == "Шымкент" || EnvironmentVariables.LastInputMessage == "Туркестанская область") { responseMessage = "Введите год выпуска тс"; ReplyKeyboard = new[] { new[] { "Вернуться в меню..." }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : new ReplyKeyboardRemove()); EnvironmentVariables.LastPrintedMessage = responseMessage; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; break; } goto default; case string s when int.TryParse(s, out int n) && s.Length == 4: await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Да" || EnvironmentVariables.LastInputMessage == "Нет") { EnvironmentVariables.LastPrintedMessage = "Стоимость вашего электронного полиса "; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; var splittedPath = EnvironmentVariables.MessagePath.Split('/'); EnvironmentVariables.MessagePath = string.Empty; var ogpoVts = _insuranceService.CreateOgpoVts(splittedPath[3], splittedPath[4], splittedPath[5], Int32.Parse(splittedPath[6])); responseMessage = $"Стоимость вашего полиса {Math.Round(ogpoVts.TotalPrice,2)} тнг. " + "Спасибо вам, что вы настолько круты и сами оформляете через бота 🤖"; ReplyKeyboard = new[] { new[] { $"Да, оформляем за {Math.Round(ogpoVts.TotalPrice, 2)} тнг." }, new[] { "Вернуться в меню" }, }; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, responseMessage, replyMarkup : ReplyKeyboard); break; } goto default; #endregion #region InsurerRegistration case string s when s == "Да, оформляем за ": await _telegramBot.SendChatActionAsync(messageEventArgs.Message.Chat.Id, ChatAction.Typing); if (EnvironmentVariables.LastInputMessage == "Стоимость вашего электронного полиса ") { EnvironmentVariables.LastPrintedMessage = "Да, оформляем за "; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += s; responseMessage = "Напишите вашу фамилию"; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, "Начинаем. Для оформления полиса заполните данные об авто и водителе," + " которые обязательно указывать по Закону Джунглей. Время оформления ~ 7 минут\n\n" + responseMessage, replyMarkup : new ReplyKeyboardRemove()); break; } goto default; case string s when Regex.IsMatch(s, @"^-?\d+$"): if (EnvironmentVariables.LastInputMessage == "Стоимость вашего электронного полиса ") { EnvironmentVariables.LastPrintedMessage = "Да, оформляем за "; EnvironmentVariables.LastInputMessage = s; EnvironmentVariables.ShowLastPrintedMessage = true; EnvironmentVariables.MessagePath += "/" + s; responseMessage = "Напишите вашу фамилию"; await _telegramBot.SendTextMessageAsync( messageEventArgs.Message.Chat, "Начинаем. Для оформление полиса заполните данные об авто и водителе," + " которые обязательно указывать по Закону Джунглей. Время оформления ~ 7 минут\n\n" + responseMessage, replyMarkup : new ReplyKeyboardRemove()); break; } goto default; #endregion default: inlineKeyboard = _navigationService.CreateInlineKeyboard("🔙 Назад...\\📖 Вернуться в меню|"); await _telegramBot.SendTextMessageAsync( chatId : messageEventArgs.Message.Chat, text : "К сожалению, мы не нашли нужное вам значение в базе. " + "Попробуйте написать еще раз иначе.", replyMarkup : inlineKeyboard); break; } } }