fix changing question type

This commit is contained in:
Вячеслав 2025-06-10 13:36:18 +05:00
parent 837f90db52
commit e1f7540803
3 changed files with 22 additions and 2 deletions

View file

@ -71,7 +71,8 @@ public class QuestionController : ControllerBase
var question = QuestionMapper.QuestionUpdateToModel(dto, id); var question = QuestionMapper.QuestionUpdateToModel(dto, id);
await _questionService.UpdateQuestionAsync(question); await _questionService.UpdateQuestionAsync(question);
var updatedQuestion = await _questionService.GetQuestionByIdAsync(id); var updatedQuestion = await _questionService.GetQuestionByIdAsync(id);
return Ok(updatedQuestion); var result = QuestionMapper.ModelToQuestionDto(updatedQuestion);
return Ok(result);
} }
/// <summary> /// <summary>

View file

@ -69,16 +69,22 @@ public static class QuestionMapper
{ {
Id = questionId, Id = questionId,
Title = dto.Title, Title = dto.Title,
Discriminator = "TextQuestion",
AnswerVariants = []
}, },
"singleanswerquestion" => new SingleAnswerQuestion "singleanswerquestion" => new SingleAnswerQuestion
{ {
Id = questionId, Id = questionId,
Title = dto.Title, Title = dto.Title,
Discriminator = "SingleAnswerQuestion",
AnswerVariants = []
}, },
"multipleanswerquestion" => new MultipleAnswerQuestion "multipleanswerquestion" => new MultipleAnswerQuestion
{ {
Id = questionId, Id = questionId,
Title = dto.Title, Title = dto.Title,
Discriminator = "MultipleAnswerQuestion",
AnswerVariants = []
}, },
_ => throw new BadRequestException("Unknown question type") _ => throw new BadRequestException("Unknown question type")
}; };

View file

@ -41,8 +41,21 @@ public class QuestionService : IQuestionService
question.SurveyId = questionBase.SurveyId; question.SurveyId = questionBase.SurveyId;
// Если изменился тип вопроса (Discriminator), используем новый тип
if (questionBase.Discriminator != question.Discriminator)
{
// Удаляем старый вопрос
await _questionRepository.DeleteAsync(questionBase.Id);
// Добавляем новый с тем же ID
await _questionRepository.AddAsync(question);
}
else
{
// Если тип не меняется, просто обновляем
await _questionRepository.UpdateAsync(question); await _questionRepository.UpdateAsync(question);
} }
}
public async Task DeleteQuestionAsync(int id) public async Task DeleteQuestionAsync(int id)
{ {