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);
await _questionService.UpdateQuestionAsync(question);
var updatedQuestion = await _questionService.GetQuestionByIdAsync(id);
return Ok(updatedQuestion);
var result = QuestionMapper.ModelToQuestionDto(updatedQuestion);
return Ok(result);
}
/// <summary>

View file

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

View file

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