spBulkAddUpdate_Setting

Parameters

Parameter Parameter Type Mode Description
@XML ntext IN
@CMSUSERID int IN

Definition

Copy


CREATE procedure dbo.spBulkAddUpdate_Setting (@XML ntext, @CMSUSERID int = null)
as
begin
    DECLARE @iDoc int
                BEGIN TRANSACTION

                declare @d datetime
                declare @setting table([ID] int
                    [Name] nvarchar(128), 
                    [Value] nvarchar(1024) )

                set @d = getutcdate()
                EXEC sp_xml_preparedocument @iDoc OUTPUT, @XML
                INSERT INTO @setting(
                    [ID],
                    [Name], 
                    [Value]
                ) SELECT
                [ID], [Name], [Value]
                FROM OPENXML (@iDoc, '/Settings/Setting',3
                    WITH(
                        [ID] int,
                        [Name] nvarchar(128),
                        [Value] nvarchar(1024)
                    )

                EXEC sp_xml_removedocument @iDoc

                BEGIN TRY
                    EXEC dbo.USP_GET_KEY_ACCESS 
                    UPDATE @setting  set [Value] = EncryptByKey(Key_GUID('sym_BBInfinity'), [Value]) where [ID] in (7,8,36,37,55,56,77,78,125,115,85,86)
                    CLOSE symmetric key sym_BBInfinity;
                END TRY        
                BEGIN CATCH
                  EXEC dbo.USP_RAISE_ERROR;
                  CLOSE symmetric key sym_BBInfinity;
                  return 1;
                END CATCH


                declare @CHANGEAGENTID uniqueidentifier
                exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

                if @CMSUSERID <= 0
                    set @CMSUSERID = null

          --Remove ForceMFA from @setting. We do not want to save it in DB because it is read from extended properties

        DELETE FROM @setting where id = 174

                UPDATE SETTING
                SET [Name] = t.[Name], Value = t.Value, UpdateDate = getutcdate(),
                CHANGEDBYCMSUSERID = @CMSUSERID, CHANGEDBYID = @CHANGEAGENTID
                FROM @Setting t                
                INNER JOIN Setting s on s.[id]= t.[id] and isnull(t.value,'') <> isnull(s.value,'')
                WHERE t.[ID] not in (9,10,11,12,71,72,118)

                INSERT INTO SETTING(        
                    [ID],
                    [Name], 
                    [Value],
                    [CreateDate],
                    [UpdateDate],
                    [ADDEDBYCMSUSERID],
                    [CHANGEDBYCMSUSERID],
                    [ADDEDBYID],
                    [CHANGEDBYID]
                )
                SELECT
                    [ID],
                    [Name], 
                    [Value],
                    getutcdate(),
                    getutcdate(),
                    @CMSUSERID,
                    @CMSUSERID,
                    @CHANGEAGENTID,
                    @CHANGEAGENTID
                FROM @Setting t
                WHERE t.[ID] not in (9,10,11,12,71,72,118)
                    AND NOT EXISTS (SELECT ID
                                    FROM Setting s
                                    WHERE s.id = t.id)



                ---- Handle BBPS credentials separately

                if exists(select * from @setting t where t.[ID] = 71) AND exists(select * from @setting t where t.[ID] = 72)
                begin                    
                    DECLARE @BBPS_USERNAME nvarchar(100),
                            @BBPS_PASSWORD nvarchar(100);

                    set @BBPS_USERNAME = (select top 1 [Value] from @setting where ID = 71);
                    set @BBPS_PASSWORD = (select top 1 [Value] from @setting where ID = 72);
                    EXEC [dbo].[USP_DATAFORMTEMPLATE_EDIT_BBPSLOGIN] @USERNAME = @BBPS_USERNAME, @PASSWORD = @BBPS_PASSWORD;
                end


                ---- Handle Services configuration separately

                if exists(select * from @setting t where t.[ID] = 9) AND exists(select * from @setting t where t.[ID] = 10) AND exists(select * from @setting t where t.[ID] = 11) AND exists(select * from @setting t where t.[ID] = 12)
                begin                    
                    DECLARE @BBSERVICE_USER nvarchar(2048),
                            @BBSERVICE_PASSWORD nvarchar(2048),
                            @BBSERVICE_HOST nvarchar(2048),
                            @BBSERVICE_USESECURE nvarchar(2048);

                    set @BBSERVICE_HOST = (select top 1 [Value] from @setting where ID = 9);
                    set @BBSERVICE_USER = (select top 1 [Value] from @setting where ID = 10);
                    set @BBSERVICE_PASSWORD = (select top 1 [Value] from @setting where ID = 11);                    
                    set @BBSERVICE_USESECURE = (select top 1 [Value] from @setting where ID = 12);

                    --Enable BBCS

                    declare @TRANSACTIONALPATH nvarchar(2048) = 'Transactional/EmailSubmission/blackbaud/services/EmailSubmissionService.svc'
                    declare @GENERALPURPOSEPATH nvarchar(2048) = 'GeneralPurpose/EmailSubmission/blackbaud/services/EmailSubmissionService.svc'
                    declare @STATUSPATH nvarchar(2048) = 'EmailStatus/blackbaud/services/EmailStatusService.svc' 
                    declare @BINDING nvarchar(256) = '0'
                    declare @USE_BBCS nvarchar(2048) = 'true'


                    EXEC [dbo].[USP_SAVE_EXTERNALSERVICECONFIGURATION] @USER = @BBSERVICE_USER, @PASS = @BBSERVICE_PASSWORD, @HOST = @BBSERVICE_HOST, @USESECURE = @BBSERVICE_USESECURE,
                            @TRANSACTIONALPATH  = @TRANSACTIONALPATH, @GENERALPURPOSEPATH = @GENERALPURPOSEPATH,@STATUSPATH = @STATUSPATH,@BINDING = @BINDING,@USESHAREDSERVICESCOMMSERVICE = @USE_BBCS;
                    EXEC [dbo].[USP_EMAIL_PROCESSINGSCHEDULE_ENABLE] @CHANGEAGENTID;
                end

                COMMIT TRANSACTION
end