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()) }, "multipleanswerquestion" => new OutputMultipleAnswerQuestionDto { Id = question.Id, Title = question.Title, SurveyId = question.SurveyId, QuestionType = question.Discriminator, AnswerVariants = GetAnswerVariants(question.AnswerVariants ?? Array.Empty()) }, _ => throw new Exception($"Unknown question type: {question.Discriminator}") }; } private static List GetAnswerVariants(IEnumerable answerVariants) { return answerVariants.Select(av => new OutputAnswerVariantDto { Id = av.Id, QuestionId = av.QuestionId, Text = av.Text, }).ToList(); } }