UFN_STUDENT_GETCLASSMEETINGSTATUS
Returns the previous, current, and next meeting information for a student given a date. By default the current date and time will be used.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STUDENTID | uniqueidentifier | IN | |
@DATETIME | datetime | IN |
Definition
Copy
CREATE function dbo.UFN_STUDENT_GETCLASSMEETINGSTATUS
(
@STUDENTID uniqueidentifier,
@DATETIME datetime = null
)
returns @RESULTS TABLE
(
[PREVIOUS_CLASSMEETINGID] uniqueidentifier,
[CURRENT_CLASSMEETINGID] uniqueidentifier,
[NEXT_CLASSMEETINGID] uniqueidentifier
)
as begin
if @DATETIME is null
set @DATETIME = getdate()
declare @DATE date = @DATETIME
declare @TempTbl table (
[ID] uniqueidentifier,
[START] datetime,
[END] datetime,
[ROW] int
)
insert into @TempTbl
select
CLASSMEETING.ID,
dbo.UFN_DATE_ADDHOURMINUTE(EDUCATIONMEETING.STARTDATE, EDUCATIONMEETING.STARTTIME) as [START],
dbo.UFN_DATE_ADDHOURMINUTE(EDUCATIONMEETING.ENDDATE, EDUCATIONMEETING.ENDTIME) as [END],
ROW_NUMBER() over (order by EDUCATIONMEETING.STARTDATE, EDUCATIONMEETING.STARTTIME, EDUCATIONMEETING.ENDDATE, EDUCATIONMEETING.ENDTIME) as ROW
from dbo.STUDENTCOURSE
inner join dbo.STUDENTCLASSMEETINGGROUP on STUDENTCOURSE.ID = STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID
inner join dbo.CLASSMEETING on STUDENTCLASSMEETINGGROUP.CLASSMEETINGGROUPID = CLASSMEETING.CLASSMEETINGGROUPID
inner join dbo.EDUCATIONMEETING on CLASSMEETING.EDUCATIONMEETINGID = EDUCATIONMEETING.ID
and EDUCATIONMEETING.STARTDATE = @DATE
and EDUCATIONMEETING.ENDDATE = @DATE
where STUDENTCOURSE.STUDENTID = @STUDENTID
and STUDENTCLASSMEETINGGROUP.STATUSCODE = 0
insert into @RESULTS
select
(
select top(1) ID
from @TempTbl
where [END] <= @DATETIME
order by ROW desc
) as [PREVIOUS_CLASSMEETINGID],
(
select top(1) ID
from @TempTbl
where [START] <= @DATETIME and [END] >= @DATETIME
order by ROW
) as [CURRENT_CLASSMEETINGID],
(
select top(1) ID
from @TempTbl
where [START] >= @DATETIME
order by ROW
) as [NEXT_CLASSMEETINGID]
return
end