USP_DATAFORMTEMPLATE_EDIT_GROUPMEMBER_3
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@STARTDATE | date | IN | |
@ENDDATE | date | IN | |
@COMMENTS | nvarchar(300) | IN | |
@GROUPMEMBERDATERANGEID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_DATAFORMTEMPLATE_EDIT_GROUPMEMBER_3
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@STARTDATE date,
@ENDDATE date,
@COMMENTS nvarchar(300),
@GROUPMEMBERDATERANGEID uniqueidentifier
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime = getdate();
if @STARTDATE > @CURRENTDATE
begin
raiserror ('ERR_STARTDATE_CANNOT_BE_IN_FUTURE', 13, 1);
return 1;
end
if @ENDDATE > @CURRENTDATE
begin
raiserror ('BBERR_ENDDATE_CANNOT_BE_IN_FUTURE', 13, 1);
return 1;
end
declare @GROUPSTARTDATE datetime;
select
@GROUPSTARTDATE = GROUPDATA.STARTDATE
from
dbo.GROUPMEMBER
inner join
dbo.GROUPDATA on GROUPDATA.ID = GROUPMEMBER.GROUPID
where
GROUPMEMBER.ID = @ID
if @STARTDATE is not null and @GROUPSTARTDATE is not null
if @STARTDATE < @GROUPSTARTDATE
begin
raiserror ('ERR_STARTDATE_CANNOT_BE_BEFORE_GROUPSTARTDATE', 13, 1);
return 1;
end
begin try
if @ENDDATE is not null
update dbo.GROUPMEMBER set
ISPRIMARY = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
ID = @ID;
update dbo.GROUPMEMBERDATERANGE set
DATEFROM = @STARTDATE,
DATETO = @ENDDATE,
COMMENTS = @COMMENTS,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where
--Multiple records with non-overlapping date ranges are valid, so we need to use the DateRangeID, not the GroupMemberID.
--GROUPMEMBERID = @ID
ID = @GROUPMEMBERDATERANGEID
exec dbo.USP_GROUPMEMBERROLE_UPDATEDATES @ID, @CHANGEAGENTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;