Суть такова: есть сервис для опросов. Админ составляет опрос выбирая тип вопроса, варианты ответа и т.д. По этим вопросам генерируется форма, которую заполняет пользователь. Вопросы могут быть разных типов (обычные текстовые, с выбором чекбоксы/радиобатоны, файлы и т.д.
На стороне сайта все работает, но надо сделать api для этого сервиса. И вот тут проблема. Обычно я делают dto для таких целей, которую потом валидирую. Но в этом случае я не могу ее создать, т.к. не знаю заранее сколько вопросов будет и какого они будут типа. Нужно как-то динамически создать dto на основе имеющихся вопросов и затем провалидировать ответы пользователя. Или может есть какой другой способ по-проще?
Пример вопросов:
"questions": [
{
"id" : 1,
"title" : "question 1",
"constraints": {
"NotBlank": true
},
"type" : "TextType"
},
{
"id" : 2,
"title" : "question 2",
"constraints": {
"NotBlank": true
},
"type" : "TextAreaType"
},
{
"id" : 3,
"title" : "question 3 (select)",
"constraints": {
"NotBlank": true
},
"choices" : {
"new0": {
"value": "first option"
},
"new1": {
"value": "second option"
},
"new3": {
"value": "third option"
}
},
"type" : "ChoiceType"
},
{
"id" : 6,
"title" : "question 3 (checkboxes)",
"constraints": {
"NotBlank": true
},
"choices" : {
"new0": {
"value": "first option"
},
"new1": {
"value": "second option"
},
"new3": {
"value": "third option"
}
},
"type" : "CheckboxChoiceType"
},
{
"id" : 12,
"title" : "Image",
"constraints": {
"NotNull": true
},
"choices" : null,
"type" : "ImageType"
}
]
Пример ответов:
"answers" : {
"1": "text",
"2": "a lot of text",
"3": "first option",
"6" : [
{"0" : "first option"},
{"1" : "third option"}
],
"12": "data:@file/jpeg;base64,..."
}