Упрощённый сервис технической поддержки: принимает обращения пользователей, отдаёт список тикетов для интерфейсов менеджеров/админки и позволяет закрывать запросы. Контроль доступа - из сессионных данных (NBSession).
CreateRequestAsync(request): SupportRequest - создать новый тикет с данными пользователя и сообщением. Возвращает созданную запись.CloseRequestAsync(requestId): void - закрыть тикет по идентификатору (устанавливает флаг закрытия и время закрытия).GetRequestsAsync(onlyActive = true, skip = 0, take = 10): SupportRequest[] - вернуть список запросов с пагинацией. По умолчанию - только активные (не закрытые).CreateRequestAsync → запись видна менеджерам.CloseRequestAsync(id) → тикет скрывается из «активных».GetRequestsAsync(onlyActive:true, skip, take) для инбокса, onlyActive:false - архив.Сущность тикета поддержки со встроенной очисткой и валидацией.
int Id – идентификатор запроса в поддержку
long FromUserId – идентификатор пользователя (если авторизован)
string Reason – общая причина обращения (например, «Покупка товара»)
string Message – текст сообщения пользователя
string UserName – имя пользователя
string UserEmail – email пользователя
string UserPhone – телефон пользователя
bool IsClosed – признак, что обращение закрыто
DateTimeOffset Created – дата и время создания обращения
DateTimeOffset Closed – дата и время закрытия обращения
Содержит таблицы и индексы
-- Migration 1
requests (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
FromUserId INTEGER NOT NULL,
Reason TEXT NOT NULL,
Message TEXT NOT NULL,
UserName TEXT NOT NULL,
UserEmail TEXT NOT NULL,
UserPhone TEXT NOT NULL,
IsClosed BOOLEAN NOT NULL DEFAULT FALSE,
Created NUMBER NOT NULL,
Closed NUMBER DEFAULT NULL
)