Стратегии поведения страниц заявок
Каждая страница заявки в 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.
Пример на картинке ниже. Копирайт, и куда ведет кнопка, для каждого конкретного случая описаны в диаграммах каждой стратегии.
Перечень стратегий
- Regular - обычный сценарий
- EventInURL - ID мероприятия в ссылке
- EventPartInURL - ID части мероприятия в ссылке
- LimitEventPartInURL - ID части мероприятия в ссылке, лимит на количество заявок
- Ambassadors - стратегия Амбассадора и Медиаамбассадора