уведомление других админов о взятии заявки в работу

This commit is contained in:
Professional 2025-03-19 23:43:30 +07:00
parent ae3674bf1b
commit f0ad5fd74f

View File

@ -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} <b>Заявка #{reportId} взята в работу</b>\n\n" +
$"<b>Приоритет:</b> {priority}\n" +
$"<b>Кабинет:</b> {room}\n" +
$"<b>Фрагмент описания:</b> {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); await NotifyUserAboutStatusChange(userChatId, reportId, newStatus);
// Уведомляем администраторов, если заявка взята в работу
if (newStatus == "в работе")
{
await NotifyAdminsAboutWorkAssignment(reportId, changerId);
}
} }
} }
catch (Exception ex) catch (Exception ex)
@ -1118,6 +1182,7 @@ class Program
} }
private static async Task SaveReportToDatabase(long chatId, Report report) private static async Task SaveReportToDatabase(long chatId, Report report)
{ {
string connectionString = "Data Source=bot.db"; // Используем SQLite string connectionString = "Data Source=bot.db"; // Используем SQLite