From 09023959486171ce7d09bc4e7049f75dc499513c Mon Sep 17 00:00:00 2001 From: Professional Date: Wed, 19 Mar 2025 16:51:33 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BE=D0=BA=20=D0=B8=20=D1=83?= =?UTF-8?q?=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20=D0=91=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлена обработка команды удаления заявки с помощью метода `DeleteReport`, который удаляет заявку из базы данных и отправляет уведомление пользователю. В интерфейсе добавлена кнопка "❌ Удалить заявку". Изменена команда вставки новой заявки для сохранения статуса как 'ожидает'. Также реализован метод `CreateDatabaseIfNotExists` для проверки и создания базы данных при необходимости. --- Program.cs | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/Program.cs b/Program.cs index 185e898..c3ac8a1 100644 --- a/Program.cs +++ b/Program.cs @@ -170,6 +170,11 @@ class Program 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); @@ -273,6 +278,29 @@ class Program } } + private static async Task DeleteReport(ITelegramBotClient botClient, long chatId, long reportId) + { + try + { + using (var connection = new SqliteConnection("Data Source=bot.db")) + { + await connection.OpenAsync(); + var command = connection.CreateCommand(); + command.CommandText = "DELETE FROM Reports WHERE Id = @id"; + command.Parameters.AddWithValue("@id", reportId); + await command.ExecuteNonQueryAsync(); + + await botClient.SendMessage(chatId, $"Заявка #{reportId} успешно удалена."); + Log.Information($"Заявка #{reportId} удалена пользователем {chatId}."); + } + } + catch (Exception ex) + { + Log.Error($"Ошибка при удалении заявки #{reportId}: {ex.Message}"); + await botClient.SendMessage(chatId, $"Ошибка при удалении заявки #{reportId}."); + } + } + @@ -375,6 +403,10 @@ class Program InlineKeyboardButton.WithCallbackData("🟢 Закрыта", $"status_{reportId}_закрыта") }, new[] + { + InlineKeyboardButton.WithCallbackData("❌ Удалить заявку", $"delete_{reportId}") + }, + new[] { InlineKeyboardButton.WithCallbackData("Назад", "back_to_list"), InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu") @@ -388,7 +420,6 @@ class Program text: newText, replyMarkup: statusButtons ); - } } } @@ -436,9 +467,9 @@ class Program var insertCommand = connection.CreateCommand(); insertCommand.CommandText = @" - INSERT INTO Reports (ChatId, Description) - VALUES (@ChatId, @Description); - "; + INSERT INTO Reports (ChatId, Description, Status) + VALUES (@ChatId, @Description, 'ожидает'); + "; insertCommand.Parameters.AddWithValue("@ChatId", chatId); insertCommand.Parameters.AddWithValue("@Description", description); @@ -452,6 +483,7 @@ class Program } } + private static async Task CreateDatabaseIfNotExists() { string connectionString = "Data Source=bot.db"; // Путь к вашей базе данных