уведомление других админов о взятии заявки в работу
This commit is contained in:
parent
ae3674bf1b
commit
f0ad5fd74f
65
Program.cs
65
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} <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);
|
||||
|
||||
// Уведомляем администраторов, если заявка взята в работу
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user