- Понимание принципов ООП (ключевая оценка);
- Знание особенностей и практические навыки в работе с ORM Битрикс.
getUserById – по идентификатору пользователя, возвращает массив с данными пользователя и массив с данными его карт;
getUserByEmail – аналогично предыдущей, но по email пользователя;
getCardInfo – по номеру карты возвращает информацию по карте, по ее владельцу и транзакциям (пригодится для выполнения задачи #3).
- Проверяет наличие пользователя и генерирует исключение, если пользователя нет;
- Проверяет наличие карты, если номер указан и генерирует исключение, если указанной карты нет;
- Создает карту при необходимости (если она не указана). Для новой карты номер должен генерироваться автоматически со следующими требованиями: номер должен быть уникальным, состоять из 8 цифр, проходить валидацию (алгоритм которой описан в задаче #3);
- Добавляет баллы на карту;
- Записывает транзакцию в соответствующую таблицу.
Разработать другие функции внутри пространства для вывода сгруппированной информации:
Разработать внутри пространства функцию addPoint($user, $point, $card=false), которая:
Классы должны поддерживать следующие статические методы (штатные):
На основе имеющихся сущностей AUser, ACard, ACardTransact путём наследования разработать в директории /_testXX/orm-classes/ свои классы в своём пространстве имён.
- Все цифры номера карты разбиваются по порядковым номерам слева направо;
- Цифры с нечётным порядковым номером умножаются на 2;
- Если результат умножения больше 9, то из него вычитается 9;
- Цифры с чётным порядковым номером остаются как есть;
- После преобразования все цифры складываются
- Если результат сложения кратен 10 – проверка пройдена.
- Базовые навыки работы с js;
- Понимание принципов безопасности в клиент-серверных приложениях.
Для проверки корректности номера существует следующий алгоритм:
Разработать страницу по адресу /_testXX/get-js/ с полем для ввода номера карты. С помощью js организовать валидацию ввода, согласно описанному алгоритму. При успешной валидации с помощью ajax (jquery) должна подгружаться информация по введеной карте, ее владельце и транзакциям (либо информация об ошибке, если карты нет в системе).
Номера карт в сущности ACard помимо семи обязательных цифр имеют контрольное число в конце номера.
Требования к готовой странице:
- Фильтр выполнить в виде простой формы или (предпочтительней) с помощью компоненты;
- Табличную часть вывести в удобочитаемом формате или (предпочтительней) с помощью компоненты;
- Максимально оптимизировать выполнение скрипта в отношении взаимодействия с Базой данных.
- Качество (культура) кода;
- Понимание принципов работы с битрикс на уровне API и компонентов;
- Понимание принципов безопасности;
- Понимание принципов оптимизации в работе с БД.
AUser – со списком пользователей
ACard – со списком карт
ACardTransact – со списком транзакций по картам
У каждого пользователя может быть несколько карт, или не одной
К каждой карте может быть привязан только один владелец, либо не привязан вовсе
Разработать страницу по адресу /_testXX/d7-select/ с выводом полной информации по картам и их владельцам (все поля обеих сущностей) в виде одной таблицы с постраничной навигацией (по 50 записей на странице) и предварительной фильтрацией по полям:
На тестовой среде через модуль Highload добавлены сущности (таблицы):
Требования к готовой странице:
- Первая оценка – исключительно пользовательская. Посмотрим страницу на разных устройствах и разных браузерах, всё потыкаем, попробуем сломать :)
- Способность выполнять задачи “Под ключ” с учетом наличия явно не описанных деталей в задаче.
- Допустимо применение css / js фреймворков;
- Адаптивная верстка. Перестроение сетки при адаптации на свое усмотрение, с сохранением стилистики страницы;
- Наличие анимации. Обязательно: при наведении на активные элементы (обозначены в Figma). Желательно: на остальных интерактивных элементах;
- В верхней форме (форма 1) сымитировать неуспешную отправку при клике на кнопку отправить (заказать звонок) из-за ошибок ввода. Оформление в соответствии со стилистикой страницы;
- В нижней форме (форма 3) сымитировать успешную отправку при клике на кнопку отправить (стать клиентом) в виде попап-окна с информацией. Оформление в соответствии со стилистикой страницы.
Внутри тестовой среды по адресу /_testXX/premium/ сверстать страницу согласно макету:
Где testXX – персональная папка. Имя и ftp доступ к ней высланы отдельным письмом.
d2aeb8dfd23dd5cbf9a1b3ee26301db8
http://assignment.adv-online.ru/ testXX