feat: add user submission functionality

This commit is contained in:
2026-07-05 21:45:45 +03:30
parent afb5045cf0
commit 7b44542ce7
48 changed files with 1459 additions and 55 deletions
@@ -1,4 +1,4 @@
import { Injectable } from '@nestjs/common';
import { HttpStatus, Injectable } from '@nestjs/common';
import { filterQuestions } from '../helpers/filter-questions.helper';
import Utils from '@/common/utils';
import { FindQuestionsDTO } from '../dtos/find-questions.dto';
@@ -9,6 +9,7 @@ import { InjectRepository } from '@nestjs/typeorm';
import { Question } from '../entities/question.entity';
import { Repository } from 'typeorm';
import { TestsService } from '@/modules/tests/providers/tests.service';
import { AppException } from '@/common/exceptions/app.exception';
@Injectable()
export class QuestionsQueryProvider {
@@ -33,13 +34,13 @@ export class QuestionsQueryProvider {
let selectedTest: Test | null = null;
if (query.test) {
try {
selectedTest = await this.testsService.adminGetOne(query.test);
} catch (err) {
throw new AppTimeoutException(err);
}
selectedTest = await this.testsService.adminGetOne(query.test, {
relations: { questions: true },
});
}
console.log(selectedTest);
try {
const [questions, total] = await this.questionsRepository.findAndCount({
where: {
@@ -69,13 +70,25 @@ export class QuestionsQueryProvider {
}
public async findOneForAdmin(id: number) {
let question: Question | null = null;
try {
return await this.questionsRepository.findOne({
question = await this.questionsRepository.findOne({
where: { id },
relations: { test: true },
relations: { test: true, rangeRules: true, choices: true },
});
} catch (err) {
throw new AppTimeoutException(err);
}
if (!question) {
throw new AppException(
'common.errors.entityNotFound',
HttpStatus.NOT_FOUND,
{ entity: '$t(questions.fields.question)' },
);
}
return question;
}
}