USP_CLASSMEETINGTEMPLATE_CREATEFROMBLOCK
Creates the class meeting template records using a block template.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CLASSID | uniqueidentifier | IN | |
@PATTERNBLOCKID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_CLASSMEETINGTEMPLATE_CREATEFROMBLOCK
(
@CLASSID uniqueidentifier,
@PATTERNBLOCKID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
declare @TempTbl table (
[ID] uniqueidentifier,
[CLASSMEETINGGROUPID] uniqueidentifier,
[STARTTIME] char(4),
[ENDTIME] char(4),
[CYCLEDAYID] uniqueidentifier,
[TIMETABLEDAYPERIODID] uniqueidentifier,
[LENGTHINPERIODS] int,
ADDRECORD bit)
insert into @TempTbl
(
ID,
CLASSMEETINGGROUPID,
STARTTIME,
ENDTIME,
CYCLEDAYID,
TIMETABLEDAYPERIODID,
LENGTHINPERIODS,
ADDRECORD
)
select
coalesce(CLASSMEETINGTEMPLATE.ID, newid()),
CLASSMEETINGGROUP.ID,
MEETINGS.STARTTIME,
MEETINGS.ENDTIME,
MEETINGS.CYCLEDAYID,
MEETINGS.TIMETABLEDAYPERIODID,
MEETINGS.LENGTHINPERIODS,
case when CLASSMEETINGTEMPLATE.ID is null then 1 else 0 end as ADDRECORD
from
(
select
TIMETABLEDAY.CYCLEDAYID,
PATTERNBLOCKMEETING.STARTTIME,
PATTERNBLOCKMEETING.ENDTIME,
PATTERNBLOCKMEETING.TIMETABLEDAYPERIODID,
PATTERNBLOCKMEETING.LENGTHINPERIODS
from dbo.PATTERNBLOCKMEETING
inner join dbo.TIMETABLEDAY on PATTERNBLOCKMEETING.TIMETABLEDAYID = TIMETABLEDAY.ID
where PATTERNBLOCKMEETING.PATTERNBLOCKID = @PATTERNBLOCKID
) MEETINGS
cross join dbo.CLASSMEETINGGROUP
left join CLASSMEETINGTEMPLATE on
CLASSMEETINGGROUP.ID = CLASSMEETINGTEMPLATE.CLASSMEETINGGROUPID and
(
(MEETINGS.STARTTIME is null and CLASSMEETINGTEMPLATE.STARTTIME is null) or
(MEETINGS.STARTTIME = CLASSMEETINGTEMPLATE.STARTTIME)
) and
(
(MEETINGS.ENDTIME is null and CLASSMEETINGTEMPLATE.ENDTIME is null) or
(MEETINGS.ENDTIME = CLASSMEETINGTEMPLATE.ENDTIME)
) and
MEETINGS.CYCLEDAYID = CLASSMEETINGTEMPLATE.CYCLEDAYID and
(
(MEETINGS.TIMETABLEDAYPERIODID is null and CLASSMEETINGTEMPLATE.TIMETABLEDAYPERIODID is null) or
(MEETINGS.TIMETABLEDAYPERIODID = CLASSMEETINGTEMPLATE.TIMETABLEDAYPERIODID)
) and
(
(MEETINGS.LENGTHINPERIODS is null and CLASSMEETINGTEMPLATE.LENGTHINPERIODS is null) or
(MEETINGS.LENGTHINPERIODS = CLASSMEETINGTEMPLATE.LENGTHINPERIODS)
)
where CLASSMEETINGGROUP.CLASSID = @CLASSID
-- Remove any old entries
delete from dbo.CLASSMEETINGTEMPLATE where CLASSMEETINGTEMPLATE.ID in
(
select CLASSMEETINGTEMPLATE.ID
from dbo.CLASSMEETINGGROUP
inner join dbo.CLASSMEETINGTEMPLATE on CLASSMEETINGGROUP.ID = CLASSMEETINGTEMPLATE.CLASSMEETINGGROUPID
where dbo.CLASSMEETINGGROUP.CLASSID = @CLASSID
except select ID from @TempTbl where ADDRECORD = 0
)
-- Add any new entries
insert into dbo.CLASSMEETINGTEMPLATE
(
ID,
CLASSMEETINGGROUPID,
STARTTIME,
ENDTIME,
CYCLEDAYID,
TIMETABLEDAYPERIODID,
LENGTHINPERIODS,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
ID,
CLASSMEETINGGROUPID,
STARTTIME,
ENDTIME,
CYCLEDAYID,
TIMETABLEDAYPERIODID,
LENGTHINPERIODS,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @TempTbl
where ADDRECORD <> 0
end