From e1f75408031b8b2d3069675dbeeedf367cabcd47 Mon Sep 17 00:00:00 2001 From: shept Date: Tue, 10 Jun 2025 13:36:18 +0500 Subject: [PATCH] fix changing question type --- .../Controllers/QuestionController.cs | 3 ++- .../SurveyBackend.API/Mappers/QuestionMapper.cs | 6 ++++++ .../Services/QuestionService.cs | 15 ++++++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/SurveyBackend/SurveyBackend.API/Controllers/QuestionController.cs b/SurveyBackend/SurveyBackend.API/Controllers/QuestionController.cs index 670bb54..79e5e45 100644 --- a/SurveyBackend/SurveyBackend.API/Controllers/QuestionController.cs +++ b/SurveyBackend/SurveyBackend.API/Controllers/QuestionController.cs @@ -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); } /// diff --git a/SurveyBackend/SurveyBackend.API/Mappers/QuestionMapper.cs b/SurveyBackend/SurveyBackend.API/Mappers/QuestionMapper.cs index 6cc41dc..01588de 100644 --- a/SurveyBackend/SurveyBackend.API/Mappers/QuestionMapper.cs +++ b/SurveyBackend/SurveyBackend.API/Mappers/QuestionMapper.cs @@ -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") }; diff --git a/SurveyBackend/SurveyBackend.Services/Services/QuestionService.cs b/SurveyBackend/SurveyBackend.Services/Services/QuestionService.cs index 2dcf297..3647f0c 100644 --- a/SurveyBackend/SurveyBackend.Services/Services/QuestionService.cs +++ b/SurveyBackend/SurveyBackend.Services/Services/QuestionService.cs @@ -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)