kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Functions/fnGetUtkozesByOsztalycsoport.sql
2024-03-13 00:33:46 +01:00

40 lines
2 KiB
Transact-SQL

DROP FUNCTION IF EXISTS fnGetUtkozesByOsztalycsoport
GO
CREATE FUNCTION [fnGetUtkozesByOsztalycsoport] (
@startTime datetime,
@endTime datetime,
@osztalyCsoportId int,
@intezmenyId int,
@tanevId int
) RETURNS TABLE
RETURN (
SELECT o.ID AS OrarendiOraId, NULL AS TanitasioraId, NULL AS OsztalyCsoportId, NULL as NemKotottMunkaido
FROM T_NAPTARINAP_OSSZES n
LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = n.C_NAPDATUMA
INNER JOIN T_ORARENDIORA_OSSZES o ON (ISNULL(tr.C_HETIREND, n.C_HETIREND) = o.C_HETIREND OR o.C_HETIREND = 1554)
AND ISNULL(tr.C_HETNAPJA, n.C_HETNAPJA) = o.C_HETNAPJA
AND n.C_INTEZMENYID = o.C_INTEZMENYID
AND n.C_TANEVID = o.C_TANEVID
WHERE CAST(CAST(@startTime AS DATE) AS DATETIME) + CAST(CAST(o.C_ORAKEZDETE AS TIME) AS DATETIME) < @endTime
AND CAST(CAST(@endTime AS DATE) AS DATETIME) + CAST(CAST(o.C_ORAVEGE AS TIME) AS DATETIME) > @startTime
AND o.C_OSZTALYCSOPORTID IN (SELECT ID FROM dbo.fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId))
AND n.C_TANEVID = @tanevId
AND n.C_INTEZMENYID = @intezmenyId
AND n.C_NAPDATUMA >= CAST(@startTime AS DATE) AND n.C_NAPDATUMA <= CAST(@endTime AS DATE)
AND n.TOROLT = 'F' AND (tr.TOROLT = 'F' OR tr.TOROLT IS NULL) AND o.TOROLT = 'F' and o.C_PARHUZAMOSORA = 'F'
AND o.C_ORAERVENYESSEGKEZDETE <= CAST(@endTime AS DATE) AND o.C_ORAERVENYESSEGVEGE > CAST(@startTime AS DATE)
UNION
SELECT o.ID AS OrarendiOraId, tn.ID AS TanitasioraId, tn.C_OSZTALYCSOPORTID AS OsztalyCsoportID, NULL as NemKotottMunkaido
FROM T_TANITASIORA_OSSZES tn
LEFT JOIN T_ORARENDIORA o ON tn.C_ORARENDIORAGROUPID = o.C_ORARENDIORAGROUPID AND tn.C_DATUM BETWEEN o.C_ORAERVENYESSEGKEZDETE AND o.C_ORAERVENYESSEGVEGE
WHERE tn.C_ORAKEZDETE < @endTime
AND tn.C_ORAVEGE > @startTime
AND tn.C_OSZTALYCSOPORTID IN (SELECT ID FROM dbo.fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId))
AND tn.C_TANEVID = @tanevId
AND tn.C_INTEZMENYID = @intezmenyId
AND tn.TOROLT = 'F' and tn.C_PARHUZAMOSORA = 'F'
);
GO