Соберите с помощью Laravel каталог сотрудников (пользователей) крюинговой компании по следущим требованиям. Если вы позиционируете себя как full-stack разработчик, пожалуйста, выполните также первое дополнительное задание.
- Должность: id, идентификатор подразделения, название
- Сотрудник: id, ФИО, email, тип сотрудника, идентификатор должности.
- Возможные типы сотрудника: действующий офисный сотрудник, архивный офисный сотрудник, действующий моряк, архивный моряк, моряк-соискатель.
- Реализуйте механизм авторизации для всех пользователей (сотрудников).
- Заполните базу данных фейковыми данными (используя сидеры или другие механизмы).
- Для всех сущностей необходимо описать CRUD-операции.
- Реализуйте эндпоинт для поиска сотрудника по имени/фамилии/email.
- Реализуйте отображения следующих страниц (фронт-энд часть на уровне ваших возможностей): список офисных сотрудников, список архивных офисных сотрудников, список моряков, список архивных моряков, карточка сотрудника.
- Интегрируйте в проект Swagger.
Дополнительное задание (front-end часть):
Реализуйте создание сотрудника, редактирование и удаление. Операции редактирования и удаления должны быть доступны из карточки сотрудника, из списка - на ваше усмотрение. Для отображения списков сотрудников используйте пагинацию и datatables (или любой другой удобный для вас инструмент). Реализуйте фильтрацию сотрудников по отделам и должностям. А также поиск сотрудников по имени, фамилии, email.
В качестве html-шаблона можете использовать следующие репозитории (не обязательно): voler, mazer
Дополнительное задание (observers & events):
При изменении должности или типа сотрудника необходимо отправлять этому сотруднику email с содержанием:
[имя_сотрудника], ваши данные были изменены. Новый тип сотрудника [тип], новая должность [должность].
Желательно использовать mailhog.
Результат присылайте в виде репозитория в GitHub с инструкцией по запуску. Бонусом будет, если проект будет запускаться через docker compose (можно использовать laravel sail).