DROP PROCEDURE IF EXISTS uspGetOralatogatasData GO CREATE PROCEDURE uspGetOralatogatasData @pTanevId int ,@pFelhasznaloId int ,@pTol datetime = NULL ,@pIg datetime = NULL ,@pIsTanar bit ,@pTanarId int = NULL ,@pLatogatottPedagogusId int = NULL ,@pOsztalyCsoportId int = NULL ,@pIsKellKapcsolodoCsoportok bit ,@pTantargyId int = NULL ,@pFeladatKategoriaId int = NULL ,@pFeladatEllatasiHelyId int = NULL AS BEGIN SET NOCOUNT ON; DECLARE @sql nvarchar(max) ,@ertekeloId int SET @sql = N' SELECT Oralatogatas.ID ,TanitasiOra.ID AS TanitasiOraId ,Oralatogatas.C_DATUM AS Datum ,CONVERT(nvarchar(25), Oralatogatas.C_DATUM, 102) AS DatumST ,ISNULL(DIB_VezetoiOraszamok.C_NAME, DIB_Beosztas.C_NAME) AS Beosztas ,TanitasiOra.C_ORASZAM AS Oraszam ,Felhasznalo.C_NYOMTATASINEV AS Alkalmazott ,Felhasznalo.ID AS AlkalmazottId ,Felhasznalo.C_VEZETEKNEV + '' '' + Felhasznalo.C_UTONEV AS AlkalmazottElotagNelkul ,Tantargy.C_NEV AS Tantargy ,OsztalyCsoport.C_NEV AS OsztalyCsoport ,IIF(Oralatogatas.C_ERTEKELOID = @pFelhasznaloId, ''T'', ''F'') AS IsSajatErtekeles ,LatogatottPedagogus.C_NYOMTATASINEV AS LatogatottPedagogus ,LatogatottPedagogus.Id AS LatogatottPedagogusId FROM T_ORALATOGATAS_OSSZES Oralatogatas INNER JOIN T_TANITASIORA_OSSZES TanitasiOra ON TanitasiOra.ID = Oralatogatas.C_MEGTARTOTTORAID AND TanitasiOra.TOROLT = ''F'' INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = TanitasiOra.C_OSZTALYCSOPORTID AND OsztalyCsoport.TOROLT = ''F'' INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.ID = TanitasiOra.C_TANTARGYID AND Tantargy.TOROLT = ''F'' INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.ID = Oralatogatas.C_ERTEKELOID AND Felhasznalo.TOROLT = ''F'' INNER JOIN T_MUNKAUGYIADATOK_OSSZES MunkaugyiAdatok ON MunkaugyiAdatok.C_ALKALMAZOTTID = Oralatogatas.C_ERTEKELOID AND MunkaugyiAdatok.TOROLT = ''F'' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES DIB_VezetoiOraszamok ON DIB_VezetoiOraszamok.ID = MunkaugyiAdatok.C_VEZETOIORASZAMOK AND MunkaugyiAdatok.C_VEZETOIORASZAMOK <> 6571 AND DIB_VezetoiOraszamok.TOROLT = ''F'' AND DIB_VezetoiOraszamok.C_TANEVID = MunkaugyiAdatok.C_TANEVID LEFT JOIN T_DICTIONARYITEMBASE_OSSZES DIB_Beosztas ON DIB_Beosztas.ID = MunkaugyiAdatok.C_MUNKAKORTIPUSA AND DIB_Beosztas.TOROLT = ''F'' AND DIB_Beosztas.C_TANEVID = MunkaugyiAdatok.C_TANEVID INNER JOIN T_FELHASZNALO_OSSZES LatogatottPedagogus ON LatogatottPedagogus.ID = TanitasiOra.C_TANARID AND LatogatottPedagogus.TOROLT = ''F'' WHERE Oralatogatas.TOROLT = ''F'' AND Oralatogatas.C_TANEVID = @pTanevId ' SET @sql += IIF(@pTol IS NOT NULL, N' AND Oralatogatas.C_DATUM >= @pTol', '') SET @sql += IIF(@pIg IS NOT NULL, N' AND Oralatogatas.C_DATUM <= @pIg', '') --NOTE: Tanár esetén azok az óralátogatások kellenek, ahol vagy ő volt az értékelő, --vagy az ő óráját értékelték (a kiválasztott tanár). SET @sql += CASE WHEN (@pIsTanar = 1) AND (@pTanarId IS NOT NULL) THEN N' AND (Oralatogatas.C_ERTEKELOID = @pErtekeloId AND TanitasiOra.C_TANARID = @pFelhasznaloId)' WHEN (@pIsTanar = 1) AND (@pTanarId IS NULL) THEN N' AND (Oralatogatas.C_ERTEKELOID = @pErtekeloId OR TanitasiOra.C_TANARID = @pFelhasznaloId)' WHEN (@pIsTanar = 0) AND (@pTanarId IS NOT NULL) THEN N' AND Oralatogatas.C_ERTEKELOID = @pErtekeloId' ELSE '' END SET @ertekeloId = CASE WHEN (@pIsTanar = 1) AND (@pTanarId IS NOT NULL) THEN @pTanarId WHEN (@pIsTanar = 1) AND (@pTanarId IS NULL) THEN @pFelhasznaloId WHEN (@pIsTanar = 0) AND (@pTanarId IS NOT NULL) THEN @pTanarId END SET @sql += IIF(@pOsztalyCsoportId IS NOT NULL, IIF(@pIsKellKapcsolodoCsoportok = 0, N' AND TanitasiOra.C_OSZTALYCSOPORTID = @pOsztalyCsoportId', N' AND TanitasiOra.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@pOsztalyCsoportId))'), '') SET @sql += IIF(@pTantargyId IS NOT NULL, N' AND TanitasiOra.C_TANTARGYID = @pTantargyId', '') SET @sql += IIF(@pFeladatKategoriaId IS NOT NULL, N' AND OsztalyCsoport.C_FELADATKATEGORIAID = @pFeladatKategoriaId', '') SET @sql += IIF(@pFeladatEllatasiHelyId IS NOT NULL, N' AND OsztalyCsoport.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId', '') SET @sql += IIF(@pLatogatottPedagogusId IS NOT NULL, N' AND LatogatottPedagogus.Id = @pLatogatottPedagogusId', '') EXEC sp_executesql @sql ,N' @pTanevId int ,@pFelhasznaloId int ,@pTol datetime ,@pIg datetime ,@pErtekeloId int ,@pOsztalyCsoportId int ,@pTantargyId int ,@pLatogatottPedagogusId int ,@pFeladatKategoriaId int ,@pFeladatEllatasiHelyId int ' ,@pTanevId = @pTanevId ,@pFelhasznaloId = @pFelhasznaloId ,@pTol = @pTol ,@pIg = @pIg ,@pErtekeloId = @ertekeloId ,@pOsztalyCsoportId = @pOsztalyCsoportId ,@pTantargyId = @pTantargyId ,@pLatogatottPedagogusId = @pLatogatottPedagogusId ,@pFeladatKategoriaId = @pFeladatKategoriaId ,@pFeladatEllatasiHelyId = @pFeladatEllatasiHelyId END