--
-- workflow_case__resume/4
--
create or replace function workflow_case__resume(
integer,
integer,
character varying,
character varying
) returns int4 as $$
declare
resume__case_id alias for $1;
resume__user_id alias for $2; -- default null
resume__ip_address alias for $3; -- default null
resume__msg alias for $4; -- default null
v_state varchar;
v_journal_id integer;
begin
select state into v_state
from wf_cases
where case_id = resume__case_id;
if v_state != 'suspended' and v_state != 'canceled' then
raise EXCEPTION '-20000: Only suspended or canceled cases can be resumed';
end if;
/* Add an entry to the journal */
v_journal_id := journal_entry__new(
null,
resume__case_id,
'case resume',
'case resumed',
now(),
resume__user_id,
resume__ip_address,
resume__msg
);
update wf_cases
set state = 'active'
where case_id = resume__case_id;
return 0;
end;$$ language plpgsql;