USP_DATAFORMTEMPLATE_ADD_EVENTTASK

The save procedure used by the add dataform template "Event Task Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@EVENTID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@OWNERID uniqueidentifier IN Owner
@NAME nvarchar(100) IN Name
@COMPLETEBYDATE datetime IN Date due
@COMMENT nvarchar(250) IN Comment
@SELECTEDEVENTID uniqueidentifier IN Event
@SELECTEDMULTILEVELEVENTID uniqueidentifier IN Event
@REMINDERS xml IN Reminders

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_EVENTTASK
(
    @ID uniqueidentifier = null output,
    @EVENTID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,    
    @OWNERID uniqueidentifier = null,
    @NAME nvarchar(100),
    @COMPLETEBYDATE datetime = null,
    @COMMENT nvarchar(250) = '',
    @SELECTEDEVENTID uniqueidentifier = null,
    @SELECTEDMULTILEVELEVENTID uniqueidentifier = null,
    @REMINDERS xml = null
)
as
begin
    set nocount on;

    declare @CURRENTDATE datetime                                        

    if (@SELECTEDMULTILEVELEVENTID is not null and @SELECTEDMULTILEVELEVENTID <> '00000000-0000-0000-0000-000000000000') and 
        (@SELECTEDEVENTID is not null and @SELECTEDEVENTID <> '00000000-0000-0000-0000-000000000000')
    begin
        raiserror('You cannot specify both event parameters.',13,1);
    end

    if @EVENTID = '18506456-2c54-4cc5-8c15-79a1157d3bd1'
        set @EVENTID = @SELECTEDEVENTID;

    if (@SELECTEDMULTILEVELEVENTID is not null and @SELECTEDMULTILEVELEVENTID <> '00000000-0000-0000-0000-000000000000')
        set @EVENTID = @SELECTEDMULTILEVELEVENTID;

    IF @ID is null
        set @ID = newid()

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

    set @CURRENTDATE = getdate()

    begin try

        if exists (    select 1 from dbo.EVENTMANAGEMENTOPTIONS where EVENTID = @EVENTID and HASTASKSANDCOORDINATORS = 0)
            raiserror('ERR_EVENTCANNOTHAVETASK', 13, 1);

        if exists (    select top 1 * 
                    from dbo.UFN_EVENTTASK_GETREMINDERS_FROMITEMLISTXML(@REMINDERS)
                    where SENDDATE > @COMPLETEBYDATE)
            raiserror('ERR_EVENTTASKREMINDER_SENDDATEEXCEEDSTASKDATE', 13, 1);    

        insert into dbo.EVENTTASK
            (ID, EVENTID, OWNERID, NAME, COMPLETEBYDATE, STATUSCODE, COMMENT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
        VALUES
            (@ID, @EVENTID, @OWNERID, @NAME, @COMPLETEBYDATE, 0, @COMMENT, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)


        -- 'SENT' is not part of the Add's dataform definition.  Set it to 0.

        set @REMINDERS = (
            select
                ID,
                NAME,
                SENDDATE,
                0 as SENT
            from
                dbo.UFN_EVENTTASK_GETREMINDERS_FROMITEMLISTXML(@REMINDERS)
            for xml raw('ITEM'), type, elements, root('REMINDERS'), binary base64
        );

        exec dbo.USP_EVENTTASK_GETREMINDERS_ADDFROMXML @ID, @REMINDERS, @CHANGEAGENTID;

        if @OWNERID is not null
        begin
            declare @OWNERAPPUSERID uniqueidentifier;
            select
                @OWNERAPPUSERID = APPUSER.ID
            from
                dbo.APPUSER
            where
                APPUSER.CONSTITUENTID = @OWNERID;

            if @OWNERAPPUSERID is not null
                exec dbo.USP_ALERTTYPE_SENDTOAPPUSER '6CDB7072-461C-40BF-9C20-6277D16CDA0E', @OWNERAPPUSERID, @ID, @EVENTID;
        end
    end try

    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

    return 0

end