Необходимо написать Rails-приложение, в котором ведется учет отделов и сотрудников компании.
В приложении нужно реализовать:
- ведение справочника отделов
- ведение справочника сотрудников
- пополнение отделов сотрудниками
- отчет о структуре компании
Исходный код должен быть размещен на github.
Отделы имеют следующие атрибуты:
- Дата формирования (обязательный)
- Дата расформирования
- Название (может меняться со временем - необходимо хранить историю этих изменений)
Действия с отделами:
- Добавление. При добавлении указывается:
- Дата формирования
- Дата расформирования (опционально)
- Название
- Редактирование. Для редактирования доступны:
- Дата формирования
- Дата расформирования
- Изменение названия. Указывается:
- Новое навание
- Дата, с которой оно изменено
- Просмотр списка
- В списке должны отображаться все отделы
- Список должен содержать колонки:
- Название (должно отображаться название, которое отдел имеет на текущую дату; если отдел расформирован, то - последнее название; если еще не сформирован - первое название)
- Дата формирования
- Дата расформирвания
Атрибуты сотрудника:
- ФИО (обязательный)
Действия с сотрудниками:
- Добавление
- Редактирование
- Просмотр списка
- Должна быть возможность указать, в каком отделе работает сотрудник
- При привязке сотрудника к отделу указывается:
- Дата начала работы сотрудника в отделе (обязательно)
- Дата окончания работы сотрудника в отделе
- Для одного сотрудника должна быть возможность создать несколько привязок к отделам с условием, что они не пересекаются по времени (т.е. сотрудник может переходить из отдела в отдел, но в любой момент работает только в одном отделе)
При редактировании отделов и привязке сотрудников к отделам система должна следить за соблюдением следующего правила:
- период работы сотрудника в отделе должен лежать в пределах периода существования отдела (от даты формирования до даты расформирования)
- Отчет должен строиться на определенную дату (по умолчанию - на текущую)
- Отчет должен содержать перечень всех отделов, существующих в компании на заданную дату.
- Названия отделов должны отображаться на заданную дату.
- Для каждого отдела должен быть перечень всех сотрудников, которые работают в нем на заданную дату
Схематично это должно выглядеть, примерно, так:
Отдел 1
Сотрудник 1
Сотрудник 2
Отдел 2
Сотрудник 3