159 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS uspGetTanuloErtekelesDetailDataSet
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE uspGetTanuloErtekelesDetailDataSet
 | 
						|
   @pTanevId int
 | 
						|
  ,@pTanuloId int
 | 
						|
  ,@pTantargyId int = NULL
 | 
						|
  ,@pShowToroltElemek bit
 | 
						|
  ,@pTanarId int = NULL
 | 
						|
  ,@pErtekelesMegjelenesFajtaEnumTantargyId int
 | 
						|
  ,@pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId int
 | 
						|
  ,@pErtekelesMegjelenesFajtaId int
 | 
						|
  ,@pDatum date = NULL
 | 
						|
  ,@pAmiKategoriaId int
 | 
						|
  ,@pFeladatKategoriaId int
 | 
						|
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'
 | 
						|
  --NOTE: Azért kell a DISTINCT, ha ugyanoda ki-/besorolgatják a tanulót!
 | 
						|
  SELECT DISTINCT
 | 
						|
     TanuloErtekeles.ID AS ID
 | 
						|
    ,TanuloErtekeles.C_DATUM AS Datum
 | 
						|
    ,TanuloErtekeles.C_ROGZITESDATUM AS RogzitesDatum
 | 
						|
    ,TanuloErtekeles.C_TIPUSID AS TipusId
 | 
						|
    ,TanuloErtekeles.C_ISERTESITESELKULDVE AS IsErtesitesElkuldve
 | 
						|
    ,TanuloErtekeles.C_TANORAID AS TanoraId
 | 
						|
    ,TanuloErtekeles.C_ERTEKELESOSZTALYZATID AS ErtekelesOsztalyzatId
 | 
						|
    ,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
 | 
						|
    ,TanuloErtekeles.C_ISMAGATARTASSZORGALOM AS IsMagatartasSzorgalom
 | 
						|
    ,TanuloErtekeles.CREATED AS Created
 | 
						|
    ,TanuloErtekeles.TOROLT AS Torolt
 | 
						|
    ,TanuloErtekeles.C_TANULOID AS TanuloId
 | 
						|
    ,TanariAtlagSuly.C_SULY AS Suly
 | 
						|
    ,Felhasznalo.C_NYOMTATASINEV AS ErtekeloNyomtatasiNev
 | 
						|
    ,Tantargy.C_TARGYKATEGORIA AS TantargyKategoriaId
 | 
						|
    ,CASE WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId THEN ''T'' ELSE ''F'' END AS Modosithato
 | 
						|
  FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles
 | 
						|
  '
 | 
						|
 | 
						|
  IF @pFeladatKategoriaId = @pAmiKategoriaId
 | 
						|
  BEGIN  
 | 
						|
    --NOTE: Ha nincs osztály id, akkor AMI-s osztályról van szó és ott nem kell évfolyamszűrés!
 | 
						|
     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 = @pTanuloId
 | 
						|
         AND TanuloCsoport.C_BELEPESDATUM <= @pDatum
 | 
						|
     '
 | 
						|
  END
 | 
						|
 | 
						|
  SET @sql += N'
 | 
						|
    LEFT JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_TANEVID = TanuloErtekeles.C_TANEVID AND Tantargy.TOROLT = ''F''
 | 
						|
      AND Tantargy.ID = TanuloErtekeles.C_TANTARGYID
 | 
						|
    INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.C_TANEVID = TanuloErtekeles.C_TANEVID AND Felhasznalo.TOROLT = ''F''
 | 
						|
      AND Felhasznalo.ID = TanuloErtekeles.C_ERTEKELOID
 | 
						|
    LEFT JOIN T_TANARIATLAGSULY_OSSZES TanariAtlagSuly ON TanariAtlagSuly.C_TANEVID = TanuloErtekeles.C_TANEVID AND TanariAtlagSuly.TOROLT = ''F''
 | 
						|
      AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID
 | 
						|
      AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL
 | 
						|
  WHERE TanuloErtekeles.C_TANEVID = @pTanevId
 | 
						|
    AND TanuloErtekeles.TOROLT = IIF(@pShowToroltElemek = 1, 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 +=
 | 
						|
  CASE
 | 
						|
    WHEN @pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumTantargyId
 | 
						|
    THEN N'
 | 
						|
    AND (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F'' AND TanuloErtekeles.C_TANTARGYID = @pTantargyId)
 | 
						|
  '
 | 
						|
      WHEN @pErtekelesMegjelenesFajtaId = @pErtekelesMegjelenesFajtaEnumMagatartasSzorgalomId
 | 
						|
      THEN N'
 | 
						|
    AND (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''T'' AND TanuloErtekeles.C_TANTARGYID IS NULL)
 | 
						|
  '
 | 
						|
      ELSE N'
 | 
						|
    AND ((TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''F'' AND TanuloErtekeles.C_TANTARGYID = @pTantargyId AND @pTantargyId IS NOT NULL)
 | 
						|
      OR (TanuloErtekeles.C_ISMAGATARTASSZORGALOM = ''T'' AND TanuloErtekeles.C_TANTARGYID IS NULL AND @pTantargyId IS NULL))
 | 
						|
  '
 | 
						|
  END
 | 
						|
 | 
						|
  SET @sql += N'
 | 
						|
  ORDER BY
 | 
						|
     Datum DESC
 | 
						|
    ,RogzitesDatum DESC
 | 
						|
'
 | 
						|
 | 
						|
 | 
						|
  EXEC sp_executesql @sql, N'
 | 
						|
     @pTanevId int
 | 
						|
    ,@pTanuloId int
 | 
						|
    ,@pTantargyId int
 | 
						|
    ,@pShowToroltElemek bit
 | 
						|
    ,@pTanarId int
 | 
						|
    ,@evfolyamTipusId int
 | 
						|
    ,@pFeladatKategoriaId int
 | 
						|
    ,@pDatum date
 | 
						|
    '
 | 
						|
    ,@pTanevId = @pTanevId
 | 
						|
    ,@pTanuloId = @pTanuloId
 | 
						|
    ,@pTantargyId = @pTantargyId
 | 
						|
    ,@pShowToroltElemek = @pShowToroltElemek
 | 
						|
    ,@pTanarId = @pTanarId
 | 
						|
    ,@evfolyamTipusId = @evfolyamTipusId
 | 
						|
    ,@pFeladatKategoriaId= @pFeladatKategoriaId
 | 
						|
    ,@pDatum = @pDatum
 | 
						|
 | 
						|
END
 | 
						|
 | 
						|
 | 
						|
GO
 | 
						|
 |