USP_DATAFORMTEMPLATE_EDIT_VOLUNTEERAVAILABILITY

The save procedure used by the edit dataform template "Volunteer Availability Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@AVAILABILITIES xml IN Availabilities

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_VOLUNTEERAVAILABILITY
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier,    
                        @AVAILABILITIES XML
                    )
                    as
                        set nocount on;

                        declare @CURRENTDATE datetime;

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

                        set @CURRENTDATE = getdate();

                        begin try
                            exec dbo.USP_VOLUNTEER_GETAVAILABILITIES_UPDATEFROMXML @ID, @AVAILABILITIES, @CHANGEAGENTID;

                            -- Fix up dates for backwards compatibility (custom code doesn't have a value for full start/end date)

                            update dbo.VOLUNTEERAVAILABILITY
                            set
                                FULLSTARTDATE = coalesce(FULLSTARTDATE, cast((cast(datepart(yyyy, getdate()) as nvarchar(4)) + STARTDATE) as date)),
                                FULLENDDATE = coalesce
                                    (
                                        FULLENDDATE,
                                        case
                                            when cast(left(ENDDATE, 2) as int) < cast(left(STARTDATE, 2) as int) -- start and end are in separate years

                                                then cast((cast((datepart(yyyy, getdate())) + 1 as nvarchar(4)) + ENDDATE) as date)
                                            else cast((cast(datepart(yyyy, getdate()) as nvarchar(4)) + ENDDATE) as date
                                        end
                                    ),
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where
                                VOLUNTEERAVAILABILITY.VOLUNTEERID = @ID
                                and 
                                (
                                    VOLUNTEERAVAILABILITY.FULLSTARTDATE is null
                                    or VOLUNTEERAVAILABILITY.FULLENDDATE is null
                                );

                        end try

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

                        return 0;