48 lines
No EOL
1.7 KiB
C#
48 lines
No EOL
1.7 KiB
C#
using SurveyBackend.DTOs.Question;
|
|
using SurveyLib.Core.Models;
|
|
|
|
namespace SurveyBackend.Mappers.QuestionDTOs;
|
|
|
|
public static class QuestionOutputMapper
|
|
{
|
|
public static object ModelToQuestionDTO(QuestionBase question)
|
|
{
|
|
return question.Discriminator.ToLower() switch
|
|
{
|
|
"textquestion" => new OutputTextQuestionDto
|
|
{
|
|
Id = question.Id,
|
|
Title = question.Title,
|
|
SurveyId = question.SurveyId,
|
|
QuestionType = question.Discriminator
|
|
},
|
|
"singleanswerquestion" => new OutputSingleAnswerQuestionDto
|
|
{
|
|
Id = question.Id,
|
|
Title = question.Title,
|
|
SurveyId = question.SurveyId,
|
|
QuestionType = question.Discriminator,
|
|
AnswerVariants = GetAnswerVariants(question.AnswerVariants ?? Array.Empty<AnswerVariant>())
|
|
},
|
|
"multipleanswerquestion" => new OutputMultipleAnswerQuestionDto
|
|
{
|
|
Id = question.Id,
|
|
Title = question.Title,
|
|
SurveyId = question.SurveyId,
|
|
QuestionType = question.Discriminator,
|
|
AnswerVariants = GetAnswerVariants(question.AnswerVariants ?? Array.Empty<AnswerVariant>())
|
|
},
|
|
_ => throw new Exception($"Unknown question type: {question.Discriminator}")
|
|
};
|
|
}
|
|
|
|
private static List<OutputAnswerVariantDto> GetAnswerVariants(IEnumerable<AnswerVariant> answerVariants)
|
|
{
|
|
return answerVariants.Select(av => new OutputAnswerVariantDto
|
|
{
|
|
Id = av.Id,
|
|
QuestionId = av.QuestionId,
|
|
Text = av.Text,
|
|
}).ToList();
|
|
}
|
|
} |