Тестовое задание для Papa John's
Требуется реализовать возможность администрирования водителей автопарка через REST на Yii2 с БД MySQL. Обязательно использование миграций и phpDoc.
Объект «Водитель» содержит следующие данные, которые необходимо заполнить миграцией:
- ФИО
- Дата рождения
- Модели автобусов, которыми способен управлять водитель (relation model)
- Наименование (Марка - Модель - Год выпуска и тд)
- Средняя скорость движения
Список автобусов, моделей, годов выпуска. Достаточно отдельной таблицы со значениями “Наименования” и “Средней скорости движения”.
Должно присутствовать разбиение на страницы при получении списка всех водителей.
Водители должны быть отсортированы по ФИО.
У водителя должен отображаться его возраст (вычислять по дате рождения).
Необходим метод получения времени прохождения, для всех водителей и для конкретного в частности (передаётся id водителя), расстояния между двумя городами, которые передаются параметрами в запросе, например, Москва и Казань.
При получении времени для всех водителей - список должен быть отсортирован от меньшего времени прохождения к большему, и так же иметь разбиение на страницы.
В этом случае у водителя выводится минимальное время между этими городами (в днях), учитывая, что водитель за сутки может ехать не более 8 часов.
Формат объекта водитель при получении минимального времени прохождения:
{
"id": "...",
"name": "...",
"birth_date": "...",
"age": "...",
"travel_time": "..."
}
PHP 7.0.0+
Клонируем репозиторий себе
git clone [email protected]:sanmon1985/test-autopark.git
Устанавливаем все зависимости с помощью Composer
composer install
Создаем базу данных autopark
Правим файл конфигурации config/db.php под себя
Запускаем миграции
./yii migrate
Параметры:
- page (optional): Страница результатов
Пример ответа:
[
{
"id": 12,
"name": "Абрамов Фёдор Алексеевич",
"birth_date": "1996-10-03",
"age": 22
},
...
]
Параметры:
- distance: Искомое расстояние между городами
- page (optional): Страница результатов
Пример ответа:
[
{
"id": 1,
"name": "Фёдоров Тимур Владимирович",
"birth_date": "1997-08-01",
"age": 21,
"travel_time": 3
},
{
"id": 3,
"name": "Панфилов Виль Максимович",
"birth_date": "1978-08-29",
"age": 40,
"travel_time": 3
},
{
"id": 6,
"name": "Красильников Константин Сергеевич",
"birth_date": "1988-08-20",
"age": 30,
"travel_time": 3
},
...
]
Параметры:
- distance: Искомое расстояние между городами
Пример ответа:
[
{
"id": 1,
"name": "Фёдоров Тимур Владимирович",
"birth_date": "1997-08-01",
"age": 21,
"travel_time": 3
}
]