USP_BBNC_COMMITPROFILEUPDATEEMAILBYID
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@EMAILADDRESSTYPECODEID | uniqueidentifier | IN | |
@EMAILADDRESS | nvarchar(100) | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_BBNC_COMMITPROFILEUPDATEEMAILBYID
(
@ID uniqueidentifier = null,
@CONSTITUENTID uniqueidentifier = null,
@EMAILADDRESSTYPECODEID uniqueidentifier = null,
@EMAILADDRESS nvarchar(100) = '',
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null
)
as
set nocount on;
declare @SEQUENCE int;
declare @PRIMARY bit;
declare @EMAILADDRESSCOUNT int;
declare @STARTDATE datetime;
declare @ENDDATE datetime;
if @CONSTITUENTID is null
begin
raiserror('The constituent ID is required',16,1);
return -2;
end
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
if @STARTDATE is null
set @STARTDATE = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0);
if @ENDDATE is null
set @ENDDATE = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0);
declare @DEFAULTEMAILADDRESSTYPECODEID uniqueidentifier;
select top (1)
@DEFAULTEMAILADDRESSTYPECODEID = [EMAILADDRESSTYPECODEID]
from
dbo.NETCOMMUNITYDEFAULTCODEMAP;
declare @INFOSOURCECODEID uniqueidentifier;
select top (1)
@INFOSOURCECODEID = [INFOSOURCECODEID]
from
dbo.NETCOMMUNITYDEFAULTCODEMAP;
declare @NULLVALUE uniqueidentifier = newid();
begin try
if @ID is not null
begin
-- check from USP_DATAFORMTEMPLATE_EDIT_EMAILADDRESS_5
-- #428270 Check to see if there are duplicate email addresses. Same email address type and same email address
if not exists (select 'X' from dbo.EMAILADDRESS a
inner join dbo.EMAILADDRESS a2 on a2.CONSTITUENTID = a.CONSTITUENTID and a2.ID <> @ID
where (coalesce(a.EMAILADDRESS,'') <> coalesce(@EMAILADDRESS,'')
or coalesce(a.EMAILADDRESSTYPECODEID,@NULLVALUE) <> coalesce(@EMAILADDRESSTYPECODEID,@NULLVALUE))
and a.ID = @ID
and a2.ENDDATE is null and a2.DONOTEMAIL = 0
and coalesce(a2.EMAILADDRESS,'') = coalesce(@EMAILADDRESS,'')
and coalesce(a2.EMAILADDRESSTYPECODEID,@NULLVALUE) = coalesce(@EMAILADDRESSTYPECODEID,@NULLVALUE))
begin
select @SEQUENCE = max([SEQUENCE])
from dbo.EMAILADDRESS
where [CONSTITUENTID] = @CONSTITUENTID;
set @PRIMARY = 1
if @SEQUENCE is null
begin
set @SEQUENCE = 1
end
-- Check the same as USP_DATAFORMTEMPLATE_ADD_EMAILADDRESS!
-- #428270 Check to see if there are duplicate email addresses. Same email address type and same email address
select
@EMAILADDRESSCOUNT = count(*)
from
dbo.EMAILADDRESS
where
ENDDATE is null
and DONOTEMAIL = 0
and CONSTITUENTID = @CONSTITUENTID
and coalesce(EMAILADDRESS,'') = coalesce(@EMAILADDRESS,'')
and coalesce(EMAILADDRESSTYPECODEID,@NULLVALUE) = coalesce(@EMAILADDRESSTYPECODEID,@NULLVALUE);
if (@EMAILADDRESSCOUNT = 0)
begin
--action the update
update dbo.EMAILADDRESS set
[ISPRIMARY] = 0,
[DONOTEMAIL] = 1,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE,
[ENDDATE] = @ENDDATE
where
[CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1;
insert into dbo.EMAILADDRESS
(
[ID],
[CONSTITUENTID],
[EMAILADDRESSTYPECODEID],
[EMAILADDRESS],
[ISPRIMARY],
[SEQUENCE],
[INFOSOURCECODEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED],
[STARTDATE]
)
values
(
newid(),
@CONSTITUENTID,
coalesce(@EMAILADDRESSTYPECODEID, @DEFAULTEMAILADDRESSTYPECODEID),
@EMAILADDRESS,
@PRIMARY,
@SEQUENCE + 1,
@INFOSOURCECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
@STARTDATE
);
end
end;
end
else
begin
select @SEQUENCE = max([SEQUENCE])
from dbo.EMAILADDRESS
where [CONSTITUENTID] = @CONSTITUENTID;
set @PRIMARY = 1
if @SEQUENCE is null
begin
set @SEQUENCE = 1
end
-- Check the same as USP_DATAFORMTEMPLATE_ADD_EMAILADDRESS!
-- #428270 Check to see if there are duplicate email addresses. Same email address type and same email address
select
@EMAILADDRESSCOUNT = count(*)
from
dbo.EMAILADDRESS
where
ENDDATE is null
and DONOTEMAIL = 0
and CONSTITUENTID = @CONSTITUENTID
and coalesce(EMAILADDRESS,'') = coalesce(@EMAILADDRESS,'')
and coalesce(EMAILADDRESSTYPECODEID,@NULLVALUE) = coalesce(@EMAILADDRESSTYPECODEID,@NULLVALUE);
if (@EMAILADDRESSCOUNT = 0)
begin
update dbo.EMAILADDRESS set
[ISPRIMARY] = 0,
[DONOTEMAIL] = 1,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CHANGEDATE,
[ENDDATE] = @ENDDATE
where
[CONSTITUENTID] = @CONSTITUENTID and [ISPRIMARY] = 1;
insert into dbo.EMAILADDRESS
(
[ID],
[CONSTITUENTID],
[EMAILADDRESSTYPECODEID],
[EMAILADDRESS],
[ISPRIMARY],
[SEQUENCE],
[INFOSOURCECODEID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED],
[STARTDATE]
)
values
(
newid(),
@CONSTITUENTID,
coalesce(@EMAILADDRESSTYPECODEID, @DEFAULTEMAILADDRESSTYPECODEID),
@EMAILADDRESS,
@PRIMARY,
@SEQUENCE + 1,
@INFOSOURCECODEID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
@STARTDATE
);
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;