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

112 lines
No EOL
4.2 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS sp_GetDokumentumHelyettesitesekByDateInterval
GO
CREATE PROCEDURE sp_GetDokumentumHelyettesitesekByDateInterval
@tanevId INT
,@intezmenyId INT
,@helyettesitesListaFormatumId INT = 0 --0 helyettesitett, 1 helyettesito
,@idoszakKezdete DATE
,@idoszakVege DATE
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #OrarendAdatok (
Datum datetime
,HetNapja int
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,Megtartott char(1)
,OsztalyNev nvarchar(255)
,TanarNev nvarchar(255)
,TeremNev nvarchar(255)
,OraTipus nvarchar(200)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar(255)
,HelyettesitesId int
,TanarID int
,TantargyId int
)
INSERT INTO #OrarendAdatok (
Datum
,HetNapja
,OraKezdete
,OraVege
,Oraszam
,Megtartott
,OsztalyNev
,TanarNev
,TeremNev
,OraTipus
,HelyettesitoTanarID
,HelyettesitoTanarNev
,HelyettesitesId
,TanarID
,TantargyId
)
EXEC
dbo.sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @IdoszakKezdete
,@pIdoszakVege = @IdoszakVege
,@pTanarId = NULL
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = NULL
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = NULL
,@pOszlopok = 'Datum,HetNapja,OraKezdete,OraVege,Oraszam,Megtartott,OsztalyNev,TanarNev,TeremNev,OraTipus,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,TantargyId'
SELECT
hely.HelyettesitoTanarID AS HelyettesitoId
,hely.TanarID AS HelyettesitettId
,dbo.fnGetDokumentumDatumFormatum(hely.Datum) AS HetNapja
,HetNapja.C_NAME AS HetNapjaMegnevezes
,IIF(hely.Oraszam IS NOT NULL,CONVERT(NVARCHAR(5), hely.Oraszam) + '.',
CONCAT(CONVERT(NVARCHAR(5), hely.OraKezdete, 108), '-', CONVERT(NVARCHAR(5), hely.OraVege, 108))) AS Oraszam
,IIF(hely.OraTipus = 'TanitasiOra' AND hely.Megtartott = 'F', 'Elmaradt óra', hely.HelyettesitoTanarNev) AS HelyettesitoNeve
,hely.TanarNev AS HelyettesitettNeve
,hely.OsztalyNev AS OsztalyCsoportNev
,tantargy.C_NEV AS TantargyNev
,hely.TeremNev AS TeremNev
,HelyettesitesTipusa.C_NAME AS HelyettesitesTipusa
,helyettesito.C_OKTATASIAZONOSITO AS HelyettesitoOktatasiAzon
,helyettesitesett.C_OKTATASIAZONOSITO AS HelyettesitettOktatasiAzon
,Rendez = CASE ISNUMERIC(hely.Oraszam)
WHEN 1 THEN CAST(hely.Oraszam AS INT)
ELSE 999999999999999 END
INTO #adatok
FROM
#OrarendAdatok hely
LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = hely.TantargyId AND tantargy.TOROLT = 'F'
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hi ON hi.ID = hely.HelyettesitesId and hi.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.Id = hely.HelyettesitoTanarID AND helyettesito.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES helyettesitesett ON helyettesitesett.ID = hely.TanarID AND helyettesitesett.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES HelyettesitesTipusa ON HelyettesitesTipusa.ID = hi.C_HELYETTESITESTIPUS AND HelyettesitesTipusa.C_TANEVID = @TanevId AND HelyettesitesTipusa.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES HetNapja ON HetNapja.ID = hely.HetNapja AND HetNapja.C_TANEVID = @TanevId AND HetNapja.TOROLT = 'F'
WHERE (hely.OraTipus = 'TanitasiOra' AND (hely.HelyettesitoTanarID IS NOT NULL OR hely.Megtartott = 'F'))
OR (hely.OraTipus = 'OrarendiOra' AND hely.HelyettesitoTanarID IS NOT NULL)
ORDER BY hely.HetNapja, hely.Oraszam
SELECT DISTINCT HetNapja, HetNapjaMegnevezes FROM #adatok
IF @helyettesitesListaFormatumId = 0
BEGIN
SELECT DISTINCT HelyettesitettId PedagogusId, HelyettesitettNeve PedagogusNev, HetNapja FROM #adatok ORDER BY HelyettesitettNeve
SELECT * FROM #adatok
ORDER BY HetNapja, Rendez, Oraszam
END
ELSE
BEGIN
SELECT DISTINCT HelyettesitoId PedagogusId, HelyettesitoNeve PedagogusNev, HetNapja FROM #adatok ORDER BY HelyettesitoNeve
SELECT * FROM #adatok
ORDER BY HetNapja, Rendez, Oraszam
END
END
GO