survey-webapp/SurveyBackend/SurveyBackend.API/Mappers/QuestionDTOs/QuestionOutputMapper.cs

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();
}
}