feat: complete publish test logic

This commit is contained in:
2026-08-08 16:59:19 +03:30
parent 9742616f28
commit b4343bdb53
7 changed files with 170 additions and 65 deletions
@@ -16,6 +16,8 @@ import { Test } from '@/modules/tests/entities/test.entity';
import { randomUUID } from 'crypto';
import { RedisService } from '@/common/modules/redis/providers/redis.service';
import { GuestSubmissionSession } from '../interfaces/guest-submission-session.interfaces';
import { TestStatus } from '@/modules/tests/enums/test-status.enum';
import { QuestionTransitionService } from '@/modules/questions/providers/transition/question-transition.service';
@Injectable()
export class StartSubmissionProvider {
@@ -35,6 +37,11 @@ export class StartSubmissionProvider {
* Inject Redis Service
*/
private readonly redisService: RedisService,
/**
* Inject Transitions Service
*/
private readonly transitionsService: QuestionTransitionService,
) {}
public async start(testId: number, user?: User) {
@@ -69,6 +76,10 @@ export class StartSubmissionProvider {
},
});
if (!test.isActive || test.status !== TestStatus.PUBLISHED) {
throw new ForbiddenException('tests.errors.notActiveTest');
}
if (test.accessType !== AccessType.FREE && !user) {
throw new ForbiddenException('auth.errors.accessDenied');
}
@@ -115,6 +126,8 @@ export class StartSubmissionProvider {
}
}
// const startTransition = await this.transitionsService.
return new AppResponse({
submissionId: submission.id,
question: test.questions.length > 0 ? test.questions[0] : null,