USP_DATAFORMTEMPLATE_ADD_VOLUNTEER

The save procedure used by the add dataform template "Volunteer 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.
@CONSTITUENTID uniqueidentifier IN Record
@EMERGENCYCONTACTNAME nvarchar(100) IN Name
@EMERGENCYCONTACTPHONE nvarchar(100) IN Phone
@SPONSORID uniqueidentifier IN Sponsor

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_VOLUNTEER
                    (
                        @ID uniqueidentifier = null output,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @CONSTITUENTID uniqueidentifier = null,    
                        @EMERGENCYCONTACTNAME nvarchar(100) = null,
                        @EMERGENCYCONTACTPHONE nvarchar(100) = null,
                        @SPONSORID uniqueidentifier = null
                    )
                    as
                        set nocount on;

                        declare @CURRENTDATE datetime;

                        set @ID = @CONSTITUENTID;

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

                        set @CURRENTDATE = getdate();

                        declare @CURRENTDATEEARLIESTTIME datetime;
                        set @CURRENTDATEEARLIESTTIME = dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE);

                        begin try
                            if exists (select 1 from dbo.VOLUNTEER where ID = @ID)
                                update dbo.VOLUNTEER set
                                    SPONSORID = @SPONSORID,
                                    EMERGENCYCONTACTNAME = @EMERGENCYCONTACTNAME,
                                    EMERGENCYCONTACTPHONE = @EMERGENCYCONTACTPHONE,
                                    CHANGEDBYID = @CHANGEAGENTID,
                                    DATECHANGED = @CURRENTDATE
                                where
                                    ID = @ID
                                    and 
                                    (
                                        SPONSORID <> @SPONSORID
                                        or
                                        EMERGENCYCONTACTNAME <> @EMERGENCYCONTACTNAME
                                        or
                                        EMERGENCYCONTACTPHONE <> @EMERGENCYCONTACTPHONE
                                    );
                            else
                                insert into dbo.VOLUNTEER(ID, SPONSORID, EMERGENCYCONTACTNAME, EMERGENCYCONTACTPHONE, 
                                                            ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values(@ID, @SPONSORID, @EMERGENCYCONTACTNAME, @EMERGENCYCONTACTPHONE,
                                        @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

                            --Clean up old dates

                            declare @contextCache varbinary(128);
                            /* cache current context information */
                            set @contextCache = CONTEXT_INFO();
                            /* set CONTEXT_INFO to @CHANGEAGENTID */
                            if not @CHANGEAGENTID is null
                                set CONTEXT_INFO @CHANGEAGENTID

                            delete
                                dbo.VOLUNTEERDATERANGE
                            where
                                CONSTITUENTID = @ID and
                                (DATEFROM >= @CURRENTDATEEARLIESTTIME or DATETO is null);

                            /* reset CONTEXT_INFO to previous value */
                            if not @contextCache is null
                                set CONTEXT_INFO @contextCache

                            --Insert new dates

                            insert into dbo.VOLUNTEERDATERANGE
                            (
                                CONSTITUENTID,
                                DATEFROM,
                                DATETO,
                                ADDEDBYID,
                                CHANGEDBYID,
                                DATEADDED,
                                DATECHANGED
                            )
                            values
                            (
                                @ID,
                                @CURRENTDATEEARLIESTTIME,
                                null,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            );
                        end try

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

                        return 0;