Files
tiku-backend.net/Tiku.Infrastructure/Content/DirectContentService.cs

51 lines
1.6 KiB
C#

using System.Text.Json;
using System.Text.RegularExpressions;
using Microsoft.EntityFrameworkCore;
using Tiku.Application.Assets;
using Tiku.Application.Catalog;
using Tiku.Application.Content;
using Tiku.Application.Learning;
using Tiku.Application.QuestionBanks;
using Tiku.Application.Security;
using Tiku.Domain.Catalog;
using Tiku.Domain.Common;
using Tiku.Domain.Content;
using Tiku.Domain.Learning;
using Tiku.Domain.Operations;
using Tiku.Domain.QuestionBanks;
using Tiku.Infrastructure.Persistence;
using Tiku.Infrastructure.Security;
namespace Tiku.Infrastructure.Content;
public sealed partial class DirectContentService(
TikuDbContext dbContext,
IQuestionReferenceService questionReferenceService,
ICurrentAccessContext currentAccessContext,
IFeatureAccessService featureAccessService) : IDirectContentService
{
private static readonly string[] ContentPermissions =
[
BackendPermissions.TenantContentManage,
BackendPermissions.TenantVocabularyManage,
BackendPermissions.TenantHandbookManage,
BackendPermissions.TenantVideoManage,
BackendPermissions.TenantScorelineManage,
BackendPermissions.TenantSiteContentManage,
BackendPermissions.TenantJobManage
];
private const int DefaultLimit = 100;
private const int MaxLimit = 1000;
private static readonly Regex ScorelineFieldKeyRegex = new("^[A-Za-z][A-Za-z0-9_]{0,63}$", RegexOptions.Compiled);
private static readonly HashSet<string> SupportedImportTypes = new(StringComparer.OrdinalIgnoreCase)
{
"questions",
"vocabulary",
"handbook",
"scoreline",
"videos"
};
}