Добавлены функции подтверждения и отмены отчетов

В код были добавлены методы `ConfirmReport` и `CancelReport` для обработки команд "confirm_report" и "cancel_report". Эти методы сохраняют отчет в базе данных или отменяют его, соответственно. Также обновлена логика обработки шагов отчета и добавлены новые кнопки для подтверждения и отмены в интерфейсе.
This commit is contained in:
107 2025-03-21 10:27:06 +07:00
parent b9f4205203
commit 85486c8315

View File

@ -708,6 +708,14 @@ class Program
userReportSteps[chatId] = 2;
await botClient.SendMessage(chatId, "Пожалуйста, укажите кабинет.");
}
else if (data == "confirm_report")
{
await ConfirmReport(botClient, chatId);
}
else if (data == "cancel_report")
{
await CancelReport(botClient, chatId);
}
}
}
@ -808,7 +816,7 @@ class Program
}
else if (usersWaitingForReport.TryGetValue(message.Chat.Id, out bool isWaiting) && isWaiting)
{
{
if (userReportSteps.TryGetValue(message.Chat.Id, out int step))
{
switch (step)
@ -825,25 +833,22 @@ class Program
break;
case 4:
userReports[message.Chat.Id].ReporterName = message.Text;
await SaveReportToDatabase(message.Chat.Id, userReports[message.Chat.Id]);
var mainMenuKeyboard = new InlineKeyboardMarkup(new[]
userReportSteps[message.Chat.Id] = 5;
var confirmKeyboard = new InlineKeyboardMarkup(new[]
{
new[]
{
InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu")
}
});
new[]
{
InlineKeyboardButton.WithCallbackData("✅ Подтвердить", "confirm_report"),
InlineKeyboardButton.WithCallbackData("❌ Отменить", "cancel_report")
}
});
await botClient.SendMessage(
message.Chat.Id,
"✅ Спасибо за заявку! Мы обработаем её в ближайшее время.",
replyMarkup: mainMenuKeyboard
"Пожалуйста, подтвердите отправку заявки:",
replyMarkup: confirmKeyboard
);
usersWaitingForReport[message.Chat.Id] = false;
userReportSteps.Remove(message.Chat.Id);
userReports.Remove(message.Chat.Id);
Log.Information($"Заявка пользователя {message.Chat.Id} сохранена в базе данных.");
break;
}
}
}
}
}
@ -860,6 +865,49 @@ class Program
}
}
private static async Task ConfirmReport(ITelegramBotClient botClient, long chatId)
{
if (userReports.TryGetValue(chatId, out var report))
{
await SaveReportToDatabase(chatId, report);
var mainMenuKeyboard = new InlineKeyboardMarkup(new[]
{
new[]
{
InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu")
}
});
await botClient.SendMessage(
chatId: chatId,
text: "✅ Спасибо за заявку! Мы обработаем её в ближайшее время.",
replyMarkup: mainMenuKeyboard
);
usersWaitingForReport[chatId] = false;
userReportSteps.Remove(chatId);
userReports.Remove(chatId);
Log.Information($"Заявка пользователя {chatId} сохранена в базе данных.");
}
}
private static async Task CancelReport(ITelegramBotClient botClient, long chatId)
{
usersWaitingForReport[chatId] = false;
userReportSteps.Remove(chatId);
userReports.Remove(chatId);
await botClient.SendMessage(
chatId: chatId,
text: "❌ Заявка отменена.",
replyMarkup: new InlineKeyboardMarkup(new[]
{
new[]
{
InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu")
}
})
);
Log.Information($"Заявка пользователя {chatId} отменена.");
}
private static async Task DeleteAllReports(ITelegramBotClient botClient, long chatId)
{
try