В описании задания как пример зданив написано "o Адрес: Например - г. Москва, ул. Ленина 1, офис 3". По моему офис 3 не харакеризует зднаия, не могут несколько компании находится в одном офисе, по этому все так и добавил поле address_2, но оставил пустым. Так же добавил поле city. Координаты можно было написать в одном SPATIAL поле, но у меня они имеют две разные колонки.
Задание требует создания 6-и методов, но по сути 5 из них один и тот же метод - список организацией по разным фильтрам. Я думаю не правильно написать 5 разных эндпоинтов для них, а нужно только менять фильтры. К тому же люди могут захотеть фильтрировать сразу по нескольким фильтрам: что мы будем делать? Отправить несколько запросов и обработывать данные с помощью PHP? Нет! Это не правильно. И коды так выглядят красиво: маленькая функция в контроллере и отдельная scopeFilter функция в модели. Чтобы тестировать на Сваггер ЮАй, надо оставить значения только для нужных фильтров. Я так же добавил коллекцию Постмана, где можно отдельно отправить запросы для разных фильтров, можете импортировать и использовать.
To install the project with Docker please make sure you have installed it on your working machine.
- Docker: Install Docker
- Docker Compose: Install Docker Compose
cd <your-projects-directory>
git clone https://github.com/Arman001011/organizations.git
cd organizations
Create .env file and then edit it to configure database settings and other environment-specific variables
cp .env.example .env
docker-compose up --build -d
docker exec -it laravel_app bash
composer install
php artisan migrate
php artisan db:seed
php artisan storage:link
Now the app will be available at http://localhost:8080. And API documentation will be visible at http://localhost:8080/api/documentation.
If you need to stop the containers, you can run docker-compose down
and run docker-compose up -d
to restart them. Artisan commands can be run from outside of containers like docker exec -it laravel_app php artisan migrate
.
Тестовое задание "Создание REST API приложения"
Описание.
Необходимо реализовать REST API приложения для справочника Организаций, Зданий, Деятельности.
1. Организация - Представляет собой карточку организации в справочнике и должна содержать в себе следующую информацию:
o Название: Например ООО “Рога и Копыта”
o Номер телефона: организация может иметь несколько номеров телефонов (2-222-222, 3-333-333, 8-923-666-13-13)
o Здание: Организация должна находится в одном конкретном здании (Например, Блюхера, 32/1)
o Деятельность: Организация может заниматься несколькими видами деятельностей (Например, “Молочная продукция”, “Мясная продукция”)
2. Здание - Содержит в себе как минимум информацию о конкретном здании, а именно:
o Адрес: Например - г. Москва, ул. Ленина 1, офис 3
o Географические координаты: Местоположение здания должно быть в виде широты и долготы.
3. Деятельность - позволяет классифицировать род деятельности организаций в каталоге. Имеет название и может в древовидном виде вкладываться друг в друга. Пример возможного дерева деятельности:
- Еда
- Мясная продукция
- Молочная продукция
- Автомобили
- Грузовые
- Легковые
- Запчасти
- Аксессуары
Функционал приложения.
Взаимодействие с пользователем происходит посредством HTTP запросов к API серверу с использованием статического API ключа. Все ответы должны быть в формате JSON. Необходимо реализовать следующие методы:
• список всех организаций находящихся в конкретном здании
• список всех организаций, которые относятся к указанному виду деятельности
• список организаций, которые находятся в заданном радиусе/прямоугольной области относительно указанной точки на карте. список зданий
• вывод информации об организации по её идентификатору
• искать организации по виду деятельности. Например, поиск по виду деятельности «Еда», которая находится на первом уровне дерева, и чтобы нашлись все организации, которые относятся к видам деятельности, лежащим внутри. Т.е. в результатах поиска должны отобразиться организации с видом деятельности Еда, Мясная продукция, Молочная продукция.
• поиск организации по названию
• ограничить уровень вложенности деятельностей 3 уровням
Задание
• Спроектировать БД + Создать необходимые миграции + Заполнить БД тестовыми данными
• Реализовать API согласно разделу Функционал приложения
• Завернуть приложения в Docker контейнер, чтобы его можно было развернуть на любой машине (Если необходимо, то написать инструкцию по разворачиванию)
• Добавить в проект документацию Swagger UI или Redoc с описанием всех методов приложения.