diff --git a/Program.cs b/Program.cs index 26623aa..0dc5226 100644 --- a/Program.cs +++ b/Program.cs @@ -574,6 +574,23 @@ class Program } + private static async Task NotifyUserAboutStatusChange(long chatId, long reportId, string newStatus) + { + try + { + string statusEmoji = GetStatusEmoji(newStatus); + await _botClient.SendMessage( + chatId: chatId, + text: $"{statusEmoji} Статус вашей заявки #{reportId} был изменен на: {newStatus}", + parseMode: ParseMode.Html + ); + Log.Information($"Уведомление о смене статуса заявки #{reportId} отправлено пользователю {chatId}"); + } + catch (Exception ex) + { + Log.Error($"Ошибка при отправке уведомления пользователю о смене статуса: {ex.Message}"); + } + } @@ -1055,15 +1072,23 @@ class Program try { string oldStatus = ""; + long userChatId = 0; - // Сначала получаем текущий статус + // Сначала получаем текущий статус и chatId пользователя using (var connection = new SqliteConnection("Data Source=bot.db")) { await connection.OpenAsync(); var getStatusCommand = connection.CreateCommand(); - getStatusCommand.CommandText = "SELECT Status FROM Reports WHERE Id = @id"; + getStatusCommand.CommandText = "SELECT Status, ChatId FROM Reports WHERE Id = @id"; getStatusCommand.Parameters.AddWithValue("@id", reportId); - oldStatus = (await getStatusCommand.ExecuteScalarAsync())?.ToString() ?? string.Empty; + using (var reader = await getStatusCommand.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + oldStatus = reader.GetString(0); + userChatId = reader.GetInt64(1); + } + } } // Если статус не изменился, прерываем выполнение @@ -1081,6 +1106,9 @@ class Program // Уведомляем администраторов об изменении статуса await NotifyAdminsAboutStatusChange(reportId, newStatus, oldStatus, changerId); + + // Уведомляем пользователя об изменении статуса + await NotifyUserAboutStatusChange(userChatId, reportId, newStatus); } } catch (Exception ex) @@ -1089,6 +1117,7 @@ class Program } } + private static async Task SaveReportToDatabase(long chatId, Report report) { string connectionString = "Data Source=bot.db"; // Используем SQLite