示例#1
0
        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;
            }
        }
示例#2
0
        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;
                }
            }
        }