public static TestCreationViewModel TransformToTestCreationViewModel(Test test)
        {
            var viewModel = new TestCreationViewModel();

            viewModel.Id        = test.Id;
            viewModel.Topic     = test.Topic;
            viewModel.Questions = new List <QuestionCreationViewModel>();
            foreach (var question in test.Questions
                     .Where(x => x is MathQuestion)
                     .Select(x => x as MathQuestion)
                     .ToList())
            {
                viewModel.Questions.Add(new QuestionCreationViewModel
                {
                    Id            = question.Id,
                    Text          = question.Text,
                    TestId        = question.TestId,
                    Position      = question.Position,
                    Points        = question.Points,
                    CorrectAnswer = question.CorrectAnswer,
                    Type          = "MathQuestion"
                });
            }

            foreach (var question in test.Questions
                     .Where(x => x is MultipleChoiceQuestion)
                     .Select(x => x as MultipleChoiceQuestion)
                     .ToList())
            {
                viewModel.Questions.Add(new QuestionCreationViewModel
                {
                    Id       = question.Id,
                    Text     = question.Text,
                    TestId   = question.TestId,
                    Position = question.Position,
                    Points   = question.Points,
                    Choices  = question.Choices,
                    Type     = "MultipleChoiceQuestion"
                });
            }

            viewModel.Questions = viewModel.Questions.OrderBy(x => x.Position).ToList();

            foreach (var question in viewModel.Questions)
            {
                question.Test = test;
            }

            return(viewModel);
        }
        public static Test TransformToTest(TestCreationViewModel viewModel)
        {
            var test = new Test();

            test.Id        = viewModel.Id;
            test.Topic     = viewModel.Topic;
            test.Questions = new List <Question>();
            if (viewModel.Questions != null)
            {
                foreach (var question in viewModel.Questions
                         .Where(x => x.Type == "MathQuestion")
                         .ToList())
                {
                    test.Questions.Add(new MathQuestion
                    {
                        Id            = question.Id,
                        Text          = question.Text,
                        TestId        = question.TestId,
                        Position      = question.Position,
                        Points        = question.Points,
                        CorrectAnswer = question.CorrectAnswer
                    });
                }

                foreach (var question in viewModel.Questions
                         .Where(x => x.Type == "MultipleChoiceQuestion")
                         .ToList())
                {
                    test.Questions.Add(new MultipleChoiceQuestion
                    {
                        Id       = question.Id,
                        Text     = question.Text,
                        TestId   = question.TestId,
                        Position = question.Position,
                        Points   = question.Points,
                        Choices  = question.Choices
                    });
                }
            }

            return(test);
        }