Skip to content

Latest commit

 

History

History
132 lines (107 loc) · 4.67 KB

README.md

File metadata and controls

132 lines (107 loc) · 4.67 KB

Автобусный парк

Тестовое задание для Papa John's

Условия задания

Требуется реализовать возможность администрирования водителей автопарка через REST на Yii2 с БД MySQL. Обязательно использование миграций и phpDoc.

Объект «Водитель» содержит следующие данные, которые необходимо заполнить миграцией:

  • ФИО
  • Дата рождения
  • Модели автобусов, которыми способен управлять водитель (relation model)
    • Наименование (Марка - Модель - Год выпуска и тд)
    • Средняя скорость движения

Список автобусов

Список автобусов, моделей, годов выпуска. Достаточно отдельной таблицы со значениями “Наименования” и “Средней скорости движения”.

Список водителей

Должно присутствовать разбиение на страницы при получении списка всех водителей.
Водители должны быть отсортированы по ФИО.
У водителя должен отображаться его возраст (вычислять по дате рождения).

Расчет времени прохождения

Необходим метод получения времени прохождения, для всех водителей и для конкретного в частности (передаётся id водителя), расстояния между двумя городами, которые передаются параметрами в запросе, например, Москва и Казань.
При получении времени для всех водителей - список должен быть отсортирован от меньшего времени прохождения к большему, и так же иметь разбиение на страницы.
В этом случае у водителя выводится минимальное время между этими городами (в днях), учитывая, что водитель за сутки может ехать не более 8 часов.

Формат объекта водитель при получении минимального времени прохождения:

{
    "id": "...",
    "name": "...",
    "birth_date": "...",
    "age": "...",
    "travel_time": "..."
}

Требования

PHP 7.0.0+

Установка

Клонируем репозиторий себе

git clone git@github.com:sanmon1985/test-autopark.git

Устанавливаем все зависимости с помощью Composer

composer install

Создаем базу данных autopark
Правим файл конфигурации config/db.php под себя

Запускаем миграции

./yii migrate

Методы и параметры API

/api/drivers

Параметры:

  • page (optional): Страница результатов

Пример ответа:

[
    {
        "id": 12,
        "name": "Абрамов Фёдор Алексеевич",
        "birth_date": "1996-10-03",
        "age": 22
    },
    ...
]

/api/travel_times

Параметры:

  • 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
    },
    ...
]

/api/travel_time/<id>

Параметры:

  • distance: Искомое расстояние между городами

Пример ответа:

[
    {
        "id": 1,
        "name": "Фёдоров Тимур Владимирович",
        "birth_date": "1997-08-01",
        "age": 21,
        "travel_time": 3
    }
]