Тестовое задание
Есть две сущности: сотрудники и отделы. Сотрудники могут быть с почасовой оплатой либо с месячной ставкой. Вычисление оплаты труда для сотрудников с почасовой оплатой будет иметь следующую формулу: количество часов * сумму за один час. Для сотрудников со ставкой метод расчета возвращает месячную ставку. Реализовать следующую функциональность:
1. Импорт сотрудников в базу из XML файла (формат продумать самостоятельно)
2. Выборка сотрудников из БД (Спроектировать самостоятельно)
3. Вывести список сотрудников со следующей информацией: ФИО, дата рождения, отдел, должность, тип сотрудника (ставка или почасовая оплата), оплата за месяц (рассчитывается по формуле в зависимости от типа сотрудника).
4. Реализовать возможность вывода (10, 25, 50, 100) сотрудников на страницу с возможностью выбора к показу количества сотрудников. (По умолчанию 10).
5. Добавить возможность пагинации (pagination) по сотрудникам.
6. Добавить навигацию по отделам, переход по отделу ведет на страницу вывода сотрудников выбранного отдела.
7. Реализация страницы для отображения 404 http статуса.
Принцип формирования URL:
Возможные варианты URL для ЧПУ относительно домена:
/employes - Вывод списка сотрудников
/employes?page=3 - третья страница пагинации списка сотрудников
/employes/[department] - Вывод списка сотрудников по отделу
/employes/[department]?page=3 - Вывод списка сотрудников по отделу третья страница пагинации
Где [department] – это идентификатор отдела
Такие данные как количество вывода сотрудников на страницу можно вынести в GET-параметр.
Условия выполнения
Что можно использовать: Laravel, mySql, javascript/Vue.js, html, css.
Задание выполнять на Laravel 6. PHP 7.2.
Что ожидается
1. Чистота кода и его читабельность.
2. Соответствие стандартам кодирования.
3. Обоснованное применение принципов ООП.
4. Использование только стандартных средств Laravel.
5. Проектирование базы данных. (Нормализация).
6. Валидный HTML5.
7. Пример XML файла.
Этапы выполнения тестового задания
1. Прочитать и вникнуть в ТЗ.
2. Спроектировать базу данных (Нормализировать).
3. Создать миграции (migrations) и сиды (seeding) для создания базы и наполнения её тестовыми данными. Система должна корректно работать как с 1000-й сотрудников, так и в случае если таблица будет пустой.
4. Роутинг.
5. Заложение бизнес-логики.
6. Верстка и frontend, (Верстка как таковая оцениваться не будет, главное не отступать от корректного использования DOM).
7. Тестирование и отладка.
Прием задания
1. Исходный код — ссылка на github.
2. Какая часть функциональности была выполнена?
3. При сдаче задания указать количество часов потраченного на выполнение.