В код добавлены новые методы для работы с настройками пользователя, включая создание таблицы `UserSettings`, отображение настроек и изменение состояния уведомлений.
Метод `CreateUserSettingsTableIfNotExists` создает таблицу, если она не существует, и обрабатывает возможные ошибки при создании. Метод `ShowUserSettings` загружает текущие настройки пользователя из базы данных и отправляет сообщение с возможностью изменения состояния уведомлений.
В обработке обновлений добавлена логика для обработки нажатий на кнопки, связанных с настройками пользователя и переключением уведомлений. Метод `NotifyUserAboutStatusChange` теперь проверяет, включены ли уведомления для пользователя, перед отправкой сообщения о смене статуса заявки.
Метод `ToggleNotifications` изменяет состояние уведомлений для пользователя и обновляет соответствующую запись в базе данных, а также отображает обновленные настройки. В меню добавлена кнопка для перехода к настройкам пользователя.
Внесены изменения в класс `Program` для улучшения управления администраторами:
- Добавлено поле `adminFullNames` для хранения полных имен администраторов.
- Изменена логика авторизации: теперь требуется указание полного имени.
- Обновлена база данных для хранения полных имен в таблице `Admins`.
- Изменены SQL-запросы для работы с новым полем `FullName`.
- Обновлены сообщения пользователям с информацией о полном имени администратора.
- Добавлен метод `SaveReportToDatabase` для сохранения отчетов.
- Обновлена логика изменения статуса отчетов с сохранением ID администратора.
В коде реализованы новые команды для администраторов, включая добавление администраторов, просмотр списка администраторов, доступ к админ-панели, а также управление отчетами (просмотр, изменение статуса и удаление). Добавлена обработка неверного пароля при авторизации. Удалена лишняя проверка на команду "/admins" для улучшения читаемости кода.
Удалены блоки кода, связанные с добавлением администратора, просмотром списка администраторов, доступом к админ-панели и обработкой отчетов. Изменен порядок проверки команды "/admins" для улучшения логики обработки текстовых сообщений.
В классе `Program` в файле `Program.cs` реализованы новые функции для управления администраторами, включая просмотр и удаление администраторов из базы данных. Улучшена обработка команд и сообщений для администраторов, добавлены сообщения об ошибках для пользователей без прав доступа. Обновлены визуальные элементы интерфейса для лучшего восприятия. Также добавлена обработка статуса при изменении данных в базе.
Внесены изменения в класс `Program`:
- Инициализация логгера с выводом в консоль и файл.
- Загрузка списка администраторов из базы данных при запуске бота.
- Метод для сохранения администратора в базе данных при авторизации.
- Обновлен метод `UpdateReportStatus` для уведомления администраторов об изменении статуса заявки.
- Добавлены методы для создания и загрузки таблицы администраторов.
- Изменено форматирование сообщений с использованием emoji для статусов и приоритетов.
- Обновлены SQL-запросы для работы с новыми полями и логикой в базе данных.
Удалены клавиатуры с кнопками для пользователей, не являющимися администраторами, при попытке доступа к админ-панели и отчетам. Вместо этого теперь отправляется сообщение об ошибке с задержкой в 2 секунды перед отправкой главного меню.
Изменен процесс авторизации: после успешной авторизации сообщение удаляется через 2 секунды, и пользователю отправляется главное меню. Аналогичные изменения применены для случая неверного пароля.
В класс Program добавлено условие для обработки данных "back_to_archived_list", которое вызывает метод ViewArchivedReports для отображения архивированных отчетов. Также добавлены кнопки "Назад" и "Главное меню" для улучшения навигации пользователя.
Изменён SQL-запрос в классе `Program` для извлечения дополнительных полей: `Priority`, `Room`, `ReporterName` и `DateCreated`. Обновлён код для обработки новых данных и форматирования сообщения. Добавлен новый метод `UpdateReportStatus` для обновления статуса отчета.
Внесены изменения в обработку отчетов в классе Program.
Добавлена клавиатура для выбора приоритета отчета (низкий, средний, высокий) и логика для обработки выбора.
Удален старый код, устанавливающий приоритет на основе текстовых сообщений.
Добавлен новый метод `DeleteReport` для удаления отчетов из базы данных.
Обновлен SQL-запрос для создания таблицы `Reports`:
значение по умолчанию для поля `Status` изменено с 'В процессе' на 'ожидает'.
Добавлены статические переменные `userReportSteps` и `userReports` для хранения шагов отчетов пользователей и самих отчетов.
Внесены изменения в класс `Program` для улучшения обработки отчетов.
Добавлен класс `Report` с необходимыми свойствами.
Метод `SaveReportToDatabase` теперь принимает объект `Report` и обновлен SQL-запрос.
Добавлена логика для пошагового ввода данных отчета от пользователя.
Упрощен код ожидания отчета и удалены ненужные строки.
Добавлен метод `CreateDatabaseIfNotExists` для создания таблицы `Reports` с новыми полями.
Введены словари `userReportSteps` и `userReports` для отслеживания состояния отчетов.