Тестовое задание для разработчика
Задача: Пусть в г. Санкт-Петербург имеется 5 пунктов выдачи с заданными географическими координатами.
имя широта долгота
1 Альдераан 59.9573 30.3485 2 Беспин 60.0025 30.3113 3 Дагоба 59.9485 30.3857 4 Корусант 59.9894 30.2587 5 Мустафар 59.8836 30.3575
Требуется создать веб-сервис, который предлагает пользователю ввести его ФИО, телефон и адрес, и по введенному адресу определяет ближайший пункт выдачи и расстояние до него. Пользователю выводится его имя, форматированный телефон и информация о пункте выдачи.
Файлы в архиве: Toolkit.php - вспомогательный класс, содержащий метод для форматирования номера телефона, а также метод для опеределения географических координат введенного адреса. CandidateAbstract.php - абстрактный класс. ajax.php - файл для AJAX-запроса.
Требуется создать файл Candidate.php и объявить в нем класс Candidate, который будет наследовать CandidateAbstract. Также требуется создать файл, в котором будет находится форма ввода ФИО, телефона, адреса, а также кнопка, при нажатии на которую запускается процесс определения ближайшего пункта выдачи. После успешного выполнения определения ближайшего пункта в div на странице должен выводится результат в виде "[ФИО] ([форматированный телефон]): ближайший пункт выдачи [название пункта] находится на расстоянии [расстояние до пункта]км"
Предполагаемая последовательность процессов:
- Пользователь заходит на страницу и видит поля для ввода ФИО, телефона, адреса, а также кнопку "Найти пункт выдачи"
- Пользователь вводит данные и нажимает на кнопку. Необходимо произвести валидацию введенных данных. Если поля ФИО, телефон и адрес заполнены корректно, средствами javascript отправляется AJAX-запрос, обрабатываемый файлом ajax.php
- ajax.php создает экземпляр класса Candidate и передает управление методу run
- Методы класса Candidate обрабатывают полученные данные и определяют название ближайшего пункта выдачи и расстояние до него
- Полученные результаты добавляются в ответ AJAX-запроса и средствами javascript выводятся в div на странице
Требования:
- Информация о пунктах выдачи хранится исключительно в базе данных
- Изменять содержимое исходных файлов запрещено
- Отправка и обработка AJAX-запроса, а также вывод результатов в div должны производится средствами "чистого" javascript (библиотеку jQuery не использовать)
- Расстояние выводится в километрах с округлением до 1 знака после запятой