feat: complete publish test logic
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user