См. схему базы данных 1.3.0_new
1.3.0 – Есть пользователь.
Он может привязывать себя к различным олимпиадам (создается запись user_team), подставляя себе определенные данные(ФИО, город)
В олимпиадах возможно создавать команды.
Users -> User + User_olympiad
Forms -> Attribute + Olympiad_attribute
Olympiad поле teams_alllowed Командная / Личная
объект | что удалить |
олимпиада | инф о туре + туры + команды-участники |
условие | инф об условии + файл |
задача | инф о задаче + сабмиты (исходный код) + тесты + условие |
команда | все ее сабмиты, неоткрытые вопросы |
Создаем особый фильтр «Город», при выборе которого предлагается список городов, взятый из таблицы city
тип value varchar(255), поэтому храним id города в строковом виде.
Если города нет в таблице, то предварительно записываем набранный пользователем город в таблицу city, поле moderation = 0
0 – не обработан
1 – прошел модерацию
2 – игнорировать
Аналогично таблица university
2. Типы олимпиад
Типы олимпиад: командная, личная (поле teams_allowed: 0 – личная, 1 – командная)
3. Добавление команд
Команда заводится на олимпиаду.
Пользователь является незарегистрированным на олимпиаду, пока у него не определена команда.
При регистрации на командную олимпиаду предлагается список зарегистрировавшихся команд.
Предлагается присоединиться к ним, или создать свою.
пользователю высылается сообщение, что он был добавлен в такую-то олимпиаду в такую-то команду.
При первом открытии олимпиады, если есть незаполненные поля для участника, предлагаем заполнить их.
1) пользователя не существует
2) уже состоит в другой команде на эту олимпиаду
3) приглашение выслано