USP_WEBDASHBOARDFOLDER_EDIT

Updates an existing web dashboard folder.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@NAME nvarchar(200) IN
@DESCRIPTION nvarchar(1000) IN
@PARENTPATH nvarchar(1000) IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_WEBDASHBOARDFOLDER_EDIT(@ID uniqueidentifier,
    @NAME nvarchar(200),
    @DESCRIPTION nvarchar(1000),
    @PARENTPATH nvarchar(1000),
    @CHANGEAGENTID uniqueidentifier)
as
    set nocount on;

    declare @PATH nvarchar(1000);
    declare @PARENTID uniqueidentifier;
    declare @TEMPPARENTID uniqueidentifier;

    select @PARENTID = ID from dbo.WEBDASHBOARDFOLDER where PATH = @PARENTPATH;

    set @TEMPPARENTID = @PARENTID;
    set @PATH = '';

    while @TEMPPARENTID is not null
    begin
        select @TEMPPARENTID = PARENTID, @PATH = NAME + '/' + @PATH from dbo.WEBDASHBOARDFOLDER where ID = @TEMPPARENTID;
    end;

    set @PATH = @PATH + @NAME;

    declare @EXISTINGPATH nvarchar(1000);

    select @EXISTINGPATH = PATH from dbo.WEBDASHBOARDFOLDER where ID = @ID;

    update dbo.WEBDASHBOARDFOLDER set NAME = @NAME,
        DESCRIPTION = @DESCRIPTION,
        PATH = @PATH,
        CHANGEDBYID = @CHANGEAGENTID,
        DATECHANGED = getdate()
    where ID = @ID;

    if @EXISTINGPATH <> @PATH
    begin

        declare @CHILDID uniqueidentifier;
        declare @CHILDNAME nvarchar(200);
        declare @CHILDDESCRIPTION nvarchar(1000);

        -- Recursively update any child folders belonging to this folder with the new path.

        declare c cursor local fast_forward for select ID, NAME, DESCRIPTION from dbo.WEBDASHBOARDFOLDER where PARENTID = @ID;
        open c;

        fetch next from c into @CHILDID, @CHILDNAME, @CHILDDESCRIPTION;

        while @@fetch_status = 0

      begin

              if @CHILDID is not null
                exec dbo.USP_WEBDASHBOARDFOLDER_EDIT @CHILDID, @CHILDNAME, @CHILDDESCRIPTION, @PATH, @CHANGEAGENTID;

        fetch next from c into @CHILDID, @CHILDNAME, @CHILDDESCRIPTION;

          end;

        close c;
        deallocate c;    

    end;