110 lines
3.2 KiB
C#
110 lines
3.2 KiB
C#
using Tiku.Domain.Learning;
|
|
|
|
namespace Tiku.Application.Learning;
|
|
|
|
public sealed record LearningBusinessContextItem(
|
|
Guid BusinessLineId,
|
|
string BusinessCode,
|
|
string BusinessName,
|
|
Guid TenantBusinessLicenseId,
|
|
DateTimeOffset? LicenseEndsAt,
|
|
Guid? PrimaryProfileVersionId,
|
|
IReadOnlyCollection<Guid> AlternateProfileVersionIds,
|
|
int MaxActiveTargets,
|
|
int MaxAlternateTargets,
|
|
int TargetChangeCooldownDays);
|
|
|
|
public sealed record LearningContextItem(IReadOnlyCollection<LearningBusinessContextItem> Businesses);
|
|
|
|
public sealed record LearningTargetItem(
|
|
Guid ExamTargetProfileVersionId,
|
|
string ProfileCode,
|
|
string DisplayName,
|
|
int? ExamYear,
|
|
bool IsBaseTarget,
|
|
bool MayBePrimary,
|
|
bool MayBeAlternate,
|
|
bool IsPrimary,
|
|
bool IsAlternate);
|
|
|
|
public sealed record LearningTargetSelectionItem(
|
|
Guid BusinessLineId,
|
|
Guid PrimaryProfileVersionId,
|
|
IReadOnlyCollection<Guid> AlternateProfileVersionIds,
|
|
DateTimeOffset ChangedAt,
|
|
DateTimeOffset? NextChangeAllowedAt);
|
|
|
|
public sealed record ChangeLearningTargetsCommand(
|
|
Guid PrimaryProfileVersionId,
|
|
IReadOnlyCollection<Guid> AlternateProfileVersionIds);
|
|
|
|
public interface IStudentLearningTargetService
|
|
{
|
|
Task<LearningContextItem> GetContextAsync(
|
|
LearningActor actor,
|
|
CancellationToken cancellationToken = default);
|
|
|
|
Task<IReadOnlyCollection<LearningTargetItem>> GetTargetsAsync(
|
|
LearningActor actor,
|
|
Guid businessLineId,
|
|
CancellationToken cancellationToken = default);
|
|
|
|
Task<LearningTargetSelectionItem> ChangeTargetsAsync(
|
|
LearningActor actor,
|
|
Guid businessLineId,
|
|
ChangeLearningTargetsCommand command,
|
|
CancellationToken cancellationToken = default);
|
|
|
|
Task<LearningTargetSelectionItem> OverrideTargetsAsync(
|
|
LearningActor student,
|
|
Guid businessLineId,
|
|
ChangeLearningTargetsCommand command,
|
|
Guid changedBy,
|
|
string reason,
|
|
CancellationToken cancellationToken = default);
|
|
}
|
|
|
|
public sealed record UpsertClassAssignmentGrantCommand(
|
|
Guid? Id,
|
|
Guid ClassId,
|
|
Guid ProductAccessManifestVersionId,
|
|
AccessResourceType ResourceType,
|
|
Guid ResourceId,
|
|
DateTimeOffset? StartsAt,
|
|
DateTimeOffset? EndsAt);
|
|
|
|
public sealed record ClassAssignmentGrantItem(
|
|
Guid Id,
|
|
Guid ClassId,
|
|
Guid ProductAccessManifestVersionId,
|
|
AccessResourceType ResourceType,
|
|
Guid ResourceId,
|
|
DateTimeOffset StartsAt,
|
|
DateTimeOffset? EndsAt,
|
|
ClassAssignmentGrantStatus Status,
|
|
Guid? CreatedBy,
|
|
Guid? RevokedBy,
|
|
string? RevokedReason);
|
|
|
|
public interface IV2LearningAccessAdministrationService
|
|
{
|
|
Task<IReadOnlyCollection<ClassAssignmentGrantItem>> GetClassGrantsAsync(
|
|
Guid tenantId,
|
|
Guid classId,
|
|
CancellationToken cancellationToken = default);
|
|
|
|
Task<ClassAssignmentGrantItem> UpsertClassGrantAsync(
|
|
Guid tenantId,
|
|
Guid actorUserId,
|
|
UpsertClassAssignmentGrantCommand command,
|
|
CancellationToken cancellationToken = default);
|
|
|
|
Task<ClassAssignmentGrantItem> RevokeClassGrantAsync(
|
|
Guid tenantId,
|
|
Guid actorUserId,
|
|
Guid classId,
|
|
Guid grantId,
|
|
string reason,
|
|
CancellationToken cancellationToken = default);
|
|
}
|