USP_SYNCTEMPSOCIALMEDIAACCOUNTS
Definition
Copy
CREATE procedure dbo.USP_SYNCTEMPSOCIALMEDIAACCOUNTS
as
begin
declare @userConstitIDs table
(
ID uniqueidentifier,
CSMAID uniqueidentifier
);
declare @INFOSOURCECODEID uniqueidentifier
select @INFOSOURCECODEID = [INFOSOURCECODEID] from [NETCOMMUNITYDEFAULTCODEMAP]
declare @CHANGEAGENTID uniqueidentifier;
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
--Adding all users which are linked to constituents with data in CMSUSERSOCIALMEDIAACCOUNT to temp table
insert into @userConstitIDs (ID, CSMAID)
select C.ID as ID, CSMA.ID as CSMAID
from dbo.clientusers CU
inner join dbo.backofficesystemusers BOSU on BOSU.ClientUsersID = CU.ID
inner join dbo.backofficesystempeople BOSP on BOSP.ID = BOSU.Backofficepeopleid
inner join dbo.CONSTITUENT C on C.SEQUENCEID = BOSP.BackOfficeRecordID
inner join dbo.CMSUSERSOCIALMEDIAACCOUNT CSMA on CU.ID = CSMA.ClientUserID
where CU.deleted = 0 and BOSU.[Current] = 1 and BOSP.BackOfficeSystemID = 0;
if @INFOSOURCECODEID is not null
begin
--Merging temp table data with Constituent SOCIALMEDIAACCOUNT
merge dbo.SOCIALMEDIAACCOUNT AS target
using (
select UCID.ID as CONSTITUENTID, CSMA.SOCIALMEDIASERVICEID, CSMA.USERID, CSMA.URL, @INFOSOURCECODEID as INFOSOURCECODEID
from @userConstitIDs UCID
inner join dbo.CMSUSERSOCIALMEDIAACCOUNT CSMA on UCID.CSMAID = CSMA.ID
) as source
on (target.CONSTITUENTID = source.CONSTITUENTID and target.SOCIALMEDIASERVICEID = source.SOCIALMEDIASERVICEID and target.INFOSOURCECODEID = source.INFOSOURCECODEID)
when matched then
update set USERID = source.USERID, URL = source.URL
when not matched then
INSERT (CONSTITUENTID, SOCIALMEDIASERVICEID, USERID, URL, INFOSOURCECODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
VALUES (source.CONSTITUENTID, source.SOCIALMEDIASERVICEID, source.USERID, source.URL, @INFOSOURCECODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
else
begin
merge dbo.SOCIALMEDIAACCOUNT AS target
using (
select UCID.ID as CONSTITUENTID, CSMA.SOCIALMEDIASERVICEID, CSMA.USERID, CSMA.URL, @INFOSOURCECODEID as INFOSOURCECODEID
from @userConstitIDs UCID
inner join dbo.CMSUSERSOCIALMEDIAACCOUNT CSMA on UCID.CSMAID = CSMA.ID
) as source
on (target.CONSTITUENTID = source.CONSTITUENTID and target.SOCIALMEDIASERVICEID = source.SOCIALMEDIASERVICEID and target.INFOSOURCECODEID is null and target.URL = source.URL and target.USERID = source.USERID)
when not matched then
INSERT (CONSTITUENTID, SOCIALMEDIASERVICEID, USERID, URL, INFOSOURCECODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
VALUES (source.CONSTITUENTID, source.SOCIALMEDIASERVICEID, source.USERID, source.URL, @INFOSOURCECODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
--Removing merged data from temp storage table
delete dbo.CMSUSERSOCIALMEDIAACCOUNT
from dbo.CMSUSERSOCIALMEDIAACCOUNT CSMA
inner join @userConstitIDs UCID on UCID.CSMAID = CSMA.ID
end