diff --git a/Program.cs b/Program.cs index 0dc5226..b3d27e8 100644 --- a/Program.cs +++ b/Program.cs @@ -1064,6 +1064,64 @@ class Program + private static async Task NotifyAdminsAboutWorkAssignment(long reportId, long changerId) + { + try + { + // Получаем данные о заявке + string description = ""; + string priority = ""; + string room = ""; + + using (var connection = new SqliteConnection("Data Source=bot.db")) + { + await connection.OpenAsync(); + var command = connection.CreateCommand(); + command.CommandText = "SELECT Description, Priority, Room FROM Reports WHERE Id = @id"; + command.Parameters.AddWithValue("@id", reportId); + + using (var reader = await command.ExecuteReaderAsync()) + { + if (await reader.ReadAsync()) + { + description = reader.GetString(0); + priority = reader.GetString(1); + room = reader.GetString(2); + } + } + } + + foreach (var adminId in admins) + { + // Не уведомляем админа, который сам взял заявку в работу + if (adminId == changerId) continue; + + string priorityEmoji = GetPriorityEmoji(priority); + var keyboard = new InlineKeyboardMarkup(new[] + { + new[] + { + InlineKeyboardButton.WithCallbackData("📝 Посмотреть детали", $"report_{reportId}") + } + }); + + await _botClient.SendMessage( + chatId: adminId, + text: $"{priorityEmoji} Заявка #{reportId} взята в работу\n\n" + + $"Приоритет: {priority}\n" + + $"Кабинет: {room}\n" + + $"Фрагмент описания: {description.Substring(0, Math.Min(50, description.Length))}...", + parseMode: ParseMode.Html, + replyMarkup: keyboard + ); + Log.Information($"Уведомление о взятии в работу заявки #{reportId} отправлено администратору {adminId}"); + } + } + catch (Exception ex) + { + Log.Error($"Ошибка при отправке уведомлений о взятии в работу: {ex.Message}"); + } + } @@ -1109,6 +1167,12 @@ class Program // Уведомляем пользователя об изменении статуса await NotifyUserAboutStatusChange(userChatId, reportId, newStatus); + + // Уведомляем администраторов, если заявка взята в работу + if (newStatus == "в работе") + { + await NotifyAdminsAboutWorkAssignment(reportId, changerId); + } } } catch (Exception ex) @@ -1118,6 +1182,7 @@ class Program } + private static async Task SaveReportToDatabase(long chatId, Report report) { string connectionString = "Data Source=bot.db"; // Используем SQLite