USP_CLASSMEETING_CREATEFROMTEMPLATES
Create the class meetings for a class using the class meeting templates.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CLASSID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_CLASSMEETING_CREATEFROMTEMPLATES
(
@CLASSID 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 (
[CLASSMEETINGID] uniqueidentifier,
[CLASSMEETINGGROUPID] uniqueidentifier,
[EDUCATIONMEETINGID] uniqueidentifier,
[STARTDATE] date,
[ENDDATE] date,
[STARTTIME] char(4),
[ENDTIME] char(4),
ADDRECORD bit)
insert into @TempTbl
(
CLASSMEETINGID,
CLASSMEETINGGROUPID,
EDUCATIONMEETINGID,
STARTDATE,
ENDDATE,
STARTTIME,
ENDTIME,
ADDRECORD
)
select
coalesce(CLASSMEETINGID, newid()),
CLASSMEETINGGROUP.ID,
case when CLASSMEETINGID is not null
then EDUCATIONMEETINGID
else newid()
end,
SCHEDULEDATE.DATE,
SCHEDULEDATE.DATE,
CLASSMEETINGTEMPLATE.STARTTIME,
CLASSMEETINGTEMPLATE.ENDTIME,
case when CLASSMEETINGID is null then 1 else 0 end as ADDRECORD
from dbo.SCHEDULEDATE
inner join dbo.TIMETABLEDAY on SCHEDULEDATE.TIMETABLEDAYID = TIMETABLEDAY.ID
inner join dbo.COURSE on SCHEDULEDATE.SCHOOLID = COURSE.SCHOOLID
inner join dbo.CLASS on COURSE.ID = CLASS.COURSEID
inner join dbo.CLASSMEETINGGROUP on CLASS.ID = CLASSMEETINGGROUP.CLASSID
and SCHEDULEDATE.DATE >= CLASSMEETINGGROUP.STARTDATE
and SCHEDULEDATE.DATE <= CLASSMEETINGGROUP.ENDDATE
inner join dbo.CLASSMEETINGTEMPLATE on CLASSMEETINGGROUP.ID = CLASSMEETINGTEMPLATE.CLASSMEETINGGROUPID
and CLASSMEETINGTEMPLATE.CYCLEDAYID = TIMETABLEDAY.CYCLEDAYID
left join
(select EDUCATIONMEETINGID, CLASSMEETING.ID CLASSMEETINGID, CLASSMEETINGGROUPID, STARTDATE, ENDDATE, STARTTIME, ENDTIME
from dbo.EDUCATIONMEETING
left join dbo.CLASSMEETING on EDUCATIONMEETING.ID = CLASSMEETING.EDUCATIONMEETINGID) MEETING on
SCHEDULEDATE.DATE = MEETING.STARTDATE and
SCHEDULEDATE.DATE = MEETING.ENDDATE and
CLASSMEETINGTEMPLATE.STARTTIME = MEETING.STARTTIME and
CLASSMEETINGTEMPLATE.ENDTIME = MEETING.ENDTIME and
CLASSMEETINGGROUP.ID = MEETING.CLASSMEETINGGROUPID
where SCHEDULEDATE.INSESSION <> 0
and CLASS.ID = @CLASSID
delete from dbo.CLASSMEETING
from dbo.CLASSMEETING
inner join dbo.CLASSMEETINGGROUP on CLASSMEETING.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
left join @TempTbl MEETINGS on CLASSMEETING.ID = MEETINGS.CLASSMEETINGID
where dbo.CLASSMEETINGGROUP.CLASSID = @CLASSID
and MEETINGS.CLASSMEETINGID is null
insert into dbo.EDUCATIONMEETING
(
ID,
STARTDATE,
ENDDATE,
STARTTIME,
ENDTIME,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
EDUCATIONMEETINGID,
STARTDATE,
ENDDATE,
STARTTIME,
ENDTIME,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @TempTbl
where ADDRECORD <> 0
insert into dbo.CLASSMEETING
(
ID,
CLASSMEETINGGROUPID,
EDUCATIONMEETINGID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
CLASSMEETINGID,
CLASSMEETINGGROUPID,
EDUCATIONMEETINGID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @TempTbl
where ADDRECORD <> 0
end