--
-- workflow_case__add_manual_assignment/3
--
create or replace function workflow_case__add_manual_assignment(
  integer,
  character varying,
  integer
) returns int4 as $$

declare
  add_manual_assignment__case_id                alias for $1;  
  add_manual_assignment__role_key		alias for $2;  
  add_manual_assignment__party_id               alias for $3;  
  v_workflow_key                                varchar;  
  v_num_rows					integer;
begin
        select count(*)
          into v_num_rows
          from wf_case_assignments
         where case_id = add_manual_assignment__case_id
           and role_key = add_manual_assignment__role_key
           and party_id = add_manual_assignment__party_id;

        if v_num_rows = 0 then
	    select workflow_key 
	      into v_workflow_key 
	      from wf_cases 
	     where case_id = add_manual_assignment__case_id;
        
            insert into wf_case_assignments (
                case_id, 
                workflow_key, 
                role_key, 
                party_id
            ) values (
                add_manual_assignment__case_id, 
                v_workflow_key, 
                add_manual_assignment__role_key, 
                add_manual_assignment__party_id
            );
        end if;

        return 0; 
end;$$ language plpgsql;