USP_ADDUPDATE_CONTACTCONSENT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@SOLICITCODES | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_ADDUPDATE_CONTACTCONSENT
(
@ID uniqueidentifier,
@SOLICITCODES xml
)
as
if @SOLICITCODES is not null
begin
declare @CHANGEAGENTID UNIQUEIDENTIFIER;
exec dbo.Usp_changeagent_getorcreatechangeagent @CHANGEAGENTID OUTPUT;
declare @DATE datetime
set @DATE = Getdate()
-- address the auto end date issues for consent based SC
exec USP_CONSTITUENTSOLICITCODE_ADJUSTSOLICITCODEDATERANGES @ID, @SOLICITCODES, @CHANGEAGENTID;
begin try
-- If two consents are added on same date, then it will update row and date with latest one.
with UPDATEROWS as
(
select CONSTITUENTSOLICITCODE.ID CONSTITUENTSOLICITCODEID,
solicitinput.SOLICITCODEID,
case when solicitinput.STARTDATE = '0001-01-01' then null
else solicitinput.STARTDATE
end as STARTDATE,
case when solicitinput.ENDDATE = '0001-01-01' then null
else solicitinput.ENDDATE
end as ENDDATE,
solicitinput.COMMENTS,
solicitinput.CONSENTPREFERENCECODE,
solicitinput.SOURCECODEID,
solicitinput.SOURCEFILEPATH,
solicitinput.PRIVACYPOLICYFILEPATH,
solicitinput.SUPPORTINGINFORMATION,
solicitinput.CONSENTSTATEMENT
from dbo.UFN_CONSTITUENTUPDATE_GETSOLICITCODES_FROMITEMLISTXML(@SOLICITCODES) solicitinput
inner join dbo.CONSTITUENTSOLICITCODE on solicitinput.SOLICITCODEID = CONSTITUENTSOLICITCODE.SOLICITCODEID
inner join dbo.SOLICITCODE on CONSTITUENTSOLICITCODE.SOLICITCODEID = SOLICITCODE.ID
where
CONSTITUENTSOLICITCODE.CONSTITUENTID = @ID
and (solicitinput.STARTDATE = '0001-01-01' or [dbo].[UFN_DATE_GETEARLIESTTIME](CONSTITUENTSOLICITCODE.STARTDATE) = [dbo].[UFN_DATE_GETEARLIESTTIME](solicitinput.STARTDATE))
and (CONSTITUENTSOLICITCODE.ENDDATE is null or SOLICITCODE.CONSENTCODE =0)
)
update dbo.CONSTITUENTSOLICITCODE
set
STARTDATE = UPDATEROWS.STARTDATE,
ENDDATE = UPDATEROWS.ENDDATE,
CONSENTPREFERENCECODE = UPDATEROWS.CONSENTPREFERENCECODE,
SOURCECODEID = case
when UPDATEROWS.SOURCECODEID = '00000000-0000-0000-0000-000000000000' then null
else UPDATEROWS.SOURCECODEID
end,
SOURCEFILEPATH =UPDATEROWS.SOURCEFILEPATH,
CONSENTSTATEMENT = UPDATEROWS.CONSENTSTATEMENT,
PRIVACYPOLICYFILEPATH = UPDATEROWS.PRIVACYPOLICYFILEPATH,
SUPPORTINGINFORMATION = UPDATEROWS.SUPPORTINGINFORMATION,
DATECHANGED = @DATE,
CHANGEDBYID = @CHANGEAGENTID
from UPDATEROWS
where
CONSTITUENTSOLICITCODE.ID = UPDATEROWS.CONSTITUENTSOLICITCODEID
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
-- This will insert new consent into constituentsolicitcoe table
insert into CONSTITUENTSOLICITCODE (
ID,
CONSTITUENTID,
SOLICITCODEID,
SEQUENCE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
STARTDATE,
COMMENTS,
CONSENTPREFERENCECODE,
SOURCECODEID,
SOURCEFILEPATH,
PRIVACYPOLICYFILEPATH,
SUPPORTINGINFORMATION,
CONSENTSTATEMENT)
select
newid(),
@ID,
solicit.SOLICITCODEID,
solicit.SEQUENCE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@DATE,
@DATE,
case
when solicit.STARTDATE = '0001-01-01' then null
else solicit.STARTDATE
end,
solicit.COMMENTS,
solicit.CONSENTPREFERENCECODE,
case
when solicit.SOURCECODEID = '00000000-0000-0000-0000-000000000000' then null
else solicit.SOURCECODEID
end,
solicit.SOURCEFILEPATH,
solicit.PRIVACYPOLICYFILEPATH,
solicit.SUPPORTINGINFORMATION,
solicit.CONSENTSTATEMENT
from dbo.UFN_CONSTITUENTUPDATE_GETSOLICITCODES_FROMITEMLISTXML(@SOLICITCODES) solicit
where solicit.SOLICITCODEID not in (select SOLICITCODEID from CONSTITUENTSOLICITCODE where CONSTITUENTID = @ID and ENDDATE is null )
and solicit.ENDDATE = '0001-01-01'
end