206 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP FUNCTION IF EXISTS fnGetDokumentumErtekelesekOsztalyonkent
 | 
						|
GO
 | 
						|
 | 
						|
CREATE FUNCTION fnGetDokumentumErtekelesekOsztalyonkent (@tanevId INT, @osztalyCsoportId INT, @ertekelesTipusa INT = NULL, @csakTanorai BIT = 1, @csakKivlasztottOsztalyCsoport BIT = 0, @atsoroltTanuloErtekelesek INT = 0,@includeOsztalyfonokiKategoria BIT = 0)
 | 
						|
RETURNS @retTanuloErtekeles TABLE
 | 
						|
(
 | 
						|
	 ErtekelesId INT NOT NULL
 | 
						|
	,Datum DATE
 | 
						|
	,TipusId INT
 | 
						|
	,ErtekelesSzoveg NVARCHAR(MAX)
 | 
						|
	,ErtekelesSzovegFormazott NVARCHAR(MAX)
 | 
						|
	,ErtekelesSzovegRovidNev NVARCHAR(3)
 | 
						|
	,ErtekelesOsztalyzatId INT
 | 
						|
	,ErtekelesOsztalyzatValue INT
 | 
						|
	,ErtekelesOsztalyzatNev NVARCHAR(500)
 | 
						|
	,ErtekelesSzazalek NVARCHAR(4)
 | 
						|
	,MagatartasOsztalyzatId INT
 | 
						|
	,MagatartasOsztalyzatValue INT
 | 
						|
	,MagatartasOsztalyzatNev NVARCHAR(500)
 | 
						|
	,MagatartasSzoveg NVARCHAR(MAX)
 | 
						|
	,MagatartasSzovegFormazott NVARCHAR(MAX)
 | 
						|
	,MagatartasSzovegRovidNev NVARCHAR(6)
 | 
						|
	,MagatartasErtekId INT
 | 
						|
	,MagatartasErtek NVARCHAR(500)
 | 
						|
	,MagatartasErtekOsztalyzatkent INT
 | 
						|
	,SzorgalomOsztalyzatId INT
 | 
						|
	,SzorgalomOsztalyzatValue INT
 | 
						|
	,SzorgalomOsztalyzatNev NVARCHAR(500)
 | 
						|
	,SzorgalomSzoveg NVARCHAR(MAX)
 | 
						|
	,SzorgalomSzovegFormazott NVARCHAR(MAX)
 | 
						|
	,SzorgalomSzovegRovidNev NVARCHAR(6)
 | 
						|
	,SzorgalomErtekId INT
 | 
						|
	,SzorgalomErtek NVARCHAR(500)
 | 
						|
	,SzorgalomErtekOsztalyzatkent INT
 | 
						|
	,TanuloId INT
 | 
						|
	,TanuloCsoportId	INT
 | 
						|
	,OsztalyCsoportId INT
 | 
						|
	,TantargyId INT
 | 
						|
	,TantargyNevZarojellel NVARCHAR(1023)
 | 
						|
	,TantargyNevNyomtatvanyban NVARCHAR(510)
 | 
						|
	,TantargyNev NVARCHAR(510)
 | 
						|
	,TantargyAngolNev NVARCHAR(510)
 | 
						|
	,TantargyNemetNev NVARCHAR(510)
 | 
						|
	,TargyKategoriaId INT
 | 
						|
	,FotargyE CHAR(1)
 | 
						|
	,Altantargy CHAR(1)
 | 
						|
	,FotargyId INT
 | 
						|
	,ErtekelesTema NVARCHAR(2100)
 | 
						|
	,ErtekeloId INT
 | 
						|
	,ErtekelesModjaId INT
 | 
						|
	,IsMagatartasSzorgalom CHAR(1)
 | 
						|
	,Jeloles NVARCHAR(MAX)
 | 
						|
	,JelolesAndErtekelesTema NVARCHAR(MAX)
 | 
						|
	,RogzitesDatum DATE
 | 
						|
	,RENDEZ1 INT
 | 
						|
	,RENDEZ2 NVARCHAR(510)
 | 
						|
	,RENDEZ3 INT
 | 
						|
	,RENDEZ4 INT
 | 
						|
	,RENDEZ5 NVARCHAR(510)
 | 
						|
)
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
 | 
						|
 | 
						|
 | 
						|
DECLARE @kapcsolodoOcsID TABLE(ID INT)
 | 
						|
INSERT INTO @kapcsolodoOcsID (ID)
 | 
						|
SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, 0)
 | 
						|
 | 
						|
DECLARE @DefaultFeladatKategoriaId int = 7553
 | 
						|
 | 
						|
INSERT INTO @retTanuloErtekeles
 | 
						|
SELECT
 | 
						|
   tanuloErtekeles.ID as ErtekelesId
 | 
						|
  ,tanuloErtekeles.C_DATUM as Datum
 | 
						|
  ,tanuloErtekeles.C_TIPUSID as TipusId
 | 
						|
  ,tanuloErtekeles.C_ERTEKELESSZOVEG as ErtekelesSzoveg
 | 
						|
  ,tanuloErtekeles.C_ERTEKELESSZOVEGFORMAZOTT as ErtekelesSzovegFormazott
 | 
						|
  ,tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV as ErtekelesSzovegRovidNev
 | 
						|
  ,tanuloErtekeles.C_ERTEKELESOSZTALYZATID as ErtekelesOsztalyzatId
 | 
						|
  ,ertekelesOsztalyzat.C_VALUE as ErtekelesOsztalyzatValue
 | 
						|
  ,ertekelesOsztalyzat.C_NAME as ErtekelesOsztalyzatNev
 | 
						|
  ,CONVERT(NVARCHAR(3), tanuloErtekeles.C_ERTEKELESSZAZALEK)+'%' as ErtekelesSzazalek
 | 
						|
  ,tanuloErtekeles.C_MAGATARTASOSZTALYZATID as MagatartasOsztalyzatId
 | 
						|
  ,magatartasOsztalyzat.C_VALUE as MagatartasOsztalyzatValue
 | 
						|
  ,magatartasOsztalyzat.C_NAME as MagatartasOsztalyzatNev
 | 
						|
  ,tanuloErtekeles.C_MAGATARTASSZOVEG as MagatartasSzoveg
 | 
						|
  ,tanuloErtekeles.C_MAGATARTASSZOVEGFORMAZOTT as MagatartasSzovegFormazott
 | 
						|
  ,tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV as MagatartasSzovegRovidNev
 | 
						|
  ,tanuloErtekeles.C_MAGATARTASERTEKID as MagatartasErtekId
 | 
						|
  ,magatartasErtek.C_NAME as MagatartasErtek
 | 
						|
  ,magatartasErtek.C_VALUE + 1 as MagatartasErtekOsztalyzatken
 | 
						|
  ,tanuloErtekeles.C_SZORGALOMOSZTALYZATID as SzorgalomOsztalyzatId
 | 
						|
  ,szorgalomOsztalyzat.C_VALUE as SzorgalomOsztalyzatValue
 | 
						|
  ,szorgalomOsztalyzat.C_NAME as SzorgalomOsztalyzatNev
 | 
						|
  ,tanuloErtekeles.C_SZORGALOMSZOVEG as SzorgalomSzoveg
 | 
						|
  ,tanuloErtekeles.C_SZORGALOMSZOVEGFORMAZOTT as SzorgalomSzovegFormazott
 | 
						|
  ,tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV as SzorgalomSzovegRovidNev
 | 
						|
  ,tanuloErtekeles.C_SZORGALOMERTEKID as SzorgalomErtekId
 | 
						|
  ,szorgalomErtek.C_NAME as SzorgalomErtek
 | 
						|
  ,szorgalomErtek.C_VALUE + 1 as SzorgalomErtekOsztalyzatkent
 | 
						|
  ,tanuloErtekeles.C_TANULOID as TanuloId
 | 
						|
  ,TanuloCsoport.ID AS TanuloCsoportId
 | 
						|
  ,tanuloErtekeles.C_OSZTALYCSOPORTID as OsztalyCsoportId
 | 
						|
  ,tanuloErtekeles.C_TANTARGYID as TantargyId
 | 
						|
  ,IIF(tantargy.C_NEV <> tantargy.C_NEVNYOMTATVANYBAN AND tantargy.C_NEVNYOMTATVANYBAN IS NOT NULL, tantargy.C_NEVNYOMTATVANYBAN +' (' + tantargy.C_NEV + ')', tantargy.C_NEV) as TantargyNevZarojellel
 | 
						|
  ,tantargy.C_NEVNYOMTATVANYBAN as TantargyNevNyomtatvanyban
 | 
						|
  ,tantargy.C_NEV as TantargyNev
 | 
						|
  ,tantargy.C_ANGOLNEV as TantargyAngolNev
 | 
						|
  ,tantargy.C_NEMETNEV as TantargyNemetNev
 | 
						|
  ,tantargy.C_TARGYKATEGORIA as TargyKategoriaId
 | 
						|
  ,tantargy.C_FOTARGYE as FotargyE
 | 
						|
  ,tantargy.C_ALTANTARGYKENTNYOMTATVANYBAN as Altantargy
 | 
						|
  ,tantargy.C_FOTARGYID as FotargyId
 | 
						|
  ,tanuloErtekeles.C_ERTEKELESTEMA as ErtekelesTema
 | 
						|
  ,tanuloErtekeles.C_ERTEKELOID as ErtekeloId
 | 
						|
  ,tanuloErtekeles.C_ERTEKELESMODID as ErtekelesModjaId
 | 
						|
  ,tanuloErtekeles.C_ISMAGATARTASSZORGALOM as IsMagatartasSzorgalom
 | 
						|
  ,IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL AND tanuloErtekeles.C_TIPUSID IN (1519, 1520),
 | 
						|
  	'<i>(' + CAST(CHAR(ROW_NUMBER() OVER(PARTITION BY tanuloErtekeles.C_TANULOID, tanuloErtekeles.C_TIPUSID, IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL, 1, 0) ORDER BY tanuloErtekeles.C_DATUM) + 96) AS NVARCHAR(10))+')</i>',
 | 
						|
  	'') as Jeloles
 | 
						|
  ,IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL AND tanuloErtekeles.C_TIPUSID IN(1519, 1520),
 | 
						|
  	'<i>('+CAST(CHAR(ROW_NUMBER() OVER(PARTITION BY tanuloErtekeles.C_TANULOID, tanuloErtekeles.C_TIPUSID, IIF(tanuloErtekeles.C_ERTEKELESTEMA IS NOT NULL, 1, 0) ORDER BY tanuloErtekeles.C_DATUM) + 96) AS NVARCHAR(10)) + ')</i>: ' + tanuloErtekeles.C_ERTEKELESTEMA,
 | 
						|
  	'') as JelolesAndErtekelesTema
 | 
						|
  ,tanuloErtekeles.C_ROGZITESDATUM as RogzitesDatum
 | 
						|
  ,CASE WHEN tantargy.C_FOTARGYID IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END as RENDEZ1
 | 
						|
  ,COALESCE(FotargyTable.C_NEVNYOMTATVANYBAN, FotargyTable.C_NEV, tantargy.C_NEV) as RENDEZ2
 | 
						|
  ,ISNULL(tantargy.C_FOTARGYID, tantargy.ID) as RENDEZ3
 | 
						|
  ,tantargy.C_FOTARGYID as RENDEZ4
 | 
						|
  ,ISNULL(tantargy.C_NEVNYOMTATVANYBAN, tantargy.C_NEV) as RENDEZ5
 | 
						|
FROM T_TANULOERTEKELES_OSSZES tanuloErtekeles
 | 
						|
  INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANULOID = tanuloErtekeles.C_TANULOID
 | 
						|
    AND TanuloCsoport.C_OSZTALYCSOPORTID = @osztalyCsoportId
 | 
						|
    AND TanuloCsoport.C_BELEPESDATUM <= tanuloErtekeles.C_DATUM
 | 
						|
    AND (TanuloCsoport.C_KILEPESDATUM >= tanuloErtekeles.C_DATUM OR TanuloCsoport.C_KILEPESDATUM IS NULL)
 | 
						|
    AND TanuloCsoport.TOROLT = 'F'
 | 
						|
  INNER JOIN T_TANULOCSOPORT_OSSZES ErtekeleshezTartozoOsztalyCsoport ON ErtekeleshezTartozoOsztalyCsoport.C_TANULOID = tanuloErtekeles.C_TANULOID
 | 
						|
    AND ErtekeleshezTartozoOsztalyCsoport.C_OSZTALYCSOPORTID = tanuloErtekeles.C_OSZTALYCSOPORTID
 | 
						|
    AND ErtekeleshezTartozoOsztalyCsoport.C_BELEPESDATUM <= tanuloErtekeles.C_DATUM
 | 
						|
    AND (ErtekeleshezTartozoOsztalyCsoport.C_KILEPESDATUM >= tanuloErtekeles.C_DATUM OR ErtekeleshezTartozoOsztalyCsoport.C_KILEPESDATUM IS NULL)
 | 
						|
    AND ErtekeleshezTartozoOsztalyCsoport.TOROLT = 'F'
 | 
						|
    AND ErtekeleshezTartozoOsztalyCsoport.C_TANEVID = @tanevId
 | 
						|
  LEFT JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = tanuloErtekeles.C_TANTARGYID AND tantargy.TOROLT = 'F'
 | 
						|
  LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ertekelesOsztalyzat ON ertekelesOsztalyzat.ID = tanuloErtekeles.C_ERTEKELESOSZTALYZATID
 | 
						|
    AND ertekelesOsztalyzat.C_TANEVID = @tanevId
 | 
						|
    AND ertekelesOsztalyzat.C_TYPE = 'OsztalyzatTipus'
 | 
						|
  LEFT JOIN T_DICTIONARYITEMBASE_OSSZES magatartasOsztalyzat ON magatartasOsztalyzat.ID = tanuloErtekeles.C_MAGATARTASOSZTALYZATID
 | 
						|
    AND magatartasOsztalyzat.C_TANEVID = @tanevId
 | 
						|
    AND magatartasOsztalyzat.C_TYPE = 'OsztalyzatTipus'
 | 
						|
  LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szorgalomOsztalyzat ON szorgalomOsztalyzat.ID = tanuloErtekeles.C_SZORGALOMOSZTALYZATID
 | 
						|
    AND szorgalomOsztalyzat.C_TANEVID = @tanevId
 | 
						|
    AND szorgalomOsztalyzat.C_TYPE = 'OsztalyzatTipus'
 | 
						|
  LEFT JOIN T_DICTIONARYITEMBASE_OSSZES magatartasErtek ON magatartasErtek.ID = tanuloErtekeles.C_MAGATARTASERTEKID
 | 
						|
    AND magatartasErtek.C_TANEVID = @tanevId
 | 
						|
    AND magatartasErtek.C_TYPE = 'MagatartasErtekelesTipus'
 | 
						|
  LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szorgalomErtek ON szorgalomErtek.ID = tanuloErtekeles.C_SZORGALOMERTEKID
 | 
						|
    AND szorgalomErtek.C_TANEVID = @tanevId
 | 
						|
    AND szorgalomErtek.C_TYPE = 'SzorgalomErtekelesTipus'
 | 
						|
  LEFT JOIN T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON TargyKategoriaDictionary.Id = tantargy.C_TARGYKATEGORIA
 | 
						|
    AND TargyKategoriaDictionary.TOROLT = 'F'
 | 
						|
    AND TargyKategoriaDictionary.C_TANEVID = @tanevId
 | 
						|
  LEFT JOIN T_TANTARGY_OSSZES FotargyTable ON tantargy.C_FOTARGYID = FotargyTable.ID
 | 
						|
  LEFT JOIN T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON FotargyKategoriaDictionary.ID = FotargyTable.C_TARGYKATEGORIA
 | 
						|
    AND FotargyKategoriaDictionary.TOROLT = 'F'
 | 
						|
    AND FotargyKategoriaDictionary.C_TANEVID = FotargyTable.C_TANEVID
 | 
						|
  INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.ID = tanuloErtekeles.C_OSZTALYCSOPORTID
 | 
						|
    AND osztalyCsoport.TOROLT = 'F' and osztalyCsoport.C_FELADATKATEGORIAID = @kategoriaId
 | 
						|
  LEFT JOIN (
 | 
						|
       SELECT
 | 
						|
          tanorai.ID as tanoraiId
 | 
						|
         ,cs.ID as CsoportId
 | 
						|
       FROM T_CSOPORT_OSSZES cs
 | 
						|
         INNER JOIN fnGetTanoraiCeluCsoportTipusok(@tanevId) tanorai ON tanorai.ID = cs.C_TIPUSA
 | 
						|
       ) tanorai ON tanorai.CsoportId = OsztalyCsoport.ID
 | 
						|
  LEFT JOIN T_OSZTALY_OSSZES osztaly ON osztaly.ID = tanuloErtekeles.C_OSZTALYCSOPORTID
 | 
						|
WHERE tanuloErtekeles.C_TANEVID = @tanevId
 | 
						|
  AND tanuloErtekeles.TOROLT = 'F'
 | 
						|
  AND (@atsoroltTanuloErtekelesek = 1 OR (tanuloErtekeles.C_OSZTALYCSOPORTID IN(SELECT ID FROM @kapcsolodoOcsID)))
 | 
						|
  AND (@ertekelesTipusa IS NULL OR C_TIPUSID = @ertekelesTipusa)
 | 
						|
  AND (@csakKivlasztottOsztalyCsoport = 0 OR tanuloErtekeles.C_OSZTALYCSOPORTID = @osztalyCsoportId)
 | 
						|
  AND (@csakTanorai = 0 OR osztaly.ID IS NOT NULL OR tanorai.tanoraiId IS NOT NULL)
 | 
						|
  AND ((ISNULL(tantargy.C_TARGYKATEGORIA,0) <> 1248) OR @includeOsztalyfonokiKategoria = 1)
 | 
						|
 | 
						|
  IF @atsoroltTanuloErtekelesek > 0
 | 
						|
	BEGIN
 | 
						|
	  DECLARE @osztalyTantargyak TABLE (TantargyId INT)
 | 
						|
 | 
						|
    INSERT INTO @osztalyTantargyak (TantargyId)
 | 
						|
		SELECT DISTINCT
 | 
						|
		 TantargyId
 | 
						|
		FROM @retTanuloErtekeles
 | 
						|
		WHERE OsztalyCsoportId IN (SELECT ID FROM @kapcsolodoOcsID)
 | 
						|
    UNION
 | 
						|
    SELECT DISTINCT
 | 
						|
		  C_TANTARGYID
 | 
						|
		FROM T_FOGLALKOZAS_OSSZES
 | 
						|
      INNER JOIN @kapcsolodoOcsID AS OSZTALYCSOPORT ON OSZTALYCSOPORT.ID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID
 | 
						|
    WHERE T_FOGLALKOZAS_OSSZES.TOROLT = 'F'
 | 
						|
 | 
						|
		DELETE FROM @retTanuloErtekeles
 | 
						|
		WHERE TantargyId NOT IN (SELECT TantargyId FROM @osztalyTantargyak)
 | 
						|
  END
 | 
						|
 | 
						|
  	RETURN
 | 
						|
END
 | 
						|
GO |