diff --git a/Program.cs b/Program.cs index a9b2e27..2329a1f 100644 --- a/Program.cs +++ b/Program.cs @@ -250,154 +250,156 @@ class Program } return; } + } - else if (data == "admin_panel") - { - if (admins.Contains(chatId)) - { - await SendAdminPanel(botClient, chatId); - } - else - { - var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!"); - Log.Information($"Неавторизованный доступ к админ-панели от {chatId}"); - await Task.Delay(2000); - await botClient.DeleteMessage(chatId, authMessage.MessageId); - await SendMainMenu(botClient, chatId); - } - } - else if (data == "view_reports") - { - if (admins.Contains(chatId)) - { - await ViewReports(botClient, chatId); - } - else - { - var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!"); - Log.Information($"Неавторизованный доступ к заявкам от {chatId}"); - await Task.Delay(2000); - await botClient.DeleteMessage(chatId, authMessage.MessageId); - await SendMainMenu(botClient, chatId); - } - } - else if (data == "view_archived_reports") - { - if (admins.Contains(chatId)) - { - await ViewArchivedReports(botClient, chatId); - } - else - { - var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!"); - Log.Information($"Неавторизованный доступ к архиву заявок от {chatId}"); - await Task.Delay(2000); - await botClient.DeleteMessage(chatId, authMessage.MessageId); - await SendMainMenu(botClient, chatId); - } - } - else if (data != null && data.StartsWith("report_")) - { - long reportId = long.Parse(data.Substring(7)); - if (callbackQuery?.Message?.MessageId != null) - { - int messageId = callbackQuery.Message.MessageId; - await ShowReportDetails(botClient, chatId, reportId, messageId); - } - } - else if (data != null && data.StartsWith("status_")) - { - string[] parts = data.Split('_'); - long reportId = long.Parse(parts[1]); - string newStatus = parts[2]; - if (callbackQuery?.Message?.MessageId != null) - { - int messageId = callbackQuery.Message.MessageId; - await UpdateReportStatus(reportId, newStatus, chatId); - await ShowReportDetails(botClient, chatId, reportId, messageId); - } - } - else if (data != null && data.StartsWith("delete_")) - { - long reportId = long.Parse(data.Substring(7)); - await DeleteReport(botClient, chatId, reportId); - } - else if (data == "back_to_list") - { - await ViewReports(botClient, chatId); - } - else if (data == "back_to_admin_panel") + + else if (data == "admin_panel") + { + if (admins.Contains(chatId)) { await SendAdminPanel(botClient, chatId); } - else if (data == "main_menu") + else { + var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!"); + Log.Information($"Неавторизованный доступ к админ-панели от {chatId}"); + await Task.Delay(2000); + await botClient.DeleteMessage(chatId, authMessage.MessageId); await SendMainMenu(botClient, chatId); } - else if (data != null && data.StartsWith("priority_")) + } + else if (data == "view_reports") + { + if (admins.Contains(chatId)) { - string priority = data.Substring(9); - userReports[chatId].Priority = priority; - userReportSteps[chatId] = 2; - await botClient.SendMessage(chatId, "Пожалуйста, укажите кабинет."); + await ViewReports(botClient, chatId); } + else + { + var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!"); + Log.Information($"Неавторизованный доступ к заявкам от {chatId}"); + await Task.Delay(2000); + await botClient.DeleteMessage(chatId, authMessage.MessageId); + await SendMainMenu(botClient, chatId); + } + } + else if (data == "view_archived_reports") + { + if (admins.Contains(chatId)) + { + await ViewArchivedReports(botClient, chatId); + } + else + { + var authMessage = await botClient.SendMessage(chatId, "⛔ Вы не являетесь администратором!"); + Log.Information($"Неавторизованный доступ к архиву заявок от {chatId}"); + await Task.Delay(2000); + await botClient.DeleteMessage(chatId, authMessage.MessageId); + await SendMainMenu(botClient, chatId); + } + } + else if (data != null && data.StartsWith("report_")) + { + long reportId = long.Parse(data.Substring(7)); + if (callbackQuery?.Message?.MessageId != null) + { + int messageId = callbackQuery.Message.MessageId; + await ShowReportDetails(botClient, chatId, reportId, messageId); + } + } + else if (data != null && data.StartsWith("status_")) + { + string[] parts = data.Split('_'); + long reportId = long.Parse(parts[1]); + string newStatus = parts[2]; + if (callbackQuery?.Message?.MessageId != null) + { + int messageId = callbackQuery.Message.MessageId; + await UpdateReportStatus(reportId, newStatus, chatId); + await ShowReportDetails(botClient, chatId, reportId, messageId); + } + } + else if (data != null && data.StartsWith("delete_")) + { + long reportId = long.Parse(data.Substring(7)); + await DeleteReport(botClient, chatId, reportId); + } + else if (data == "back_to_list") + { + await ViewReports(botClient, chatId); + } + else if (data == "back_to_admin_panel") + { + await SendAdminPanel(botClient, chatId); + } + else if (data == "main_menu") + { + await SendMainMenu(botClient, chatId); + } + else if (data != null && data.StartsWith("priority_")) + { + string priority = data.Substring(9); + userReports[chatId].Priority = priority; + userReportSteps[chatId] = 2; + await botClient.SendMessage(chatId, "Пожалуйста, укажите кабинет."); + } + } + } + + // Обработка текстовых сообщений + if (update.Type == UpdateType.Message && update.Message?.Text != null) + { + var message = update.Message; + Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}"); + + if (message.Text.StartsWith("/admin")) + { + string[] parts = message.Text.Split(' '); + if (parts.Length == 2 && parts[1] == adminPassword) + { + admins.Add(message.Chat.Id); + // Сохраняем администратора в базу данных + await SaveAdminToDatabase(message.Chat.Id); + + var authMessage = await botClient.SendMessage(message.Chat.Id, "✅ Вы авторизованы как администратор!"); + Log.Information($"Новый администратор: {message.Chat.Id}"); + await Task.Delay(2000); + await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId); + await SendMainMenu(botClient, message.Chat.Id); + } + else + { + var authMessage = await botClient.SendMessage(message.Chat.Id, "❌ Неверный пароль!"); + await Task.Delay(2000); + await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId); + await SendMainMenu(botClient, message.Chat.Id); + } + return; + } + + // В блоке для обработки текстовых сообщений + else if (message.Text == "/admins") + { + if (admins.Contains(message.Chat.Id)) + { + await ShowAdminsList(botClient, message.Chat.Id); + } + else + { + var authMessage = await botClient.SendMessage( + chatId: message.Chat.Id, + text: "⛔ У вас нет прав для просмотра списка администраторов!" + ); + await Task.Delay(2000); + await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId); + await SendMainMenu(botClient, message.Chat.Id); } } - // Обработка текстовых сообщений - if (update.Type == UpdateType.Message && update.Message?.Text != null) + if (message.Text == "/start") { - var message = update.Message; - Log.Information($"Получено сообщение от {message.Chat.Id}: {message.Text}"); - - if (message.Text.StartsWith("/admin")) + var keyboard = new InlineKeyboardMarkup(new[] { - string[] parts = message.Text.Split(' '); - if (parts.Length == 2 && parts[1] == adminPassword) - { - admins.Add(message.Chat.Id); - // Сохраняем администратора в базу данных - await SaveAdminToDatabase(message.Chat.Id); - - var authMessage = await botClient.SendMessage(message.Chat.Id, "✅ Вы авторизованы как администратор!"); - Log.Information($"Новый администратор: {message.Chat.Id}"); - await Task.Delay(2000); - await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId); - await SendMainMenu(botClient, message.Chat.Id); - } - else - { - var authMessage = await botClient.SendMessage(message.Chat.Id, "❌ Неверный пароль!"); - await Task.Delay(2000); - await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId); - await SendMainMenu(botClient, message.Chat.Id); - } - return; - } - - // В блоке для обработки текстовых сообщений - else if (message.Text == "/admins") - { - if (admins.Contains(message.Chat.Id)) - { - await ShowAdminsList(botClient, message.Chat.Id); - } - else - { - var authMessage = await botClient.SendMessage( - chatId: message.Chat.Id, - text: "⛔ У вас нет прав для просмотра списка администраторов!" - ); - await Task.Delay(2000); - await botClient.DeleteMessage(message.Chat.Id, authMessage.MessageId); - await SendMainMenu(botClient, message.Chat.Id); - } - } - - if (message.Text == "/start") - { - var keyboard = new InlineKeyboardMarkup(new[] - { new[] { InlineKeyboardButton.WithCallbackData("Подать заявку", "report"), @@ -405,56 +407,55 @@ class Program } }); - await botClient.SendMessage( - chatId: message.Chat.Id, - text: "Привет! Я бот для сбора заявок на ремонт оборудования.", - replyMarkup: keyboard - ); - Log.Information($"Ответ на команду /start с кнопками отправлен."); - } - else if (usersWaitingForReport.TryGetValue(message.Chat.Id, out bool isWaiting) && isWaiting) + await botClient.SendMessage( + chatId: message.Chat.Id, + text: "Привет! Я бот для сбора заявок на ремонт оборудования.", + replyMarkup: keyboard + ); + Log.Information($"Ответ на команду /start с кнопками отправлен."); + } + else if (usersWaitingForReport.TryGetValue(message.Chat.Id, out bool isWaiting) && isWaiting) + { + if (userReportSteps.TryGetValue(message.Chat.Id, out int step)) { - if (userReportSteps.TryGetValue(message.Chat.Id, out int step)) + switch (step) { - switch (step) - { - case 2: - userReports[message.Chat.Id].Room = message.Text; - userReportSteps[message.Chat.Id] = 3; - await botClient.SendMessage(message.Chat.Id, "Пожалуйста, опишите проблему."); - break; - case 3: - userReports[message.Chat.Id].Description = message.Text; - userReportSteps[message.Chat.Id] = 4; - await botClient.SendMessage(message.Chat.Id, "Пожалуйста, укажите ваше ФИО."); - break; - case 4: - userReports[message.Chat.Id].ReporterName = message.Text; - await SaveReportToDatabase(message.Chat.Id, userReports[message.Chat.Id]); - var mainMenuKeyboard = new InlineKeyboardMarkup(new[] - { + case 2: + userReports[message.Chat.Id].Room = message.Text; + userReportSteps[message.Chat.Id] = 3; + await botClient.SendMessage(message.Chat.Id, "Пожалуйста, опишите проблему."); + break; + case 3: + userReports[message.Chat.Id].Description = message.Text; + userReportSteps[message.Chat.Id] = 4; + await botClient.SendMessage(message.Chat.Id, "Пожалуйста, укажите ваше ФИО."); + break; + case 4: + userReports[message.Chat.Id].ReporterName = message.Text; + await SaveReportToDatabase(message.Chat.Id, userReports[message.Chat.Id]); + var mainMenuKeyboard = new InlineKeyboardMarkup(new[] + { new[] { InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu") } }); - await botClient.SendMessage( - message.Chat.Id, - "✅ Спасибо за заявку! Мы обработаем её в ближайшее время.", - replyMarkup: mainMenuKeyboard - ); - usersWaitingForReport[message.Chat.Id] = false; - userReportSteps.Remove(message.Chat.Id); - userReports.Remove(message.Chat.Id); - Log.Information($"Заявка пользователя {message.Chat.Id} сохранена в базе данных."); - break; - } + await botClient.SendMessage( + message.Chat.Id, + "✅ Спасибо за заявку! Мы обработаем её в ближайшее время.", + replyMarkup: mainMenuKeyboard + ); + usersWaitingForReport[message.Chat.Id] = false; + userReportSteps.Remove(message.Chat.Id); + userReports.Remove(message.Chat.Id); + Log.Information($"Заявка пользователя {message.Chat.Id} сохранена в базе данных."); + break; } } - else - { - await botClient.SendMessage(message.Chat.Id, "ℹ️ Используйте команду /start для начала работы с ботом."); - } + } + else + { + await botClient.SendMessage(message.Chat.Id, "ℹ️ Используйте команду /start для начала работы с ботом."); } } }