Добавление логики по прохождению тестов.
Примерная схема взаимодействия: Зарегистрированный пользователь выбирает Stage, который ему доступен (у юзера хватает очков). Если Stage является тестом, то
- Клиент отправляет POST запрос на /api/v1/stages/test/{testStageId}/start, где testStageId - id текущей стадии с тестом.
- Сервер создает сущность сесии (UserTestProgress) и отправляет ее айдишник пользователю.
- Клиент отправляет GET запрос на api/v1/stages/test/{userTestProgressId}/next для получения следующего вопроса. Если такие еще остались, то сервер возвращает сущность с такими данными, иначе null.
- Клиент, выбрав вариант ответа отправляет айдишник этого варианта POST запросом на /api/v1/stages/test/{userTestProgressId}/answer. Сервер добавляет баллы в сесиию, если ответ верен и отправляет айдишник правильного ответа.
Все это выполняется до тех пор, пока вопросы в тесте не закончатся и сервер на запрос пункта 3. не отправит null. Если вопросы кончились, сервер добавляет все баллы сессии пользователю и ставит сесии статус FINISHED.