USP_GROUPMEMBERROLE_UPDATEDATESFORGROUP

This stored procedure is used to update dates on all group members roles to fall within the group dates.

Parameters

Parameter Parameter Type Mode Description
@GROUPID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_GROUPMEMBERROLE_UPDATEDATESFORGROUP
            (
                @GROUPID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier = null
            )
            as
                set nocount on;

                declare @CURRENTDATE datetime;
                set @CURRENTDATE = getdate();

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

                update dbo.GROUPMEMBERROLE set
                    STARTDATE = case when GMR.STARTDATE < GROUPMEMBERDATERANGE.DATEFROM then GROUPMEMBERDATERANGE.DATEFROM 
                                    when GMR.STARTDATE < GROUPDATA.STARTDATE then GROUPDATA.STARTDATE
                                    else GMR.STARTDATE end,
                    ENDDATE = case when GMR.ENDDATE > GROUPMEMBERDATERANGE.DATETO then GROUPMEMBERDATERANGE.DATETO
                                when GMR.ENDDATE < GROUPDATA.STARTDATE then GROUPDATA.STARTDATE
                                else GMR.ENDDATE end,
                    DATECHANGED = @CURRENTDATE,
                    CHANGEDBYID = @CHANGEAGENTID
                from dbo.GROUPMEMBERROLE GMR
                inner join dbo.GROUPMEMBER on GROUPMEMBER.ID = GMR.GROUPMEMBERID
                inner join dbo.GROUPMEMBERDATERANGE on GROUPMEMBERDATERANGE.GROUPMEMBERID = GROUPMEMBER.ID
                inner join dbo.GROUPDATA on GROUPDATA.ID = GROUPMEMBER.GROUPID
                where GROUPDATA.ID = @GROUPID

                return 0;