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

Материал из DOF
Версия от 20:30, 3 ноября 2012; Ibragim (обсуждение | вклад) (update_and_normalize($personid, $organizationid = null, $post = null))
Перейти к: навигация, поиск
Плагин
Название workplaces
Тип storages


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

workplaces

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

  • personid - id персоны в таблице persons
  • organizationid - id организации в таблице organizations
  • statuswork - рабочий статус (основное место работы/совместитель/не известно/уволен)
  • post - должность
  • receptiondate - дата приема
  • dismissaldate - дата увольнения
  • phonework - рабочий телефон
  • addnumber - добавочный номер
  • comment - коментарий

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

widgets_field_variants_list($querytype, $depid, $data)

Обработка AJAX-запросов из форм.

Аргументы:

  • $querytype(string) - тип запроса
  • $depid(int) - подразделение, в котором ищутся должности
  • $data(array) - дополнительные данные пришедшие из json-запроса

Возвращаемые значения:

  • (array) - массив полученных обьектов.

Структура работы:

  1. Через case перебираем тип запроса и в зависимости от этого вызываем нужный метод.
  2. Возвращаем массив вида array(0 => $this->dof->modlib('ig')->igs('choose')), если такого типа запроса нет.

widgets_workplaces_list($departmentid, $fullname)

Получить список должностей по первым буквам названия должности(post)

Аргументы:

  • $departmentid(int) - подразделение, в котором ищутся должности
  • $post(string) - первые несколько букв поля post

Возвращаемые значения:

  • (array) - массив полученных обьектов.

Структура работы:

  1. Формируем SQL запрос на получение похожих на строку $post данных по полю post
  2. Отправляем запрос базе.
  3. Формируем полученные из базы данные в массив объектов для возвращения в форму.

update_and_normalize($personid, $organizationid = null, $post = null)

Реализация увольнения и назначения на должность, смены должности.

  • Если существует активная привязка:
  • 1) Если мы меняем органимзацию:

переносим старую привязку в архивный статус и создаем новую привязку с новой организацией

  • 2) Если организация не меняется-только обновляем запись

Если активной привязки не существует: создать новую привязку в активном статусе При создании привязки заносится дата принятия на работу, при перемещении в архивный статус- дата увольнения

  • Если привязка не существует-создаем привязку в активном статусе

Аргументы:

  • $personid(int) - id персоны
  • $organizationid(int) - id организации
  • $post(string) - название должности

Возвращаемые значения:

  • bool true|false

Структура работы:

  1. Проверяем, существует ли для данного пользователя активная привязка(если не существует-создаем активную привязку)
  2. Если активная привязка существует: проверяем, совпадает ли переданный id организации, с тем что записан в привязке
  3. В зависимости от этого совпадения, либо переводим текущую привязку в архивный статус и создаем новую в активном статусе, либо просто обновляем текущую привязку

События

В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.

Перехватываемые события

Таблица событий, которые перехватывает этот плагин
Тип плагина Код плагина Код события Доп. данные Пояснение
Этот плагин не перехватывает никаких событий

Генерируемые события

Таблица событий, которые генерирует этот плагин
Тип плагина Код плагина Код события Доп. данные Пояснение
storage workplaces insert Массив, содержащий в поле "new" объект с данными для вставки в таблицу.

Пример: array('new' => $dataobject)

Генерируется каждый раз при вставке новой записи в таблицу workplaces.
storage workplaces update Массив, содержащий в поле "new" обновленный объект, и в поле "old" объект со старыми данными, до обновления записи.

Пример: array('old' => $dataobject_old, 'new' => $dataobject_new)

Генерируется каждый раз при обновлении записи в таблице workplaces.
storage workplaces delete Массив, содержащий в поле "old" объект с данными, которые удаляются из таблицы

Пример: array('old' => $dataobject)

Генерируется каждый раз при удалении записи из таблицы workplaces.