USP_CALENDARCATALOG_CREATEORUPDATE
Adds or updates an Infinity Calendar Spec.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@NAME | nvarchar(100) | IN | |
@DESCRIPTION | nvarchar(255) | IN | |
@CONTEXTRECORDTYPE | nvarchar(255) | IN | |
@CALENDARSPECXML | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_CALENDARCATALOG_CREATEORUPDATE (
@ID uniqueidentifier,
@NAME nvarchar(100),
@DESCRIPTION nvarchar(255),
@CONTEXTRECORDTYPE nvarchar(255),
@CALENDARSPECXML xml,
@CHANGEAGENTID uniqueidentifier = null
) as begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CONTEXTRECORDTYPEID uniqueidentifier;
if len(@CONTEXTRECORDTYPE) > 0
begin
exec dbo.USP_RECORDTYPE_GETID_OR_CREATE_FROMNAME @NAME = @CONTEXTRECORDTYPE, @CHANGEAGENTID = @CHANGEAGENTID, @RECORDTYPEID = @CONTEXTRECORDTYPEID output;
end
if @ID is null or @ID = '00000000-0000-0000-0000-000000000000'
begin
set @ID = newid()
end
if exists(select ID from dbo.CALENDARCATALOG where ID=@ID)
update dbo.CALENDARCATALOG set
ID = @ID,
NAME = @NAME,
DESCRIPTION = @DESCRIPTION,
CONTEXTRECORDTYPEID = @CONTEXTRECORDTYPEID,
CALENDARSPECXML = @CALENDARSPECXML,
CHANGEDBYID = @CHANGEAGENTID
where dbo.CALENDARCATALOG.ID = @ID
else
insert into dbo.CALENDARCATALOG
(
ID,
NAME,
DESCRIPTION,
CONTEXTRECORDTYPEID,
CALENDARSPECXML,
ADDEDBYID,
CHANGEDBYID
)
values
(
@ID,
@NAME,
@DESCRIPTION,
@CONTEXTRECORDTYPEID,
@CALENDARSPECXML,
@CHANGEAGENTID,
@CHANGEAGENTID
)
-- Assign Default Color Styles for calendar specs which do not define them
declare @DATASOURCES_TABLE table
(
ID uniqueidentifier,
COLORSTYLECODEID integer,
[SEQUENCE] integer IDENTITY(1,1)
)
insert into @DATASOURCES_TABLE
(
ID,
COLORSTYLECODEID
)
select
CAST(CAST(item.query('data(@DataListID)') as varchar(36)) as uniqueidentifier) as ID,
COALESCE(
CALENDARDATALISTCOLOR.COLORSTYLECODE,
dbo.UFN_CALENDARCATALOGCOLOR_GETID(CAST(item.query('data(@ColorStyle)') as nvarchar(20)))
) as COLORSTYLECODEID
from dbo.CALENDARCATALOG
cross apply CALENDARSPECXML.nodes('//*:CalendarDataSource') as DataSources(item)
left join CALENDARDATALISTCOLOR on CALENDARCATALOG.ID = CALENDARDATALISTCOLOR.CALENDARCATALOGID
and CAST(item.query('data(@DataListID)') as nvarchar(36)) = CALENDARDATALISTCOLOR.DATALISTID
where dbo.CALENDARCATALOG.ID = @ID
if exists(select ID from @DATASOURCES_TABLE where COLORSTYLECODEID is null)
begin
insert into dbo.CALENDARDATALISTCOLOR
(
CALENDARCATALOGID,
DATALISTID,
COLORSTYLECODE,
ADDEDBYID,
CHANGEDBYID
)
select
@ID,
DATALISTS_WITHOUT_STYLE.ID,
UNUSED_STYLES.ID,
@CHANGEAGENTID,
@CHANGEAGENTID
from (
select DATASOURCES_TABLE.ID, ROW_NUMBER() over (ORDER BY DATASOURCES_TABLE.[SEQUENCE]) as [SEQUENCE]
from @DATASOURCES_TABLE DATASOURCES_TABLE
where DATASOURCES_TABLE.COLORSTYLECODEID is null
) DATALISTS_WITHOUT_STYLE
inner join
(
select COLORSTYLECODE.ID, ROW_NUMBER() over (ORDER BY COLORSTYLECODE.ID) as [SEQUENCE]
from (
SELECT 0 AS ID UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL
SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL
SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
SELECT 15 UNION ALL SELECT 16 UNION ALL SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19
) COLORSTYLECODE
left join @DATASOURCES_TABLE DATASOURCES_TABLE on DATASOURCES_TABLE.COLORSTYLECODEID = COLORSTYLECODE.ID
where DATASOURCES_TABLE.COLORSTYLECODEID is null
) UNUSED_STYLES
on DATALISTS_WITHOUT_STYLE.SEQUENCE = UNUSED_STYLES.SEQUENCE
end
end