--
-- wp_slide__new_revision/13
--
create or replace function wp_slide__new_revision(
  timestamp with time zone,
  integer,
  character varying,
  integer,
  character varying,
  text,
  character varying,
  character varying,
  integer,
  integer,
  integer,
  boolean,
  boolean
) returns int4 as $$

declare
    p_creation_date             alias for $1;  
    p_creation_user             alias for $2;
    p_creation_ip               alias for $3;
    p_slide_item_id             alias for $4;
    p_slide_title               alias for $5;
    p_preamble                  alias for $6;
    p_bullet_items              alias for $7;
    p_postamble                 alias for $8;
    p_style                     alias for $9;
    p_original_slide_id         alias for $10;
    p_sort_key                  alias for $11;    
    p_include_in_outline_p      alias for $12;
    p_context_break_after_p     alias for $13;
    v_preamble_item_id          cr_items.item_id%TYPE;
    v_postamble_item_id         cr_items.item_id%TYPE;
    v_bullet_items_item_id      cr_items.item_id%TYPE;
    v_revision_id               cr_revisions.revision_id%TYPE;
    v_preamble_revision_id      cr_revisions.revision_id%TYPE;
    v_postamble_revision_id     cr_revisions.revision_id%TYPE;
    v_bullet_items_revision_id  cr_revisions.revision_id%TYPE;
begin
    v_revision_id := content_revision__new(
        null,
        null,
        current_timestamp,
        'text/plain',
        null,
        null,
        p_slide_item_id,
        null,
        p_creation_date,
        p_creation_user,
        p_creation_ip
    );

    perform content_item__set_live_revision(v_revision_id);
    
    insert into cr_wp_slides (
        slide_id,
        slide_title,
        style,
        original_slide_id,
        sort_key,
        include_in_outline_p,
        context_break_after_p
    ) values (
        v_revision_id,
        p_slide_title,
        p_style,
        p_original_slide_id,
        p_sort_key,
        p_include_in_outline_p,
        p_context_break_after_p 
    );

    select item_id into v_preamble_item_id
    from cr_items
    where parent_id = p_slide_item_id
    and   content_type = 'cr_wp_slide_preamble';
    
    v_preamble_revision_id := content_revision__new(
        null,
        null,
        current_timestamp,
        'text/plain',
        null,
        p_preamble,
        v_preamble_item_id,
        null,
        p_creation_date,
        p_creation_user,
        p_creation_ip
    );
          
    perform content_item__set_live_revision(v_preamble_revision_id);

    insert into cr_wp_slides_preamble
    (id, slide_id) 
    values 
    (v_preamble_revision_id, v_revision_id);

    select item_id into v_postamble_item_id
    from cr_items
    where parent_id = p_slide_item_id
    and   content_type = 'cr_wp_slide_postamble';

    v_postamble_revision_id := content_revision__new(
        null,
        null,
        current_timestamp,
        'text/plain',
        null,
        p_postamble,
        v_postamble_item_id,
        null,
        p_creation_date,
        p_creation_user,
        p_creation_ip
    );

    perform content_item__set_live_revision(v_postamble_revision_id);
      
    insert into cr_wp_slides_postamble
    (id, slide_id) 
    values 
    (v_postamble_revision_id, v_revision_id);

    select item_id into v_bullet_items_item_id
    from cr_items
    where parent_id = p_slide_item_id
    and   content_type = 'cr_wp_slide_bullet_items';
 
    v_bullet_items_revision_id := content_revision__new(
        null,
        null,
        current_timestamp,
        'text/plain',
        null,
        p_bullet_items,
        v_bullet_items_item_id,
        null,
        p_creation_date,
        p_creation_user,
        p_creation_ip
    );

    perform content_item__set_live_revision(v_bullet_items_revision_id); 

    insert into cr_wp_slides_bullet_items
    (id, slide_id) 
    values 
    (v_bullet_items_revision_id, v_revision_id);

    return 0;
end;$$ language plpgsql;