Добавлены функции подтверждения и отмены отчетов
В код были добавлены методы `ConfirmReport` и `CancelReport` для обработки команд "confirm_report" и "cancel_report". Эти методы сохраняют отчет в базе данных или отменяют его, соответственно. Также обновлена логика обработки шагов отчета и добавлены новые кнопки для подтверждения и отмены в интерфейсе.
This commit is contained in:
parent
b9f4205203
commit
85486c8315
76
Program.cs
76
Program.cs
@ -708,6 +708,14 @@ class Program
|
|||||||
userReportSteps[chatId] = 2;
|
userReportSteps[chatId] = 2;
|
||||||
await botClient.SendMessage(chatId, "Пожалуйста, укажите кабинет.");
|
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)
|
else if (usersWaitingForReport.TryGetValue(message.Chat.Id, out bool isWaiting) && isWaiting)
|
||||||
{
|
{
|
||||||
if (userReportSteps.TryGetValue(message.Chat.Id, out int step))
|
if (userReportSteps.TryGetValue(message.Chat.Id, out int step))
|
||||||
{
|
{
|
||||||
switch (step)
|
switch (step)
|
||||||
@ -825,23 +833,20 @@ class Program
|
|||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
userReports[message.Chat.Id].ReporterName = message.Text;
|
userReports[message.Chat.Id].ReporterName = message.Text;
|
||||||
await SaveReportToDatabase(message.Chat.Id, userReports[message.Chat.Id]);
|
userReportSteps[message.Chat.Id] = 5;
|
||||||
var mainMenuKeyboard = new InlineKeyboardMarkup(new[]
|
var confirmKeyboard = new InlineKeyboardMarkup(new[]
|
||||||
{
|
{
|
||||||
new[]
|
new[]
|
||||||
{
|
{
|
||||||
InlineKeyboardButton.WithCallbackData("Главное меню", "main_menu")
|
InlineKeyboardButton.WithCallbackData("✅ Подтвердить", "confirm_report"),
|
||||||
}
|
InlineKeyboardButton.WithCallbackData("❌ Отменить", "cancel_report")
|
||||||
});
|
}
|
||||||
|
});
|
||||||
await botClient.SendMessage(
|
await botClient.SendMessage(
|
||||||
message.Chat.Id,
|
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;
|
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)
|
private static async Task DeleteAllReports(ITelegramBotClient botClient, long chatId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
Loading…
x
Reference in New Issue
Block a user