USP_DATAFORMTEMPLATE_ADD_SMARTFIELD

The save procedure used by the add dataform template "Smart Field Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@SMARTFIELDCATALOGID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@SMARTFIELDDATAFORMITEM xml IN
@SMARTFIELDVALUEGROUPS xml IN
@NAME nvarchar(100) IN Name
@USEVALUEGROUP bit IN
@SYSTEMFIELD bit IN SYSTEMFIELD
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_SMARTFIELD(
    @ID uniqueidentifier = null output,
    @CHANGEAGENTID uniqueidentifier = null,    
    @SMARTFIELDCATALOGID uniqueidentifier,
    @SMARTFIELDDATAFORMITEM xml = null,
    @SMARTFIELDVALUEGROUPS xml = null,
    @NAME nvarchar(100) = '',
    @USEVALUEGROUP bit = 0,
    @SYSTEMFIELD bit = 0,
    @CURRENTAPPUSERID uniqueidentifier
)
as
    set nocount on;

    declare @CURRENTDATE datetime;

    begin try
        if @ID is null
            set @ID = newid();

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

        set @CURRENTDATE = getdate();

        insert into dbo.SMARTFIELD
            (ID, NAME, SMARTFIELDCATALOGID, SMARTFIELDDATAFORMITEM, USEVALUEGROUP, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, SYSTEMFIELD)
        values
            (@ID, @NAME, @SMARTFIELDCATALOGID, @SMARTFIELDDATAFORMITEM, @USEVALUEGROUP, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @SYSTEMFIELD);

        exec dbo.USP_SMARTFIELDVALUEGROUP_GETGROUPS_ADDFROMXML @ID, @SMARTFIELDVALUEGROUPS, @CHANGEAGENTID, @CURRENTDATE

        exec dbo.USP_SMARTFIELD_CREATESMARTFIELDTABLE @ID, @CHANGEAGENTID

        --Retrieve the ID of the query view that was created for this smart field.

        declare @QUERYVIEWID uniqueidentifier
        select @QUERYVIEWID=qv.ID
        from SMARTFIELD sf
            join TABLECATALOG t on t.ID=sf.TABLECATALOGID
            join QUERYVIEWCATALOG qv on qv.OBJECTNAME='V_QUERY_' + t.TABLENAME
        where sf.NAME=@NAME
            and qv.DISPLAYNAME=@NAME
            and sf.SMARTFIELDCATALOGID=@SMARTFIELDCATALOGID

        --Grant permission to that query view to each role the current user is in that grants rights to this add form.

        insert into SYSTEMROLEPERM_QUERYVIEW
            (ID,SYSTEMROLEID,QUERYVIEWCATALOGID,GRANTORDENY,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED)
        select newid(),r.SYSTEMROLEID, @QUERYVIEWID,1,@CHANGEAGENTID,@CHANGEAGENTID,@CURRENTDATE,@CURRENTDATE
        from dbo.UFN_APPUSER_GETSYSTEMROLELIST(@CURRENTAPPUSERID) r
            join SYSTEMROLEPERM_DATAFORMINSTANCE p on p.SYSTEMROLEID=r.SYSTEMROLEID
        where p.DATAFORMINSTANCECATALOGID='1441C214-BF50-4701-B4B8-5FD3EBF41577'
    end try

    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

    return 0;