USP_PATTERNBLOCKMEETING_TIMES_UPDATE
Refreshes times on a pattern block meeting for a given timetable day
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@TIMETABLEDAYID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure [dbo].[USP_PATTERNBLOCKMEETING_TIMES_UPDATE]
(
@TIMETABLEDAYID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null
)
as begin
set nocount on;
declare @TempTbl table (
[PATTERNBLOCKMEETINGID] uniqueidentifier,
[LENGTHINPERIODS] integer)
insert into @TempTbl select
[ID],
dbo.UFN_PATTERNBLOCKMEETING_GETVALID_LENGTHINPERIODS (PATTERNBLOCKMEETING.TIMETABLEDAYPERIODID, PATTERNBLOCKMEETING.LENGTHINPERIODS) LENGTHINPERIODS
from
PATTERNBLOCKMEETING
where
PATTERNBLOCKMEETING.TIMETABLEDAYID = @TIMETABLEDAYID
and dbo.UFN_PATTERNBLOCKMEETING_LENGTHINPERIODS_VALID(PATTERNBLOCKMEETING.TIMETABLEDAYPERIODID,PATTERNBLOCKMEETING.LENGTHINPERIODS) = 0
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID
delete PATTERNBLOCKMEETING
from
PATTERNBLOCKMEETING
inner join
@TempTbl as temp on temp.PATTERNBLOCKMEETINGID = PATTERNBLOCKMEETING.ID
where
temp.LENGTHINPERIODS = 0
if not @contextCache is null
set CONTEXT_INFO @contextCache
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
update PATTERNBLOCKMEETING
set LENGTHINPERIODS = temp.LENGTHINPERIODS,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
PATTERNBLOCKMEETING
inner join
@TempTbl as temp on temp.PATTERNBLOCKMEETINGID = PATTERNBLOCKMEETING.ID
where
temp.LENGTHINPERIODS > 0
update PATTERNBLOCKMEETING
set [STARTTIME] = TIMETABLEDAYPERIOD.STARTTIME,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
PATTERNBLOCKMEETING
inner join
TIMETABLEDAYPERIOD on TIMETABLEDAYPERIOD.ID = PATTERNBLOCKMEETING.TIMETABLEDAYPERIODID
where
PATTERNBLOCKMEETING.TIMETABLEDAYID = @TIMETABLEDAYID
update PATTERNBLOCKMEETING
set [ENDTIME] =
(select ENDTIME from
(
select ENDTIME, ROW_NUMBER() OVER (ORDER BY TIMETABLEDAYPERIOD.STARTTIME) as 'ROW_NUMBER'
from
TIMETABLEDAYPERIOD
where
TIMETABLEDAYPERIOD.TIMETABLEDAYID = PATTERNBLOCKMEETING.TIMETABLEDAYID
and TIMETABLEDAYPERIOD.STARTTIME >= PATTERNBLOCKMEETING.STARTTIME
) as endrow
where
endrow.ROW_NUMBER = PATTERNBLOCKMEETING.LENGTHINPERIODS),
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
PATTERNBLOCKMEETING
where
PATTERNBLOCKMEETING.TIMETABLEDAYID = @TIMETABLEDAYID
return 0;
end