Небольшой скрипт на PHP
Нужно написать на PHP два варианта одного скрипта: Базовый вариант и расширенный вариант.
Базовый вариант
===========
Модуль "Распределение заданий". Информационная единица — задание — имеет структуру:
Идентификатор задания;
Дата-время добавления задания;
Сотрудник, которому назначено задание (выбор из списка сотрудников)
Планируемая дата завершения;
Фактическая дата завершения;
Заголовок (текст не более 50 символов);
Текст задания(текст не более 65535 символов).
Сотрудники не могут сами отмечать задания как выполненные.
Модуль имеет представления:
Вывод заданий по сотруднику, сортируемый в обратном хронологическом порядке.
Вывод статистики производительности сотрудников (количество заданий в месяц, при этом если задание растянуто на несколько месяцев, считать производительность пропорционально дням).
Вывод диаграммы Ганта занятости сотрудников в проектах (по завершённым проектам) на указанный интервал дат.
Для изображения диаграммы Ганта используйте таблицу с закрашенными ячейками. По горизонтальной оси диаграммы отложены дни. По вертикальной оси расположены группы {сотрудник → {проекты}}.
Модуль имеет интерфейс администратора, позволяющий добавлять, изменять и удалять отдельные задания.
Расширенный вариант
==============
Реализовать защиту интерфейса администратора системой аутентификации пользователей. Данные пользователей хранится в таблице:
Идентификатор;
Логин;
Хеш пароля;
Наличие прав суперпользователя;
ФИО;
Время последнего доступа к системе.
Вместо перечисления сотрудников в базовой задаче используйте связь с таблицей пользвателей.
Каждый пользователь имеет право пометить приписанную ему задачу как завершённую, при этом моментом завершения задачи считается момент выставления признака "Завершена". Добавлять, изменять и удалять задачи имеет право только суперпользователь.
Система аутентификации имеет интерфейс суперпользователя, доступный только тем пользователям, кому назначено соответствующее право. Интерфейс суперпользователя позволяет добавлять и удалять пользователей системы, а также изменять различные атрибуты существующих пользователей.