Разработка:storages/workplaces — различия между версиями
Ibragim (обсуждение | вклад) м |
Ibragim (обсуждение | вклад) м (→Дополнительные методы:) |
||
| Строка 46: | Строка 46: | ||
# Отправляем запрос базе. | # Отправляем запрос базе. | ||
# Формируем полученные из базы данные в массив объектов для возвращения в форму. | # Формируем полученные из базы данные в массив объектов для возвращения в форму. | ||
| + | |||
| + | ===='''update_and_normalize($personid, $organizationid = null, $post = null)'''==== | ||
| + | Реализация увольнения и назначения на должность, смены должности. | ||
| + | Если существует активная привязка: | ||
| + | *1) Если мы меняем органимзацию: | ||
| + | переносим старую привязку в архивный статус и создаем новую привязку с новой организацией | ||
| + | *2) Если организация не меняется-только обновляем запись | ||
| + | Если активной привязки не существует: создать новую привязку в активном статусе | ||
| + | При создании привязки заносится дата принятия на работу, при перемещении в архивный статус- | ||
| + | дата увольнения | ||
| + | |||
| + | |||
| + | ''Аргументы:'' | ||
| + | * $personid(int) - id персоны | ||
| + | * $organizationid(int) - id организации | ||
| + | * $post(string) - название должности | ||
| + | ''Возвращаемые значения:'' | ||
| + | * bool true|false | ||
| + | ''Структура работы:'' | ||
| + | # Проверяем, существует ли для данного пользователя активная привязка(если не существует-создаем активную привязку) | ||
| + | # Если активная привязка существует: проверяем, совпадает ли переданный id организации, с тем что записан в привязке | ||
| + | # В зависимости от этого совпадения, либо переводим текущую привязку в архивный статус и создаем новую в активном статусе, либо просто обновляем текущую привязку | ||
===События=== | ===События=== | ||
Версия 20:29, 3 ноября 2012
| Плагин | |
| Название | 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) - массив полученных обьектов.
Структура работы:
- Через case перебираем тип запроса и в зависимости от этого вызываем нужный метод.
- Возвращаем массив вида array(0 => $this->dof->modlib('ig')->igs('choose')), если такого типа запроса нет.
widgets_workplaces_list($departmentid, $fullname)
Получить список должностей по первым буквам названия должности(post)
Аргументы:
- $departmentid(int) - подразделение, в котором ищутся должности
- $post(string) - первые несколько букв поля post
Возвращаемые значения:
- (array) - массив полученных обьектов.
Структура работы:
- Формируем SQL запрос на получение похожих на строку $post данных по полю post
- Отправляем запрос базе.
- Формируем полученные из базы данные в массив объектов для возвращения в форму.
update_and_normalize($personid, $organizationid = null, $post = null)
Реализация увольнения и назначения на должность, смены должности. Если существует активная привязка:
- 1) Если мы меняем органимзацию:
переносим старую привязку в архивный статус и создаем новую привязку с новой организацией
- 2) Если организация не меняется-только обновляем запись
Если активной привязки не существует: создать новую привязку в активном статусе При создании привязки заносится дата принятия на работу, при перемещении в архивный статус- дата увольнения
Аргументы:
- $personid(int) - id персоны
- $organizationid(int) - id организации
- $post(string) - название должности
Возвращаемые значения:
- bool true|false
Структура работы:
- Проверяем, существует ли для данного пользователя активная привязка(если не существует-создаем активную привязку)
- Если активная привязка существует: проверяем, совпадает ли переданный id организации, с тем что записан в привязке
- В зависимости от этого совпадения, либо переводим текущую привязку в архивный статус и создаем новую в активном статусе, либо просто обновляем текущую привязку
События
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.
Перехватываемые события
| Тип плагина | Код плагина | Код события | Доп. данные | Пояснение |
|---|---|---|---|---|
| Этот плагин не перехватывает никаких событий | ||||
Генерируемые события
| Тип плагина | Код плагина | Код события | Доп. данные | Пояснение |
|---|---|---|---|---|
| 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. |