SQL запрос. Добавление всем агентам очередей для уведомления

Только для готовых решений! Пожалуйста, не используйте для вопросов и обсуждений!

Модератор: ykolesnikov

Ответить
Andraptor
OTRS Новобранец
Сообщения: 74
Зарегистрирован: 05 фев 2015, 16:29

SQL запрос. Добавление всем агентам очередей для уведомления

Сообщение Andraptor » 11 июн 2015, 14:07

Данный запрос добавляет всем агентам уведомления для очередей, в которых они имеют полные права ("Мои очереди").
Полезно при первоначальной настройке агентов.
ВНИМАНИЕ! При этом удаляются все, добавленные ранее, очереди для уведомления.

Код: Выделить всё

truncate table personal_queues

insert into personal_queues (user_id, queue_id)
select ru.user_id,
       q.id as queue_id
from group_role as gr
     inner join roles as r on gr.role_id = r.id
     inner join queue as q on gr.group_id = q.group_id
     inner join role_user as ru on gr.role_id = ru.role_id
     inner join users as u on ru.user_id = u.id
where gr.permission_key = 'rw' and
      gr.permission_value = 1 and
      r.valid_id = 1 and
      q.valid_id = 1 and
      u.valid_id = 1
Затем чистим кэш!
OTRS::ITSM 4.0.14,
PostgreSQL 9.3.6

Andraptor
OTRS Новобранец
Сообщения: 74
Зарегистрирован: 05 фев 2015, 16:29

Re: SQL запрос. Добавление всем агентам очередей для уведомл

Сообщение Andraptor » 11 июн 2015, 14:51

Вот тот же запрос, только не удаляет, ранее установленные очереди (связи), а добавляет те, которых не хватает

Код: Выделить всё

insert into personal_queues(user_id, queue_id)
select res.user_id,
       res.queue_id
FROM (
       select ru.user_id,
              q.id as queue_id
       from group_role as gr
            inner join roles as r on gr.role_id = r.id
            inner join queue as q on gr.group_id = q.group_id
            inner join role_user as ru on gr.role_id = ru.role_id
            inner join users as u on ru.user_id = u.id
       where gr.permission_key = 'rw' and
             gr.permission_value = 1 and
             r.valid_id = 1 and
             q.valid_id = 1 and
             u.valid_id = 1
     ) as res
     left join personal_queues as pq on res.user_id = pq.user_id and
      res.queue_id = pq.queue_id
where pq.user_id is null and
      pq.queue_id is null
И, конечно же, чистим кэш.
OTRS::ITSM 4.0.14,
PostgreSQL 9.3.6

Ответить