299 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			299 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS uspGetTanuloErtekelesDataSetByTanulo
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE uspGetTanuloErtekelesDataSetByTanulo
 | 
						|
   @pIntezmenyId int
 | 
						|
  ,@pTanevId int
 | 
						|
  ,@pTanarId int
 | 
						|
  ,@pTanuloId int
 | 
						|
  ,@pDatum date = NULL
 | 
						|
  ,@pAmiKategoriaId int
 | 
						|
  ,@pFeladatKategoriaId	int = NULL
 | 
						|
AS BEGIN
 | 
						|
  SET NOCOUNT ON;
 | 
						|
 | 
						|
  IF @pDatum IS NULL
 | 
						|
    SET @pDatum = CONVERT(date, GETDATE())
 | 
						|
 | 
						|
  DECLARE
 | 
						|
     @evfolyamTipusId int
 | 
						|
    ,@sql nvarchar (max)
 | 
						|
 | 
						|
  SELECT TOP (1)
 | 
						|
    @evfolyamTipusId = tanuloOsztaly.EvfolyamTipusId
 | 
						|
  FROM 
 | 
						|
    fnGetTanuloOsztaly(@pTanuloId, @pDatum, @pFeladatKategoriaId, 0) tanuloOsztaly
 | 
						|
  ORDER BY 
 | 
						|
    tanuloOsztaly.BelepesDatuma DESC
 | 
						|
 | 
						|
  SET @sql = N'
 | 
						|
  CREATE TABLE #KapcsopodoTantargyak (
 | 
						|
     ID int
 | 
						|
    ,C_FOTARGYID int
 | 
						|
    ,C_NEV nvarchar (255)
 | 
						|
    ,C_TARGYKATEGORIA int
 | 
						|
    ,C_TANEVID int
 | 
						|
  )
 | 
						|
 | 
						|
  CREATE TABLE #Tantargyak (
 | 
						|
     ID int
 | 
						|
    ,C_FOTARGYID int
 | 
						|
    ,C_NEV nvarchar (255)
 | 
						|
    ,C_TARGYKATEGORIA int
 | 
						|
    ,C_TANEVID int
 | 
						|
  )
 | 
						|
 | 
						|
  INSERT INTO #KapcsopodoTantargyak (
 | 
						|
     ID
 | 
						|
    ,C_FOTARGYID
 | 
						|
    ,C_NEV
 | 
						|
    ,C_TARGYKATEGORIA
 | 
						|
    ,C_TANEVID
 | 
						|
  )
 | 
						|
  SELECT
 | 
						|
     kapcsolodoTargy.ID
 | 
						|
    ,kapcsolodoTargy.C_FOTARGYID
 | 
						|
    ,kapcsolodoTargy.C_NEV
 | 
						|
    ,kapcsolodoTargy.C_TARGYKATEGORIA
 | 
						|
    ,kapcsolodoTargy.C_TANEVID
 | 
						|
  FROM fnGetKapcsolodoTantargyak(@pIntezmenyId, @pTanevId, NULL) kapcsolodoTargy
 | 
						|
 | 
						|
  CREATE TABLE #OsztalyCsoportIdList (
 | 
						|
    ID int PRIMARY KEY
 | 
						|
  )
 | 
						|
  INSERT INTO #OsztalyCsoportIdList (
 | 
						|
    ID
 | 
						|
  )
 | 
						|
  SELECT
 | 
						|
    OsztalyCsoport.ID
 | 
						|
  FROM T_TANULOCSOPORT_OSSZES TanuloCsoport
 | 
						|
    INNER JOIN T_OSZTALY_OSSZES Osztaly ON Osztaly.C_ALTANEVID = TanuloCsoport.C_TANEVID AND Osztaly.TOROLT = ''F''
 | 
						|
      AND Osztaly.ID = TanuloCsoport.C_OSZTALYCSOPORTID
 | 
						|
    INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.C_TANEVID = TanuloCsoport.C_TANEVID AND OsztalyCsoport.TOROLT = ''F''
 | 
						|
      AND OsztalyCsoport.ID = Osztaly.ID
 | 
						|
      AND (OsztalyCsoport.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
 | 
						|
  WHERE TanuloCsoport.C_TANEVID = @pTanevId
 | 
						|
    AND TanuloCsoport.TOROLT = ''F''
 | 
						|
    AND TanuloCsoport.C_TANULOID = @pTanuloId
 | 
						|
    AND	TanuloCsoport.C_BELEPESDATUM <= @pDatum
 | 
						|
    AND (TanuloCsoport.C_KILEPESDATUM > @pDatum OR TanuloCsoport.C_KILEPESDATUM IS NULL)
 | 
						|
  '
 | 
						|
 | 
						|
  SET @sql += N'
 | 
						|
  INSERT INTO #Tantargyak (
 | 
						|
     ID
 | 
						|
    ,C_FOTARGYID
 | 
						|
    ,C_NEV
 | 
						|
    ,C_TARGYKATEGORIA
 | 
						|
    ,C_TANEVID
 | 
						|
  )
 | 
						|
  SELECT
 | 
						|
     NULL
 | 
						|
    ,NULL
 | 
						|
    ,''Magatartás/Szorgalom''
 | 
						|
    ,0
 | 
						|
    ,@pTanevID;
 | 
						|
 | 
						|
  WITH tantargy_CTE (
 | 
						|
     C_TANTARGYID
 | 
						|
    ,C_FOTARGYID
 | 
						|
    ,C_TANEVID
 | 
						|
  ) AS
 | 
						|
  (
 | 
						|
    SELECT
 | 
						|
       Foglalkozas.C_TANTARGYID
 | 
						|
      ,Tantargy.C_FOTARGYID
 | 
						|
      ,Tantargy.C_TANEVID
 | 
						|
    FROM T_FOGLALKOZAS_OSSZES Foglalkozas
 | 
						|
      INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_TANEVID = Foglalkozas.C_TANEVID AND Tantargy.TOROLT = ''F''
 | 
						|
        AND Tantargy.ID = Foglalkozas.C_TANTARGYID
 | 
						|
      INNER JOIN #OsztalyCsoportIdList OsztalyCsoport ON OsztalyCsoport.ID = Foglalkozas.C_OSZTALYCSOPORTID
 | 
						|
    WHERE Foglalkozas.C_TANEVID = @pTanevId
 | 
						|
      AND Foglalkozas.TOROLT = ''F''
 | 
						|
 | 
						|
    UNION
 | 
						|
 | 
						|
    SELECT
 | 
						|
       OrarendiOra.C_TANTARGYID
 | 
						|
      ,Tantargy.C_FOTARGYID
 | 
						|
      ,Tantargy.C_TANEVID
 | 
						|
    FROM T_ORARENDIORA_OSSZES OrarendiOra
 | 
						|
      INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_TANEVID = OrarendiOra.C_TANEVID AND Tantargy.TOROLT = ''F''        
 | 
						|
        AND Tantargy.ID = OrarendiOra.C_TANTARGYID
 | 
						|
      INNER JOIN #OsztalyCsoportIdList OsztalyCsoport ON OsztalyCsoport.ID = OrarendiOra.C_OSZTALYCSOPORTID
 | 
						|
    WHERE OrarendiOra.C_TANEVID = @pTanevId
 | 
						|
      AND OrarendiOra.TOROLT = ''F''
 | 
						|
 | 
						|
    UNION
 | 
						|
 | 
						|
    SELECT
 | 
						|
       TanuloErtekeles.C_TANTARGYID
 | 
						|
      ,Tantargy.C_FOTARGYID
 | 
						|
      ,Tantargy.C_TANEVID
 | 
						|
    FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles
 | 
						|
      LEFT JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = ''F''
 | 
						|
        AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID
 | 
						|
  '
 | 
						|
 | 
						|
  IF @pFeladatKategoriaId = @pAmiKategoriaId
 | 
						|
  BEGIN
 | 
						|
    SET @sql += N'
 | 
						|
      INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = ''F''
 | 
						|
        AND Osztaly.ID = TanuloErtekeles.C_OSZTALYCSOPORTID 
 | 
						|
        AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId
 | 
						|
  '
 | 
						|
  END
 | 
						|
  ELSE
 | 
						|
  BEGIN
 | 
						|
    SET @sql += N'
 | 
						|
      INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = ''F''
 | 
						|
        AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
 | 
						|
        AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId
 | 
						|
        AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId
 | 
						|
      INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANEVID = TanuloErtekeles.C_TANEVID AND TanuloCsoport.TOROLT = ''F''
 | 
						|
        AND TanuloCsoport.C_OSZTALYCSOPORTID = Osztaly.ID
 | 
						|
        AND TanuloCsoport.C_TANULOID = TanuloErtekeles.C_TANULOID
 | 
						|
        AND TanuloCsoport.C_BELEPESDATUM <= @pDatum
 | 
						|
  '
 | 
						|
  END
 | 
						|
 | 
						|
  SET @sql += N'
 | 
						|
    WHERE TanuloErtekeles.C_TANEVID = @pTanevId
 | 
						|
      AND TanuloErtekeles.TOROLT = ''F''
 | 
						|
      AND TanuloErtekeles.C_TANULOID = @pTanuloId
 | 
						|
  '
 | 
						|
 | 
						|
  IF @pFeladatKategoriaId = @pAmiKategoriaId
 | 
						|
    SET @sql += N'
 | 
						|
      AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL
 | 
						|
  '
 | 
						|
  ELSE
 | 
						|
    SET @sql += N'
 | 
						|
      AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL
 | 
						|
  '
 | 
						|
 | 
						|
  SET @sql += N'
 | 
						|
  )
 | 
						|
 | 
						|
  INSERT INTO #Tantargyak (
 | 
						|
     ID
 | 
						|
    ,C_FOTARGYID
 | 
						|
    ,C_NEV
 | 
						|
    ,C_TARGYKATEGORIA
 | 
						|
    ,C_TANEVID
 | 
						|
  )
 | 
						|
  SELECT DISTINCT
 | 
						|
     KapcsopolodoTantargy.ID
 | 
						|
    ,KapcsopolodoTantargy.C_FOTARGYID
 | 
						|
    ,KapcsopolodoTantargy.C_NEV
 | 
						|
    ,KapcsopolodoTantargy.C_TARGYKATEGORIA
 | 
						|
    ,KapcsopolodoTantargy.C_TANEVID
 | 
						|
  FROM tantargy_CTE
 | 
						|
    INNER JOIN #KapcsopodoTantargyak KapcsopolodoTantargy ON tantargy_CTE.C_TANTARGYID = KapcsopolodoTantargy.ID OR tantargy_CTE.C_FOTARGYID = KapcsopolodoTantargy.ID
 | 
						|
 | 
						|
  SELECT
 | 
						|
     @pTanuloId AS TanuloId
 | 
						|
    ,Tantargy.ID AS TantargyId
 | 
						|
    ,Tantargy.C_NEV AS TantargyNev
 | 
						|
    ,TanuloErtekeles.ID AS ID
 | 
						|
    ,TanuloErtekeles.C_DATUM AS Datum
 | 
						|
    ,TanuloErtekeles.C_ROGZITESDATUM AS RogzitesDatum
 | 
						|
    ,TanuloErtekeles.C_TIPUSID AS TipusId
 | 
						|
    ,FelhasznaloErtekelo.C_NYOMTATASINEV AS ErtekeloNyomtatasiNev
 | 
						|
    ,IIF(TanuloErtekeles.ID IS NULL, NULL, CASE WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId THEN ''T'' ELSE ''F'' END) AS Modosithato
 | 
						|
    ,TanuloErtekeles.CREATED AS Created
 | 
						|
    ,IIF(TanuloErtekeles.C_ISMAGATARTASSZORGALOM IS NOT NULL, TanuloErtekeles.C_ISMAGATARTASSZORGALOM, IIF(Tantargy.ID IS NOT NULL, ''F'',  ''T'')) AS IsMagatartasSzorgalom
 | 
						|
    ,TanuloErtekeles.C_ISERTESITESELKULDVE AS IsErtesitesElkuldve
 | 
						|
    ,TanuloErtekeles.C_ERTEKELESOSZTALYZATID AS ErtekelesOsztalyzatId
 | 
						|
    ,TanariAtlagSuly.C_SULY AS Suly
 | 
						|
    ,TanuloErtekeles.C_ERTEKELESSZOVEG AS ErtekelesSzoveg
 | 
						|
    ,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV AS ErtekelesSzovegRovidNev
 | 
						|
    ,TanuloErtekeles.C_ERTEKELESSZAZALEK AS ErtekelesSzazalek
 | 
						|
    ,TanuloErtekeles.C_ERTEKELESMODID AS ErtekelesModId
 | 
						|
    ,TanuloErtekeles.C_ERTEKELESTEMA AS ErtekelesTema
 | 
						|
    ,TanuloErtekeles.C_MAGATARTASOSZTALYZATID AS MagatartasOsztalyzatId
 | 
						|
    ,TanuloErtekeles.C_MAGATARTASSZOVEG AS MagatartasSzoveg
 | 
						|
    ,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV AS MagatartasSzovegRovidNev
 | 
						|
    ,TanuloErtekeles.C_MAGATARTASERTEKID AS MagatartasErtekId
 | 
						|
    ,TanuloErtekeles.C_SZORGALOMOSZTALYZATID AS SzorgalomOsztalyzatId
 | 
						|
    ,TanuloErtekeles.C_SZORGALOMSZOVEG AS SzorgalomSzoveg
 | 
						|
    ,TanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV AS SzorgalomSzovegRovidNev
 | 
						|
    ,TanuloErtekeles.C_SZORGALOMERTEKID AS SzorgalomErtekId
 | 
						|
    ,Tantargy.C_TARGYKATEGORIA AS TantargyKategoriaId
 | 
						|
    ,Fotargy.ID AS FotargyId
 | 
						|
    ,Fotargy.C_NEV AS FotargyNev
 | 
						|
    ,Fotargy.C_TARGYKATEGORIA AS FotargyTantargyKategoriaId
 | 
						|
  FROM #Tantargyak Tantargy
 | 
						|
    LEFT JOIN (
 | 
						|
      SELECT
 | 
						|
        TanuloErtekeles.*
 | 
						|
      FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles
 | 
						|
  '
 | 
						|
 | 
						|
  IF @pFeladatKategoriaId = @pAmiKategoriaId
 | 
						|
    SET @sql += N'
 | 
						|
    INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = ''F''
 | 
						|
      AND Osztaly.ID = TanuloErtekeles.C_OSZTALYCSOPORTID
 | 
						|
      AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId
 | 
						|
  '
 | 
						|
  ELSE
 | 
						|
    SET @sql += N'
 | 
						|
    INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = ''F''      
 | 
						|
      AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
 | 
						|
      AND Osztaly.C_FELADATKATEGORIAID = @pFeladatKategoriaId
 | 
						|
      AND Osztaly.C_EVFOLYAMTIPUSA = @evfolyamTipusId
 | 
						|
    INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANEVID = TanuloErtekeles.C_TANEVID AND TanuloCsoport.TOROLT = ''F''
 | 
						|
      AND TanuloCsoport.C_OSZTALYCSOPORTID = Osztaly.ID
 | 
						|
      AND TanuloCsoport.C_TANULOID = TanuloErtekeles.C_TANULOID
 | 
						|
      AND TanuloCsoport.C_BELEPESDATUM <= @pDatum
 | 
						|
  '
 | 
						|
 | 
						|
  SET @sql += N'
 | 
						|
  WHERE TanuloErtekeles.C_TANEVID = @pTanevId
 | 
						|
    AND TanuloErtekeles.TOROLT = ''F''
 | 
						|
    AND TanuloErtekeles.C_TANULOID = @pTanuloId
 | 
						|
  '
 | 
						|
 | 
						|
  IF @pFeladatKategoriaId = @pAmiKategoriaId
 | 
						|
    SET @sql += N'
 | 
						|
    AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL
 | 
						|
  '
 | 
						|
  ELSE
 | 
						|
    SET @sql += N'
 | 
						|
    AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NOT NULL
 | 
						|
  '
 | 
						|
 | 
						|
  SET @sql += N'
 | 
						|
    ) AS TanuloErtekeles ON (TanuloErtekeles.C_TANTARGYID = Tantargy.ID OR (TanuloErtekeles.C_TANTARGYID IS NULL AND Tantargy.ID IS NULL))
 | 
						|
    INNER JOIN T_FELHASZNALO_OSSZES FelhasznaloErtekelo ON FelhasznaloErtekelo.C_TANEVID = Tantargy.C_TANEVID AND FelhasznaloErtekelo.TOROLT = ''F''
 | 
						|
      AND FelhasznaloErtekelo.ID = TanuloErtekeles.C_ERTEKELOID
 | 
						|
    LEFT JOIN T_TANARIATLAGSULY_OSSZES TanariAtlagSuly ON TanariAtlagSuly.C_TANEVID = Tantargy.C_TANEVID AND TanariAtlagSuly.TOROLT = ''F''
 | 
						|
      AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID
 | 
						|
      AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL
 | 
						|
    LEFT JOIN T_TANTARGY_OSSZES Fotargy ON Fotargy.C_TANEVID = Tantargy.C_TANEVID AND Fotargy.TOROLT = ''F''
 | 
						|
      AND Fotargy.ID = Tantargy.C_FOTARGYID
 | 
						|
  '
 | 
						|
 | 
						|
  EXEC sp_executesql @sql, N'
 | 
						|
     @pIntezmenyId int
 | 
						|
    ,@pTanevId int
 | 
						|
    ,@pTanarId int
 | 
						|
    ,@pTanuloId int
 | 
						|
    ,@pFeladatKategoriaId int
 | 
						|
    ,@evfolyamTipusId int
 | 
						|
    ,@pDatum date
 | 
						|
    '
 | 
						|
    ,@pIntezmenyId = @pIntezmenyId
 | 
						|
    ,@pTanevId = @pTanevId
 | 
						|
    ,@pTanarId = @pTanarId
 | 
						|
    ,@pTanuloId = @pTanuloId
 | 
						|
    ,@pFeladatKategoriaId = @pFeladatKategoriaId
 | 
						|
    ,@evfolyamTipusId = @evfolyamTipusId
 | 
						|
    ,@pDatum = @pDatum
 | 
						|
 | 
						|
END
 | 
						|
 | 
						|
 | 
						|
GO
 | 
						|
 |