179 lines
5.9 KiB
C#
179 lines
5.9 KiB
C#
using Tiku.Domain.Common;
|
|
|
|
namespace Tiku.Domain.Learning;
|
|
|
|
public sealed class TenantBusinessLicense : AuditableTenantEntity
|
|
{
|
|
public Guid BusinessLineId { get; set; }
|
|
public LicenseLifecycleStatus Status { get; set; } = LicenseLifecycleStatus.Active;
|
|
public DateTimeOffset StartsAt { get; set; } = DateTimeOffset.UtcNow;
|
|
public DateTimeOffset? EndsAt { get; set; }
|
|
public long Version { get; set; } = 1;
|
|
}
|
|
|
|
public sealed class TenantLicensedTarget : Entity, ITenantOwned
|
|
{
|
|
public Guid TenantBusinessLicenseId { get; set; }
|
|
public Guid ExamTargetProfileVersionId { get; set; }
|
|
public bool IsBaseTarget { get; set; }
|
|
public DateTimeOffset StartsAt { get; set; } = DateTimeOffset.UtcNow;
|
|
public DateTimeOffset? EndsAt { get; set; }
|
|
public Guid TenantId { get; set; }
|
|
}
|
|
|
|
public sealed class ProductAccessManifest : AuditableTenantEntity
|
|
{
|
|
public Guid LearningProductId { get; set; }
|
|
public Guid? CurrentVersionId { get; set; }
|
|
public bool IsActive { get; set; } = true;
|
|
}
|
|
|
|
public sealed class ProductAccessManifestVersion : Entity, ITenantOwned
|
|
{
|
|
public Guid ProductAccessManifestId { get; set; }
|
|
public int VersionNo { get; set; } = 1;
|
|
public AccessManifestStatus Status { get; set; } = AccessManifestStatus.Draft;
|
|
public int MaxActiveTargets { get; set; } = 1;
|
|
public int MaxAlternateTargets { get; set; }
|
|
public int? DailyQuestionLimit { get; set; }
|
|
public int? TotalQuestionLimit { get; set; }
|
|
public DateTimeOffset? PublishedAt { get; set; }
|
|
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
|
|
public Guid TenantId { get; set; }
|
|
}
|
|
|
|
public sealed class ProductManifestRelease : Entity, ITenantOwned
|
|
{
|
|
public Guid ProductAccessManifestVersionId { get; set; }
|
|
public Guid ContentOwnerTenantId { get; set; }
|
|
public Guid ContentReleaseId { get; set; }
|
|
public Guid? PlatformContentPackageOwnerTenantId { get; set; }
|
|
public Guid? PlatformContentPackageVersionId { get; set; }
|
|
public Guid TenantId { get; set; }
|
|
}
|
|
|
|
public sealed class ProductManifestTarget : Entity, ITenantOwned
|
|
{
|
|
public Guid ProductAccessManifestVersionId { get; set; }
|
|
public Guid ExamTargetProfileVersionId { get; set; }
|
|
public bool MayBePrimary { get; set; } = true;
|
|
public bool MayBeAlternate { get; set; }
|
|
public Guid TenantId { get; set; }
|
|
}
|
|
|
|
public sealed class ProductManifestResource : Entity, ITenantOwned
|
|
{
|
|
public Guid ProductAccessManifestVersionId { get; set; }
|
|
public AccessResourceType ResourceType { get; set; }
|
|
public Guid ResourceId { get; set; }
|
|
public string DisplayName { get; set; } = string.Empty;
|
|
public int SortOrder { get; set; }
|
|
public Guid TenantId { get; set; }
|
|
}
|
|
|
|
public sealed class StudentEntitlement : AuditableTenantEntity
|
|
{
|
|
public Guid UserId { get; set; }
|
|
public Guid LearningProductId { get; set; }
|
|
public Guid ProductAccessManifestVersionId { get; set; }
|
|
public StudentEntitlementStatus Status { get; set; } = StudentEntitlementStatus.Active;
|
|
public DateTimeOffset StartsAt { get; set; } = DateTimeOffset.UtcNow;
|
|
public DateTimeOffset? EndsAt { get; set; }
|
|
public string SourceType { get; set; } = string.Empty;
|
|
public Guid? SourceId { get; set; }
|
|
public int UsedQuestionCount { get; set; }
|
|
public DateTimeOffset? RevokedAt { get; set; }
|
|
public Guid? RevokedBy { get; set; }
|
|
public string? RevokedReason { get; set; }
|
|
}
|
|
|
|
public sealed class StudentTargetSelectionHistory : AuditableTenantEntity
|
|
{
|
|
public Guid UserId { get; set; }
|
|
public Guid BusinessLineId { get; set; }
|
|
public Guid ExamTargetProfileVersionId { get; set; }
|
|
public TargetSelectionRole Role { get; set; } = TargetSelectionRole.Primary;
|
|
public Guid? EntitlementId { get; set; }
|
|
public string SourceType { get; set; } = string.Empty;
|
|
public Guid SourceId { get; set; }
|
|
public DateTimeOffset EffectiveAt { get; set; } = DateTimeOffset.UtcNow;
|
|
public DateTimeOffset? EndedAt { get; set; }
|
|
public bool IsCurrent { get; set; } = true;
|
|
public Guid? ChangedBy { get; set; }
|
|
public string? Reason { get; set; }
|
|
}
|
|
|
|
public sealed class ClassAssignmentGrant : AuditableTenantEntity
|
|
{
|
|
public Guid ClassId { get; set; }
|
|
public Guid ProductAccessManifestVersionId { get; set; }
|
|
public AccessResourceType ResourceType { get; set; }
|
|
public Guid ResourceId { get; set; }
|
|
public DateTimeOffset StartsAt { get; set; } = DateTimeOffset.UtcNow;
|
|
public DateTimeOffset? EndsAt { get; set; }
|
|
public ClassAssignmentGrantStatus Status { get; set; } = ClassAssignmentGrantStatus.Active;
|
|
public Guid? CreatedBy { get; set; }
|
|
public Guid? RevokedBy { get; set; }
|
|
public string? RevokedReason { get; set; }
|
|
}
|
|
|
|
public sealed class EffectiveAccessProjection : TenantEntity
|
|
{
|
|
public Guid UserId { get; set; }
|
|
public Guid BusinessLineId { get; set; }
|
|
public Guid? PrimaryProfileVersionId { get; set; }
|
|
public Guid[] AlternateProfileVersionIds { get; set; } = [];
|
|
public Guid[] ContentReleaseIds { get; set; } = [];
|
|
public Guid[] AudienceSegmentIds { get; set; } = [];
|
|
public Guid[] ManifestVersionIds { get; set; } = [];
|
|
public long GrantVersion { get; set; } = 1;
|
|
public long ContentVersion { get; set; } = 1;
|
|
public long StrongRevocationVersion { get; set; } = 1;
|
|
public DateTimeOffset ValidUntil { get; set; }
|
|
public DateTimeOffset CompiledAt { get; set; } = DateTimeOffset.UtcNow;
|
|
}
|
|
|
|
public enum LicenseLifecycleStatus
|
|
{
|
|
Active,
|
|
Suspended,
|
|
Expired,
|
|
Cancelled
|
|
}
|
|
|
|
public enum AccessManifestStatus
|
|
{
|
|
Draft,
|
|
Published,
|
|
Retired
|
|
}
|
|
|
|
public enum AccessResourceType
|
|
{
|
|
ContentRelease,
|
|
CurriculumNode,
|
|
CollectionRelease,
|
|
BlueprintRelease
|
|
}
|
|
|
|
public enum TargetSelectionRole
|
|
{
|
|
Primary,
|
|
Alternate
|
|
}
|
|
|
|
public enum StudentEntitlementStatus
|
|
{
|
|
Active,
|
|
Expired,
|
|
Revoked,
|
|
Cancelled
|
|
}
|
|
|
|
public enum ClassAssignmentGrantStatus
|
|
{
|
|
Active,
|
|
Revoked,
|
|
Expired
|
|
}
|