--
-- Upgrade script
--
-- Adds deputy feature
--
-- Peter Marklund (peter@collaboraid.biz)
--
-- $Id: upgrade-1.0d4-1.0d5.sql,v 1.1 2003/09/01 13:43:51 peterm Exp $
---------------------------------
-- Deputies
---------------------------------
-- When a user is away, for example on vacation, he
-- can hand over his workflow roles to some other user - a deputy
create table workflow_deputies (
user_id integer
constraint workflow_deputies_pk
primary key
constraint workflow_deputies_uid_fk
references users(user_id),
deputy_user_id integer
constraint workflow_deputies_duid_fk
references users(user_id),
start_date date
constraint workflow_deputies_sdate_nn
not null,
end_date date
constraint workflow_deputies_edate_nn
not null,
message varchar(4000)
);
-- role-to-user-map with deputies. Does not select users who
-- have deputies, should we do that?
create view workflow_case_role_user_map as
select distinct q.case_id,
q.role_id,
q.user_id,
q.on_behalf_of_user_id
from (
select rpm.case_id,
rpm.role_id,
pmm.member_id as user_id,
pmm.member_id as on_behalf_of_user_id
from workflow_case_role_party_map rpm,
party_approved_member_map pmm,
users u
where rpm.party_id = pmm.party_id
and pmm.member_id = u.user_id
and not exists (select 1
from workflow_deputies
where user_id = pmm.member_id
and now() between start_date and end_date)
union
select rpm.case_id,
rpm.role_id,
dep.deputy_user_id as user_id,
pmm.member_id as on_behalf_of_user_id
from workflow_case_role_party_map rpm,
party_approved_member_map pmm,
users u,
workflow_deputies dep
where rpm.party_id = pmm.party_id
and pmm.member_id = u.user_id
and dep.user_id = pmm.member_id
and now() between dep.start_date and dep.end_date
) q;