USP_DATAFORMTEMPLATE_CREATEORUPDATE_CLR

Adds or updates a row in the DATAFORMTEMPLATECATALOG table for CLR-based data forms.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@TEMPLATENAME nvarchar(60) IN
@DESCRIPTION nvarchar(1000) IN
@RECORDTYPE nvarchar(50) IN
@MODE smallint IN
@ASSEMBLYNAME nvarchar(128) IN
@CLASSNAME nvarchar(128) IN
@FORMDEFXML xml IN
@STATICPARAMETERDEFINITION xml IN
@SPEC xml IN
@CONTEXTPARAMETERNAME nvarchar(128) IN
@CONTEXTRECORDTYPE nvarchar(50) IN
@CHANGEAGENTID uniqueidentifier IN
@SPECUINAME nvarchar(60) IN

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_CREATEORUPDATE_CLR
(
    @ID uniqueidentifier output
    @TEMPLATENAME nvarchar(60),
    @DESCRIPTION nvarchar(1000) = '',
    @RECORDTYPE nvarchar(50) = '',
    @MODE smallint,
    @ASSEMBLYNAME nvarchar(128) = ''
    @CLASSNAME nvarchar(128) = '',
    @FORMDEFXML xml,
    @STATICPARAMETERDEFINITION xml = '',
    @SPEC xml,
    @CONTEXTPARAMETERNAME nvarchar(128) = '',
    @CONTEXTRECORDTYPE nvarchar(50) = '',
    @CHANGEAGENTID uniqueidentifier = null,
    @SPECUINAME nvarchar(60) = N''
)
as
set nocount on;

declare @RecTypeID uniqueidentifier;
declare @OBJID int;
declare @ExistingID uniqueidentifier;

if @SPECUINAME is null
    set @SPECUINAME = N'';

if @ID is null
    begin
      select @ExistingID = ID from dbo.DATAFORMTEMPLATECATALOG where TEMPLATENAME = @TEMPLATENAME;
      set @ID = @ExistingID;
    end
else
    select @ExistingID = ID from dbo.DATAFORMTEMPLATECATALOG where ID = @ID;

if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

declare @CONTEXTRECORDTYPEID uniqueidentifier;

if coalesce(@CONTEXTRECORDTYPE, '') <> ''
    begin
        exec dbo.USP_RECORDTYPE_GETID_OR_CREATE_FROMNAME 
                @NAME=@CONTEXTRECORDTYPE,
                @CHANGEAGENTID=@CHANGEAGENTID,
                @RECORDTYPEID=@CONTEXTRECORDTYPEID output;                
    end

--Add record type if it does not exist.        

    set @RecTypeID = null;
    if coalesce(@RECORDTYPE,'') <> ''
        exec dbo.USP_RECORDTYPE_GETID_OR_CREATE_FROMNAME @NAME=@RECORDTYPE,@CHANGEAGENTID=@CHANGEAGENTID,@RECORDTYPEID=@RecTypeID output;    

declare @SECURITYUIFOLDER nvarchar(255);
declare @SECURITYUIDISPLAYFEATURE bit;

if @MODE = 0
    begin
        --view

        set @SECURITYUIFOLDER =
            coalesce(@SPEC.value(
                '
                declare namespace bbafx="bb_appfx_viewdataformtemplate";
                declare namespace c="bb_appfx_commontypes";
                /bbafx:ViewDataFormTemplateSpec[1]/@c:SecurityUIFolder
                '
                ,'nvarchar(255)')
            ,'');
        set @SECURITYUIDISPLAYFEATURE = cast(
            coalesce(@SPEC.value(
                '
                declare namespace bbfa="bb_appfx_viewdataformtemplate";
                /bbfa:ViewDataFormTemplateSpec[1]/@SecurityUIDisplayFeature
                ','bit')
            , 
                1
           ) as bit);
    end
else if @MODE = 1
    begin
        --edit

        set @SECURITYUIFOLDER=
            coalesce(@SPEC.value(
                '
                declare namespace bbafx="bb_appfx_editdataformtemplate";
                declare namespace c="bb_appfx_commontypes";
                /bbafx:EditDataFormTemplateSpec[1]/@c:SecurityUIFolder
                '
                ,'nvarchar(255)')
            ,'');
        set @SECURITYUIDISPLAYFEATURE = cast(
            coalesce(@SPEC.value(
                '
                declare namespace bbfa="bb_appfx_editdataformtemplate";
                /bbfa:EditDataFormTemplateSpec[1]/@SecurityUIDisplayFeature
                ','bit')
            , 
                1
           ) as bit);
    end
else if @MODE=2
    begin
        --add

        set @SECURITYUIFOLDER=
        coalesce(@SPEC.value(
                '
                declare namespace bbafx="bb_appfx_adddataformtemplate";
                declare namespace c="bb_appfx_commontypes";
                /bbafx:AddDataFormTemplateSpec[1]/@c:SecurityUIFolder
                '
                ,'nvarchar(255)')
        ,'');
        set @SECURITYUIDISPLAYFEATURE = cast(
            coalesce(@SPEC.value(
                '
                declare namespace bbfa="bb_appfx_adddataformtemplate";
                /bbfa:AddDataFormTemplateSpec[1]/@SecurityUIDisplayFeature
                ','bit')
            , 
                1
           ) as bit);
    end

declare @NOSECURITYREQUIRED bit=0;

if @MODE = 0
    set @NOSECURITYREQUIRED =
    coalesce(@SPEC.value(
        'declare namespace bbspec="bb_appfx_viewdataformtemplate";
         declare namespace c="bb_appfx_commontypes";
         /bbspec:ViewDataFormTemplateSpec[1]/@NoSecurityRequired'
        , 'bit')
    , 0);

if @MODE = 1
    set @NOSECURITYREQUIRED =
    coalesce(@SPEC.value(
        'declare namespace bbspec="bb_appfx_editdataformtemplate";
         declare namespace c="bb_appfx_commontypes";
         /bbspec:EditDataFormTemplateSpec[1]/@NoSecurityRequired'
        , 'bit')
    , 0);

if @MODE = 2
    set @NOSECURITYREQUIRED=
    coalesce(@SPEC.value(
        'declare namespace bbspec="bb_appfx_adddataformtemplate";
         declare namespace c="bb_appfx_commontypes";
         /bbspec:AddDataFormTemplateSpec[1]/@NoSecurityRequired'
        , 'bit')
    , 0);

if @ExistingID is null 
    begin
        if @ID is null set @ID = NewID();

        insert into dbo.DATAFORMTEMPLATECATALOG (ID, TEMPLATENAME, DESCRIPTION, RECORDTYPEID, MODE, IMPLEMENTATIONTYPE, ASSEMBLYNAME, CLASSNAME, FORMDEFINITIONXML, STATICPARAMETERDEFINITION, TEMPLATESPECXML, CONTEXTPARAMETERNAME,CONTEXTRECORDTYPEID,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, SECURITYUIFOLDER, SPECUINAME, NOSECURITYREQUIRED, SECURITYUIDISPLAYFEATURE)
            values (@ID, @TEMPLATENAME, @DESCRIPTION, @RecTypeID, @MODE, 1, @ASSEMBLYNAME, @CLASSNAME, @FORMDEFXML, @STATICPARAMETERDEFINITION, @SPEC, @CONTEXTPARAMETERNAME,@CONTEXTRECORDTYPEID, @CHANGEAGENTID, @CHANGEAGENTID, GETDATE(), GETDATE(), @SECURITYUIFOLDER, @SPECUINAME, @NOSECURITYREQUIRED, @SECURITYUIDISPLAYFEATURE);
    end

else
    update dbo.DATAFORMTEMPLATECATALOG 
    set TEMPLATENAME = @TEMPLATENAME,
        DESCRIPTION = @DESCRIPTION,
        RECORDTYPEID = @RecTypeID,
        FORMDEFINITIONXML = @FORMDEFXML,
        STATICPARAMETERDEFINITION = @STATICPARAMETERDEFINITION,
        MODE = @MODE,
        IMPLEMENTATIONTYPE = 1,
        ASSEMBLYNAME = @ASSEMBLYNAME,
        CLASSNAME = @CLASSNAME,
        TEMPLATESPECXML = @SPEC,
        CONTEXTPARAMETERNAME = @CONTEXTPARAMETERNAME,
        CONTEXTRECORDTYPEID = @CONTEXTRECORDTYPEID,
        CHANGEDBYID = @CHANGEAGENTID,
        SECURITYUIFOLDER = @SECURITYUIFOLDER,
        DATECHANGED = GETDATE(),
        LOADPROCEDURE = '',
        SAVEPROCEDURE = '',
        SPECUINAME = @SPECUINAME,
        NOSECURITYREQUIRED = @NOSECURITYREQUIRED,
        SECURITYUIDISPLAYFEATURE = @SECURITYUIDISPLAYFEATURE
    where ID = @ID;

return 0;