Перейти к основному содержимому

Стратегии поведения страниц заявок

Каждая страница заявки в CMS имеет зашитую в себя стратегию инициализации.

Например, заявка на кастинги и Академию работают по разному сценарию.

подсказка

При создании новой заявки по запросу разработчик быстро подберет подходящий сценарий или напишет совершенно новую стратегию, которая никак не затронет остальные.

Инициализация

У любой стратегии есть общий начальный кусок инициализации.

1. Проверка на юзера

При успешном логине, автологине по завершению регистрации или автологине по завершению восстановления пароля - редиректит сюда же.

Это зависит от настройки в атрибутах.

Страница редактирования заявки, вкладка "Атрибуты"

предупреждение

Юзер нужен любой странице заявки на случай, если в ней будут блоки личного кабинета.


2. Получение ID мероприятия и формы

В разных стратегиях по-разному, например в Regular берется то, что задано в CMS, а в EventInURL - ивент из ссылки, а форма первая попавшаяся в ивенте.

3. Запрос ивента по указанному ID, поиск форм

4. Подтягивание частей мероприятий, если необходимо

Подтянутся они сразу или нет - зависит от каскадного поиска поля isNeedsEventParts по цепочке ApplicationManager -> BlockManager -> FieldManager

Технические детали

5. Первоначальная проверка - checkIsAllowedInitial()

к сведению

Реализация для каждой стратегии описана на странице соответствующей стратегии.

Проверка на активность мероприятия / части, попадаем ли в даты регистрации.

осторожно

Пока не финализировано.

Раньше валили страницу в 404, теперь есть возможность сделать объясняющие попапы. Вопрос в работе.

6. Получение всех заявок на указанное мероприятие

В превью моде - мок данные - пустой массив. В продакшене делается запрос, получаем все заявки.

Те, что со статусом

revoke
participation_rejected
rejected
registration_expired

отметаем

Так сформировался список всех "нормальных" заявок пользователя, исходя из которых можно дальше инициализировать заявку по разным стратегиям.

7. Получение или создание черновика - getCurrentApplicationOrCreateOne()

к сведению

Реализация для каждой стратегии описана на странице соответствующей стратегии.

Получить черновик, если нет - создать. Если нельзя - показать попап.

8. Подтягивание настроек заявки, коллекции блоков из CMS и их объединение

9. Проверка соответствия ключей CMS и АИС

В превью моде не производится.

В продакшен моде - в CMS должны быть ровно те же ключи, что и в АИС, иначе страница свалится в 404. В консоли будет подробно рассказано, каких именно ключей не хватает, или какие лишние.


к сведению

Далее для каждой конкретной стратегии ошибки иницализации будут отображаться в попапе, а не переводить страницу в 404.

Пример на картинке ниже. Копирайт, и куда ведет кнопка, для каждого конкретного случая описаны в диаграммах каждой стратегии.

Попап ошибки инициализации заявки


Перечень стратегий