В код были добавлены методы `ConfirmReport` и `CancelReport` для обработки команд "confirm_report" и "cancel_report". Эти методы сохраняют отчет в базе данных или отменяют его, соответственно. Также обновлена логика обработки шагов отчета и добавлены новые кнопки для подтверждения и отмены в интерфейсе.
В классе Program в файле Program.cs изменен метод отправки сообщения пользователю, добавлен текст о настройках бота и уведомлениях. Также добавлен новый метод `HandleUpdateAsync` для обработки обновлений от Telegram, включая нажатия на кнопки.
Изменено условие для удаления всех отчетов с проверки на `admins` на `superAdmins`.
Добавлены кнопки подтверждения удаления отчетов.
Обновлена структура клавиатуры в методе `SendAdminPanel`, добавлены кнопки для суперадминов и кнопка возврата в главное меню.
Введен новый метод `ViewReports` для отображения отчетов.
Добавлена проверка на суперпользователя при выходе из режима администратора. Текст сообщения теперь зависит от роли пользователя. Изменены кнопки для выхода, чтобы они корректно отображали информацию в зависимости от роли. Удалены устаревшие строки кода.
Внесены изменения в класс `Program` в файле `Program.cs`:
- Добавлено поле `ChatId` в SQL-запрос для извлечения идентификатора чата.
- Введена переменная `ownerChatId` для хранения значения `ChatId`.
- Обновлена логика формирования клавиатуры для администраторов и пользователей.
- Добавлена проверка прав администратора в методе `UpdateReportStatus`.
- Реализована логика возврата к списку в зависимости от роли пользователя, если заявка не найдена.
- Добавлен метод `RemoveAdminFromDatabase` для удаления администратора из базы данных.
Добавлен метод `ViewUserReports` для извлечения и отображения отчетов пользователя. Обновлена логика удаления отчетов с проверкой принадлежности. Изменено отображение списка заявок после удаления. Добавлен метод `NotifyUserAboutStatusChange` для уведомления пользователей об изменениях статуса. Обновлен интерфейс главного меню с новыми кнопками и добавлен метод `SendAdminPanel` для панели администратора.
В код добавлены новые методы для работы с настройками пользователя, включая создание таблицы `UserSettings`, отображение настроек и изменение состояния уведомлений.
Метод `CreateUserSettingsTableIfNotExists` создает таблицу, если она не существует, и обрабатывает возможные ошибки при создании. Метод `ShowUserSettings` загружает текущие настройки пользователя из базы данных и отправляет сообщение с возможностью изменения состояния уведомлений.
В обработке обновлений добавлена логика для обработки нажатий на кнопки, связанных с настройками пользователя и переключением уведомлений. Метод `NotifyUserAboutStatusChange` теперь проверяет, включены ли уведомления для пользователя, перед отправкой сообщения о смене статуса заявки.
Метод `ToggleNotifications` изменяет состояние уведомлений для пользователя и обновляет соответствующую запись в базе данных, а также отображает обновленные настройки. В меню добавлена кнопка для перехода к настройкам пользователя.
Внесены изменения в класс `Program` для улучшения управления администраторами:
- Добавлено поле `adminFullNames` для хранения полных имен администраторов.
- Изменена логика авторизации: теперь требуется указание полного имени.
- Обновлена база данных для хранения полных имен в таблице `Admins`.
- Изменены SQL-запросы для работы с новым полем `FullName`.
- Обновлены сообщения пользователям с информацией о полном имени администратора.
- Добавлен метод `SaveReportToDatabase` для сохранения отчетов.
- Обновлена логика изменения статуса отчетов с сохранением ID администратора.