## Анкеты ## Методы
Метод Описание
questionnaire/questionnaires-list Возвращает список анкет
questionnaire/questionnaire-completed Завершение прохождение анкеты, проверка ответов
questionnaire/get-points-number Число балов в анкете
questionnaire/get-question-number Число вопросов в анкете
question/get-questions Вопросы анкеты
answer/get-answers Список возможных ответов на вопрос
user-response/set-response Сохранить ответ пользователя
user-response/set-responses Сохранить массив ответов пользователя
get Возвращает менеджера
### Список анкет `https://guild.craft-group.xyz/api/user-questionnaire/questionnaires-list`

Для получения списка анкет необходимо отправить GET запрос на URL https://guild.craft-group.xyz/api/user-questionnaire/questionnaires-list

Требуемые параметры запроса:

Параметры Значение
user_id ID пользователя(int)

Пример запроса:

`https://guild.craft-group.xyz/api/user-questionnaire/questionnaires-list?user_id=1`

Возвращает массив объектов записи Назначенная анкета.
Каждый объектимеет такой вид:

```json5 { "user_id": 1, "uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5", "score": 11, "status": 2, "percent_correct_answers": 0.25, "testing_date": "2022-03-17 11:14:22", "questionnaire_title": "Кат1 Анкета 1 активна" } ```

Возвращаемые параметры объекта анкета:

Параметры Значение
user_id ID пользователя(int)
uuid uuid анкеты пользователя
score Полученные балы(int)
status Статус: 0 - не активен; 1 - активен; 2 - завершён; 3 - на проверке;
percent_correct_answers Процент правильных ответов(float)
testing_date Дата тестирования
questionnaire_title Название анкеты

Передаваемые параметры объекта вопроса:

Параметры Значение
user_id ID пользователя(int)
score Полученные балы(int)
percent_correct_answers Процент правильных ответов(float)

Если пользователь не найден или у пользователя нет активных анкет будет отправлено следующее сообщение:

```json5 { "name": "Not Found", "message": "Active questionnaire not found", "code": 0, "status": 404, "type": "yii\\web\\NotFoundHttpException" } ``` ### Проверить ответы в анкете `https://guild.craft-group.xyz/api/user-questionnaire/questionnaire-completed`

Для выполнения проверки анкеты необходимо отправить GET запрос на URL https://guild.craft-group.xyz/api/user-questionnaire/questionnaire-completed

Требуемые параметры запроса:

Параметры Значение
user_questionnaire_uuid UUID анкеты назначеной пользователю

Пример запроса:

`https://guild.craft-group.xyz/api/user-questionnaire/questionnaire-completed?user_questionnaire_uuid=d222f858-60fd-47fb-8731-dc9d5fc384c5`

Возвращает массив объектов Вопросов.
Каждый объект Вопрос имеет такой вид:

```json5 { "id": 1, "questionnaire_id": 1, "user_id": 1, "uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5", "created_at": "2021-10-20 13:06:12", "updated_at": { "expression": "NOW()", "params": [] }, "score": 4, "status": 1, "percent_correct_answers": 0.5, "testing_date": null } ``` ### Число балов в анкете `https://guild.craft-group.xyz/api/user-questionnaire/get-points-number?user_questionnaire_uuid=d222f858-60fd-47fb-8731-dc9d5fc384c5`

Для максимального числа балов в анкеты необходимо отправить GET запрос на URL https://guild.craft-group.xyz/api/user-questionnaire/get-points-number

Требуемые параметры запроса:

Параметры Значение
user_questionnaire_uuid UUID анкеты назначеной пользователю

Пример запроса:

`https://guild.craft-group.xyz/api/user-questionnaire/get-points-number?user_questionnaire_uuid=d222f858-60fd-47fb-8731-dc9d5fc384c5`

Возвращает максимально возможное число балов за анкету b>.
Объект Ответа имеет такой вид:

```json5 { "sum_point": "61" } ``` ### Число вопросов в анкете `https://guild.craft-group.xyz/api/user-questionnaire/get-question-number?user_questionnaire_uuid=d222f858-60fd-47fb-8731-dc9d5fc384c5`

Для числа вопросов в анкете необходимо отправить GET запрос на URL https://guild.craft-group.xyz/api/user-questionnaire/get-question-number

Требуемые параметры запроса:

Параметры Значение
user_questionnaire_uuid UUID анкеты назначеной пользователю

Пример запроса:

`https://guild.craft-group.xyz/api/user-questionnaire/get-question-number?user_questionnaire_uuid=d222f858-60fd-47fb-8731-dc9d5fc384c5`

Возвращает число вопросов в анкете b>.
Объект Ответа имеет такой вид:

```json5 { "question_number": "7" } ``` ### Вопросы анкеты `https://guild.craft-group.xyz/api/question/get-questions`

Для получения вопросов анкеты необходимо отправить GET запрос на URL https://guild.craft-group.xyz/api/question/get-questions

Требуемые параметры запроса:

Параметры Значение
uuid UUID анкеты назначеной пользователю

Пример запроса:

`https://guild.craft-group.xyz/api/question/get-questions?uuid=d222f858-60fd-47fb-8731-dc9d5fc384c5`

Возвращает массив объектов Вопросов.
Каждый объект Вопрос имеет такой вид:

```json5 { "id": "4", "question_type_id": "2", "question_body": "Один ответ1", "question_priority": null, "next_question": null, "time_limit": "00:22:00" } ```

Передаваемые параметры объекта вопроса:

Параметры Значение
id ID вопроса(int)
question_type_id ID типа вопроса(int)
question_body Вопрос(string)
question_priority Приоритет вопроса(int)(не используется)
next_question Следующий вопрос(int)(не используется)
time_limit Ограничение времени на ответ(time)

Если вопрос не найден или не предпологает передачу ответов будет отправлено следующее сообщение:

```json5 { "name": "Not Found", "message": "Questions not found", "code": 0, "status": 404, "type": "yii\\web\\NotFoundHttpException" } ``` ### Ответы на вопрос `https://guild.craft-group.xyz/api/answer/get-answers`

Для получения вариантов ответов на вопрос анкеты нужно сделать GET запрос на URL https://guild.craft-group.xyz/api/answer/get-answers

Требуемые параметры:

Параметры Значение
question_id ID вопроса

Пример запроса:

`https://guild.craft-group.xyz/api/answer/get-answers?question_id=7`

Возвращает массив объектов Ответов.
Каждый объект Ответа имеет такой вид:

```json5 [ { "id": "12", "question_id": "7", "answer_body": "Неск вар1 отв1 истина" }, ] ```

Передаваемые параметры объекта вопроса:

Параметры Значение
id ID вопроса(int)
question_id ID вопроса(int)
answer_body Ответ(string)

Если ответы не найдены или вопрос не предпологает их наличие(открытый вопрос) будет отправлено следующее сообщение:

```json5 { "name": "Not Found", "message": "Answer not found or question inactive", "code": 0, "status": 404, "type": "yii\\web\\NotFoundHttpException" } ``` ### Один ответ пользователя `https://guild.craft-group.xyz/api/user-response/set-response`

Для добавления ответа на вопрос от пользователя необходимо сделать POST запрос на URL https://guild.craft-group.xyz/api/user-response/set-response

Тело запроса содержит:

Параметры Значение
user_id ID пользователя
question_id ID вопроса(int)
response_body Ответ пользователя(string 255)
user_questionnaire_uuid UUID анкеты назначенной пользователю(string 36)

Пример тела запроса:

```json5 { "user_id": "1", "question_id": "7", "response_body": "oooooooooooo111111111", "user_questionnaire_uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5" } ``` `https://guild.craft-group.xyz/api/user-response/set-response`

Возвращает объект Ответа.
Объект Ответа имеет такой вид:

```json5 { "user_id": "1", "question_id": "7", "response_body": "oooooooooooo111111111", "user_questionnaire_uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5", "created_at": { "expression": "NOW()", "params": [] }, "updated_at": { "expression": "NOW()", "params": [] }, "id": 191, "answer_flag": 0 } ```

Ответ содержит:

Параметры Значение
user_id ID пользователя
question_id ID вопроса(int)
response_body Ответ пользователя(string 255)
user_questionnaire_uuid UUID анкеты назначенной пользователю(string 36)
answer_flag Флаг ответа(1 - верно, 0 - ложно). Если отправлен ответ на открытый вопрос, флаг ответа не будет возвращаться до момента проверки в админ панели.

В случаии ошибки в запросе будет отправлено сообщение следующего вида:

```json5 { "name": "Bad Request", "message": "{\"question_id\":[\"\В\о\п\р\о\с is invalid.\"]}", "code": 0, "status": 400, "type": "yii\\web\\BadRequestHttpException" } ``` ### Массив ответов пользователя `https://guild.craft-group.xyz/api/user-response/set-responses`

Для добавления массива ответов на вопросы от пользователя необходимо сделать POST запрос на URL https://guild.craft-group.xyz/api/user-response/set-responses

Тело запроса содержит JSON c массивом ответов со следующими параметрами:

Параметры Значение
user_id ID пользователя
question_id ID вопроса(int)
response_body Ответ пользователя(string 255)
user_questionnaire_uuid UUID анкеты назначенной пользователю(string 36)

Пример тела запроса:

```json5 { "userResponses": [ { "user_id": "1", "question_id": "7", "response_body": "oooooooooooo111111111", "user_questionnaire_uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5" }, { "user_id": "1", "question_id": "4", "response_body": "oooooooooooo2222222", "user_questionnaire_uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5" } ] } ```

Возвращает массив объектов ОтветПользователя.
Пример:

```json5 [ { "user_id": "1", "question_id": "7", "response_body": "oooooooooooo111111111", "user_questionnaire_uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5", "created_at": { "expression": "NOW()", "params": [] }, "updated_at": { "expression": "NOW()", "params": [] }, "id": 192, "answer_flag": 0 }, { "user_id": "1", "question_id": "7", "response_body": "oooooooooooo111111111", "user_questionnaire_uuid": "d222f858-60fd-47fb-8731-dc9d5fc384c5", "created_at": { "expression": "NOW()", "params": [] }, "updated_at": { "expression": "NOW()", "params": [] }, "id": 193, "answer_flag": 0 } ] ```

Ответ содержит:

Параметры Значение
user_id ID пользователя
question_id ID вопроса(int)
response_body Ответ пользователя(string 255)
user_questionnaire_uuid UUID анкеты назначенной пользователю(string 36)
answer_flag Флаг ответа(1 - верно, 0 - ложно)

В случаии ошибки в запросе будет отправлено сообщение следующего вида:

```json5 { "name": "Bad Request", "message": "{\"question_id\":[\"\В\о\п\р\о\с is invalid.\"]}", "code": 0, "status": 400, "type": "yii\\web\\BadRequestHttpException" } ```