Разработка:storages/invorders

Материал из DOF
Версия от 13:34, 5 февраля 2009; Yumeneco (обсуждение | вклад) (Обработка сигналов ($DOF->send_event()):=)
Перейти к: навигация, поиск

Таблица в базе данных

invorders - заказы на комплекты учебных ресурсов. Ресурс может быть заказан на известный промежуток времени или бессрочно. При заказе комплекта резервируются ресурсы, входящие в состав комплекта. Если ресурсы расходуемые, после использования комплекта списывается соответствующее количество ресурса, если ресурс нерасходуемый - то после окончания использования ресурс освобождается. При заказе штучного комплекта заказчик, кроме категории ресурса, может выбрать также и конкретный комплект (например, портативный компьютер Toshiba с инвентарным номером X, а не портативный компьютер Roverbook с инвентарным номером Z). Если в число объектов, для которых могут быть заказаны ресурсы, помимо уроков в календаре, уроков в расписании на неделю, всех уроков учебного процесса, всех уроков по одному предмету/дисциплине, всех уроков по заданой теме в тематическом плане или конкретного человека, заказывающего ресурс, на заданный промежуток времени будут включены другие типы заказчиков, это изменение будет учтено в формате данного объекта, а остальная структура данных останется без изменений.

Подробный формат полей в таблице:

  • repeat - флаг многократной повторяемости заказа (если он привязан к конкретному событию)
  • date - дата и время подачи заявки в Unix Timestamp по UTC
  • dateexec - дата и время начала исполнения заказа в Unix Timestamp по UTC если заказ исполняется независимо от внешних событий.
  • duration - продолжительность заказа в секундах (обычно - один урок)
  • customerid - сотрудник, подавший заявку (преподаватель, методист или администратор)
  • objtype - тип объекта, к которому привязывается заявка
  • objid - id объекта, к которому привязывается заявка
  • invcategid - id заказанной категории пакета
  • invsetsid - id предпочтительного комплекта (при исполнении может быть предложен другой, что отражается в invexecutions, но не влияет на исходную заявку)
  • departmentid - id подразделения, которому назначено исполнение заказа (обычно - отдел-владелец комплекта)
  • status - статус заявки: подана, одобрена, отклонена, исполняется (если заявка привязана к повторяющемуся событию, например уроку в еженедельном расписании, она исполняется пока включен этот статус), закрыта, отозвана подавшим сотрудником.
  • priority - приоритет заявки. Целое число. Чем выше число, тем выше приоритет. Может быть отрицательным. По умолчанию - 0.

Дополнительные методы:

  • Список заказов, принадлежащих структурному подразделению, по статусу. Отсортированы по дате подачи.
  • Список повторяемых заказов, исполнение которых связано с событием (в параметре передается объект с событием) с учетом заказов привязанных к шаблону в расписании, учебному процессу, дисциплине.
  • Список заказов по подавшему сотруднику (необязательный параметр - статус, по умолчанию - null все статусы)
  • Посчитать, сколько комплектов должно быть одолжено на момент в шаблоне расписания (день недели, вариант недели, время дня в секундах от 00:00) при условии исполнения всех заказов, прикрепленных к дисциплинам, учебным процессам и шаблонам в расписании (находит длящиеся шаблоны в расписании и считает заказы). Так же возвращает массив с id штучных комплектов в ключах и количестве заказов на них, как на предпочтительные - в значениях). Отдельно выводит список штучных комплектов, заказанных более одного раза. Количество одалживаемых счетных ресурсов, необходимых для исполнения всех этих заказов.
  • Вернуть информацию о комплекте вместе с массивом содержащим список и количество входящих в комплект ресурсов и объектами самих этих ресурсов

Обработка сигналов ($DOF->send_event()):

  • Прослушивание сингнал добавления уроков в расписание, получает список заказов, связанных с этим событием и вызывает метод планирования заказа по событию в storage/invexecutions