USP_DATAFORMTEMPLATE_EDIT_COMMITTEE_2

The save procedure used by the edit dataform template "Committee 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.
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(300) IN Description
@GIVESANONYMOUSLY bit IN Gives anonymously
@PICTURE varbinary IN Image
@PICTURETHUMBNAIL varbinary IN Image thumbnail
@PICTURECHANGED bit IN Picture changed
@WEBADDRESS UDT_WEBADDRESS IN Website
@GROUPTYPEID uniqueidentifier IN Group type
@STARTDATE datetime IN Start date
@CANCOORDINATEEVENTS bit IN Can coordinate events
@CANSOLICITREVENUE bit IN Can solicit revenue and set fundraising goals
@CANSETCOMMITTEEGOALS bit IN Can set committee goals

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_COMMITTEE_2
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @NAME nvarchar(100),
                        @DESCRIPTION nvarchar(300),
                        @GIVESANONYMOUSLY bit,
                        @PICTURE varbinary(max),
                        @PICTURETHUMBNAIL varbinary(max),
                        @PICTURECHANGED bit,
                        @WEBADDRESS dbo.UDT_WEBADDRESS,
                        @GROUPTYPEID uniqueidentifier,
                        @STARTDATE datetime,
                        @CANCOORDINATEEVENTS bit,
                        @CANSOLICITREVENUE bit,
                        @CANSETCOMMITTEEGOALS bit
                    ) as
                        set nocount on;

                        declare @CURRENTDATE datetime;

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

                        set @CURRENTDATE = getdate();

                        if @STARTDATE is not null
                            set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE)

                        if @STARTDATE > @CURRENTDATE
                        begin
                            raiserror('ERR_STARTDATE_IN_FUTURE', 13, 1);
                            return 1;
                        end

                        declare @PREVIOUSSTARTDATE datetime;
                        select @PREVIOUSSTARTDATE = STARTDATE from dbo.GROUPDATA where ID = @ID;

                        begin try
                            if @PICTURECHANGED = 1
                                update 
                                    dbo.[CONSTITUENT]
                                set
                                    [KEYNAME] = @NAME,
                                    [ISORGANIZATION] = 0,
                                    [GIVESANONYMOUSLY] = @GIVESANONYMOUSLY,
                                    [PICTURE] = @PICTURE,
                                    [PICTURETHUMBNAIL] = @PICTURETHUMBNAIL,
                                    [WEBADDRESS] = @WEBADDRESS,
                                    [DATECHANGED] = @CURRENTDATE,
                                    [CHANGEDBYID] = @CHANGEAGENTID
                                where 
                                    [CONSTITUENT].ID = @ID;

                            else
                                update 
                                    dbo.[CONSTITUENT] 
                                set
                                    [KEYNAME] = @NAME,
                                    [ISORGANIZATION] = 0,
                                    [WEBADDRESS] = @WEBADDRESS,
                                    [GIVESANONYMOUSLY] = @GIVESANONYMOUSLY,
                                    [DATECHANGED] = @CURRENTDATE,
                                    [CHANGEDBYID] = @CHANGEAGENTID
                                where 
                                    [CONSTITUENT].ID = @ID;

                            update
                                dbo.GROUPDATA
                            set
                                DESCRIPTION = @DESCRIPTION,
                                GROUPTYPEID = @GROUPTYPEID,
                                STARTDATE = @STARTDATE,
                                DATECHANGED = @CURRENTDATE,
                                CHANGEDBYID = @CHANGEAGENTID
                            where
                                ID = @ID;

                            -- Update member's start date to be equal to the group's start date if the member's start date was

                            -- on or before the previous group start date

                            update
                                dbo.GROUPMEMBERDATERANGE
                            set
                                DATEFROM = @STARTDATE,
                                DATETO = case when DATETO < @STARTDATE then @STARTDATE else DATETO end,
                                DATECHANGED = @CURRENTDATE,
                                CHANGEDBYID = @CHANGEAGENTID
                            where
                                GROUPMEMBERID in (select ID from dbo.GROUPMEMBER where GROUPID = @ID)
                                and ((DATEFROM is null and @PREVIOUSSTARTDATE is null)
                                        or (DATEFROM = @PREVIOUSSTARTDATE)
                                or (DATEFROM < @STARTDATE))

                            --Update the role dates in case the member dates were changed

                            exec dbo.USP_GROUPMEMBERROLE_UPDATEDATESFORGROUP @ID, @CHANGEAGENTID;

                            update
                                dbo.[COMMITTEE]
                            set
                                [CANCOORDINATEEVENTS] = @CANCOORDINATEEVENTS,
                                [CANSOLICITREVENUE] = @CANSOLICITREVENUE,
                                [CHANGEDBYID] = @CHANGEAGENTID,
                                [DATECHANGED] = @CURRENTDATE,
                                [CANSETCOMMITTEEGOALS] = @CANSETCOMMITTEEGOALS
                            where
                                [ID] = @ID;

                            if @@ROWCOUNT = 0
                                insert into dbo.COMMITTEE(ID, CANCOORDINATEEVENTS, CANSOLICITREVENUE, CANSETCOMMITTEEGOALS, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values(@ID, @CANCOORDINATEEVENTS, @CANSOLICITREVENUE, @CANSETCOMMITTEEGOALS, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)

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

                        return 0;