USP_MKTRECORDSOURCE_EDITSAVE
Save the information to MKTRECORDSOURCE.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@QUERYVIEWCATALOGID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@SELECTED | bit | IN | |
@MARKETINGINFOQUERYVIEWCATALOGID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTRECORDSOURCE_EDITSAVE]
(
@QUERYVIEWCATALOGID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@SELECTED bit,
@MARKETINGINFOQUERYVIEWCATALOGID uniqueidentifier
)
as
set nocount on;
declare @CURRENTDATE datetime;
begin try
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
set @CURRENTDATE = GetDate();
if @SELECTED = 0 /* Not selected, so remove the record source */
begin
declare @DUPLICATEID uniqueidentifier;
declare @CONSTITUENTMARKETINGINFOQUERYVIEWCATALOGID uniqueidentifier;
declare @REVENUEMARKETINGINFOQUERYVIEWCATALOGID uniqueidentifier;
declare @SEARCHLISTCATALOGID uniqueidentifier;
declare @TRANSLATIONFUNCTIONCATALOGID uniqueidentifier;
declare @LOADSPECLOGID uniqueidentifier;
declare @TABLENAME nvarchar(128);
declare @VIEWNAME nvarchar(128);
declare @TABLECATALOGID uniqueidentifier;
/* Delete the duplicate criteria */
select @DUPLICATEID = [ID]
from dbo.[MKTDUPLICATE]
where [QUERYVIEWCATALOGID] = @QUERYVIEWCATALOGID;
exec dbo.[USP_MKTDUPLICATE_DELETEBYID_WITHCHANGEAGENTID] @DUPLICATEID, @CHANGEAGENTID;
/* Delete the list layouts */
declare @LISTLAYOUTID uniqueidentifier;
declare LAYOUTCURSOR cursor local fast_forward for
select [ID]
from dbo.[MKTLISTLAYOUT]
where [RECORDSOURCEID] = @QUERYVIEWCATALOGID;
open LAYOUTCURSOR;
fetch next from LAYOUTCURSOR into @LISTLAYOUTID;
while (@@FETCH_STATUS = 0)
begin
exec dbo.[USP_MKTLISTLAYOUT_DELETEBYID_WITHCHANGEAGENTID] @LISTLAYOUTID, @CHANGEAGENTID;
fetch next from LAYOUTCURSOR into @LISTLAYOUTID;
end
close LAYOUTCURSOR;
deallocate LAYOUTCURSOR;
/* Drop the Source Analysis data */
declare @SOURCEANALYSISRULEID uniqueidentifier;
select @SOURCEANALYSISRULEID = [ID]
from dbo.[MKTSOURCEANALYSISRULES]
where [RECORDSOURCEID] = @QUERYVIEWCATALOGID;
exec dbo.[USP_MKTSOURCEANALYSISRULES_DELETEBYID_WITHCHANGEAGENTID] @SOURCEANALYSISRULEID, @CHANGEAGENTID;
set @TABLENAME = dbo.[UFN_MKTSOURCEANALYSISRULEEXCLUSION_MAKETABLENAME](@QUERYVIEWCATALOGID);
if exists(select 1 from sys.tables where name = @TABLENAME)
exec ('drop table dbo.[' + @TABLENAME + ']');
set @TABLENAME = dbo.[UFN_MKTSOURCEANALYSISRULE_MAKETABLENAME](@QUERYVIEWCATALOGID);
if exists(select 1 from sys.tables where name = @TABLENAME)
exec ('drop table dbo.[' + @TABLENAME + ']');
/* Delete any smart fields tied to this record source */
declare @SMARTFIELDID uniqueidentifier;
declare @SMARTFIELDCATALOGID uniqueidentifier;
declare SMARTFIELDCURSOR cursor local fast_forward for
select
[SMARTFIELD].[ID] as [SMARTFIELDID],
[SMARTFIELDCATALOG].[ID] as [SMARTFIELDCATALOGID],
[SMARTFIELD].[TABLECATALOGID]
from dbo.[SMARTFIELDCATALOG]
inner join dbo.[RECORDTYPE] on [SMARTFIELDCATALOG].[RECORDTYPEID] = [RECORDTYPE].[ID]
inner join dbo.[QUERYVIEWCATALOG] on [RECORDTYPE].[ID] = [QUERYVIEWCATALOG].[RECORDTYPEID]
inner join dbo.[MKTRECORDSOURCE] on [QUERYVIEWCATALOG].[ID] = [MKTRECORDSOURCE].[ID]
left outer join dbo.[SMARTFIELD] on [SMARTFIELDCATALOG].[ID] = [SMARTFIELD].[SMARTFIELDCATALOGID]
where [MKTRECORDSOURCE].[ID] = @QUERYVIEWCATALOGID;
open SMARTFIELDCURSOR;
fetch next from SMARTFIELDCURSOR into @SMARTFIELDID, @SMARTFIELDCATALOGID, @TABLECATALOGID;
while @@FETCH_STATUS = 0
begin
if @SMARTFIELDID is not null
begin
exec dbo.[USP_SMARTFIELD_DELETE] @SMARTFIELDID, @CHANGEAGENTID;
exec dbo.[USP_SMARTFIELD_DELETEBYID_WITHCHANGEAGENTID] @SMARTFIELDID;
end
exec dbo.[USP_SMARTFIELDCATALOG_DELETEBYID_WITHCHANGEAGENTID] @SMARTFIELDCATALOGID;
if @TABLECATALOGID is not null
exec dbo.[USP_TABLECATALOG_DELETEBYID_WITHCHANGEAGENTID] @TABLECATALOGID, @CHANGEAGENTID;
fetch next from SMARTFIELDCURSOR into @SMARTFIELDID, @SMARTFIELDCATALOGID, @TABLECATALOGID;
end
close SMARTFIELDCURSOR;
deallocate SMARTFIELDCURSOR;
/* Delete the record source, then we need to drop the code generated appeal search screen and translation function. */
/* Since these are both CLR implementations, we don't need to worry about dropping any stored procedures. */
/* Also need to delete the code generated marketing information query view specs and drop the views for each too. */
select
@CONSTITUENTMARKETINGINFOQUERYVIEWCATALOGID = [MKTRECORDSOURCE].[MARKETINGINFOQUERYVIEWCATALOGID],
@REVENUEMARKETINGINFOQUERYVIEWCATALOGID = [MKTGIFTRECORDSOURCE].[MARKETINGINFOQUERYVIEWCATALOGID],
@SEARCHLISTCATALOGID = [MKTAPPEALRECORDSOURCE].[SEARCHLISTCATALOGID],
@TRANSLATIONFUNCTIONCATALOGID = [MKTAPPEALRECORDSOURCE].[TRANSLATIONFUNCTIONCATALOGID]
from dbo.[MKTRECORDSOURCE]
left join dbo.[MKTGIFTRECORDSOURCE] on [MKTGIFTRECORDSOURCE].[ID] = [MKTRECORDSOURCE].[ID]
left join dbo.[MKTAPPEALRECORDSOURCE] on [MKTAPPEALRECORDSOURCE].[ID] = [MKTRECORDSOURCE].[ID]
where [MKTRECORDSOURCE].[ID] = @QUERYVIEWCATALOGID;
exec dbo.[USP_MKTRECORDSOURCE_DELETEBYID_WITHCHANGEAGENTID] @QUERYVIEWCATALOGID, @CHANGEAGENTID;
if @CONSTITUENTMARKETINGINFOQUERYVIEWCATALOGID is not null
begin
select
@VIEWNAME = [OBJECTNAME],
@LOADSPECLOGID = [LOADSPECLOG].[ID]
from dbo.[QUERYVIEWCATALOG]
inner join dbo.[LOADSPECLOG] on [LOADSPECLOG].[SPECID] = [QUERYVIEWCATALOG].[ID]
where [QUERYVIEWCATALOG].[ID] = @CONSTITUENTMARKETINGINFOQUERYVIEWCATALOGID;
--Delete the query view catalog item...
exec dbo.[USP_QUERYVIEW_DELETEADDEDBYRELATIONSHIPS] @CONSTITUENTMARKETINGINFOQUERYVIEWCATALOGID, @CHANGEAGENTID;
exec dbo.[USP_QUERYVIEWCATALOG_DELETEBYID_WITHCHANGEAGENTID] @CONSTITUENTMARKETINGINFOQUERYVIEWCATALOGID, @CHANGEAGENTID;
exec dbo.[USP_LOADSPECLOG_DELETEBYID_WITHCHANGEAGENTID] @LOADSPECLOGID, @CHANGEAGENTID;
--Drop the view
exec ('drop view dbo.[' + @VIEWNAME + ']');
end
if @REVENUEMARKETINGINFOQUERYVIEWCATALOGID is not null
begin
select
@VIEWNAME = [OBJECTNAME],
@LOADSPECLOGID = [LOADSPECLOG].[ID]
from dbo.[QUERYVIEWCATALOG]
inner join dbo.[LOADSPECLOG] on [LOADSPECLOG].[SPECID] = [QUERYVIEWCATALOG].[ID]
where [QUERYVIEWCATALOG].[ID] = @REVENUEMARKETINGINFOQUERYVIEWCATALOGID;
--Delete the query view catalog item...
exec dbo.[USP_QUERYVIEW_DELETEADDEDBYRELATIONSHIPS] @REVENUEMARKETINGINFOQUERYVIEWCATALOGID, @CHANGEAGENTID;
exec dbo.[USP_QUERYVIEWCATALOG_DELETEBYID_WITHCHANGEAGENTID] @REVENUEMARKETINGINFOQUERYVIEWCATALOGID, @CHANGEAGENTID;
exec dbo.[USP_LOADSPECLOG_DELETEBYID_WITHCHANGEAGENTID] @LOADSPECLOGID, @CHANGEAGENTID;
--Drop the view
exec ('drop view dbo.[' + @VIEWNAME + ']');
end
if @SEARCHLISTCATALOGID is not null
begin
select @LOADSPECLOGID = [ID]
from dbo.[LOADSPECLOG]
where [SPECID] = @SEARCHLISTCATALOGID;
exec dbo.[USP_SEARCHLISTCATALOG_DELETEBYID_WITHCHANGEAGENTID] @SEARCHLISTCATALOGID, @CHANGEAGENTID;
exec dbo.[USP_LOADSPECLOG_DELETEBYID_WITHCHANGEAGENTID] @LOADSPECLOGID, @CHANGEAGENTID;
end
if @TRANSLATIONFUNCTIONCATALOGID is not null
begin
select @LOADSPECLOGID = [ID]
from dbo.[LOADSPECLOG]
where [SPECID] = @TRANSLATIONFUNCTIONCATALOGID;
exec dbo.[USP_TRANSLATIONFUNCTIONCATALOG_DELETEBYID_WITHCHANGEAGENTID] @TRANSLATIONFUNCTIONCATALOGID, @CHANGEAGENTID;
exec dbo.[USP_LOADSPECLOG_DELETEBYID_WITHCHANGEAGENTID] @LOADSPECLOGID, @CHANGEAGENTID;
end
/* Drop the REVENUESEGMENT and CONSTITUENTSEGMENT tables for this record source */
set @TABLENAME = dbo.[UFN_REVENUESEGMENT_MAKETABLENAME](@QUERYVIEWCATALOGID);
if exists(select 1 from sys.tables where name = @TABLENAME)
exec ('drop table dbo.[' + @TABLENAME + ']');
set @TABLENAME = dbo.[UFN_CONSTITUENTSEGMENT_MAKETABLENAME](@QUERYVIEWCATALOGID);
if exists(select 1 from sys.tables where name = @TABLENAME)
exec ('drop table dbo.[' + @TABLENAME + ']');
/* Make sure we don't drop BBEC's tables... */
if dbo.[UFN_MKTRECORDSOURCE_VALIDFORBBEC](@QUERYVIEWCATALOGID) = 0
begin
/* Drop the MKTREVENUELETTER and MKTREVENUERECEIPT tables for this record source and update the views */
set @TABLENAME = dbo.[UFN_MKTREVENUELETTER_MAKETABLENAME](@QUERYVIEWCATALOGID);
if exists(select 1 from sys.tables where name = @TABLENAME)
begin
select
@TABLECATALOGID = [ID]
from dbo.[TABLECATALOG]
where [TABLENAME] = @TABLENAME;
exec ('drop table dbo.[' + @TABLENAME + ']');
exec dbo.[USP_TABLECATALOG_DELETEBYID_WITHCHANGEAGENTID] @TABLECATALOGID, @CHANGEAGENTID;
end
set @TABLENAME = dbo.[UFN_MKTREVENUERECEIPT_MAKETABLENAME](@QUERYVIEWCATALOGID);
if exists(select 1 from sys.tables where name = @TABLENAME)
begin
select
@TABLECATALOGID = [ID]
from dbo.[TABLECATALOG]
where [TABLENAME] = @TABLENAME;
exec ('drop table dbo.[' + @TABLENAME + ']');
exec dbo.[USP_TABLECATALOG_DELETEBYID_WITHCHANGEAGENTID] @TABLECATALOGID, @CHANGEAGENTID;
end
end
exec dbo.[USP_MKTREVENUELETTER_CREATEORUPDATEVIEWS];
exec dbo.[USP_MKTREVENUERECEIPT_CREATEORUPDATEVIEWS];
end
else
begin
if not exists(select [ID] from dbo.[MKTRECORDSOURCE] where [ID] = @QUERYVIEWCATALOGID)
begin
/* Selected, but not in the table yet */
insert into dbo.[MKTRECORDSOURCE] (
[ID],
[MARKETINGINFOQUERYVIEWCATALOGID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
) values (
@QUERYVIEWCATALOGID,
@MARKETINGINFOQUERYVIEWCATALOGID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
/* create source analysis rule */
declare @RULEID uniqueidentifier;
set @RULEID = NewID();
insert dbo.[MKTSOURCEANALYSISRULES] (
[ID],
[RECORDSOURCEID],
[ADDEDBYID],
[CHANGEDBYID]
) values (
@RULEID,
@QUERYVIEWCATALOGID,
@CHANGEAGENTID,
@CHANGEAGENTID
);
/* Create the source analysis rule data table for this record source */
exec dbo.[USP_MKTSOURCEANALYSISRULE_CREATEDATATABLE] @QUERYVIEWCATALOGID;
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;