196 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS uspGetDokumentumTantargyakErtekeleshez
 | 
						|
GO
 | 
						|
 | 
						|
 | 
						|
CREATE PROCEDURE uspGetDokumentumTantargyakErtekeleshez
 | 
						|
   @intezmenyId int
 | 
						|
  ,@tanevId int
 | 
						|
  ,@osztalyCsoportId int
 | 
						|
  ,@csakKivalasztottOsztalyCsoport bit
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  SET NOCOUNT ON;
 | 
						|
 | 
						|
  DECLARE 
 | 
						|
     @evfolyamTipusId int = (SELECT C_EVFOLYAMTIPUSA FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId AND TOROLT = 'F')
 | 
						|
    ,@elsoNap datetime
 | 
						|
    ,@utolsoNap datetime
 | 
						|
    ,@isCsoport bit = 0
 | 
						|
  
 | 
						|
  SELECT @elsoNap = C_KEZDONAP, @utolsoNap = C_UTOLSONAP FROM T_TANEV_OSSZES WHERE ID = @tanevId AND TOROLT = 'F'
 | 
						|
 | 
						|
  IF EXISTS (SELECT ID FROM T_CSOPORT_OSSZES WHERE ID = @osztalyCsoportId AND TOROLT = 'F') 
 | 
						|
  BEGIN
 | 
						|
    SET @isCsoport = 1
 | 
						|
  END
 | 
						|
 | 
						|
  CREATE TABLE #KapcsopodoTantargy(
 | 
						|
     ID int
 | 
						|
    ,C_FOTARGYID int
 | 
						|
    ,C_NEV nvarchar(255)
 | 
						|
    ,C_NEVNYOMTATVANYBAN nvarchar(255)
 | 
						|
    ,C_TARGYKATEGORIA int
 | 
						|
    ,C_INTEZMENYID int
 | 
						|
    ,C_TANEVID int
 | 
						|
  )
 | 
						|
 | 
						|
  INSERT INTO #KapcsopodoTantargy
 | 
						|
  SELECT
 | 
						|
     kt.ID
 | 
						|
    ,kt.C_FOTARGYID
 | 
						|
    ,kt.C_NEV
 | 
						|
    ,t.C_NEVNYOMTATVANYBAN
 | 
						|
    ,kt.C_TARGYKATEGORIA
 | 
						|
    ,kt.C_INTEZMENYID
 | 
						|
    ,kt.C_TANEVID
 | 
						|
  FROM dbo.fnGetKapcsolodoTantargyak(@intezmenyId, @tanevId, NULL) AS kt
 | 
						|
    INNER JOIN T_TANTARGY_OSSZES AS t ON t.ID = kt.ID AND t.TOROLT = 'F';
 | 
						|
 | 
						|
  -- Összeszedjük minden tanuló-tanulócsoporthoz a tárgyakat
 | 
						|
  WITH tantargy_CTE (C_TANTARGYID, C_FOTARGYID, C_TANULOID, C_TANULOCSOPORTID, C_INTEZMENYID, C_TANEVID)
 | 
						|
  AS (
 | 
						|
  -- TTF-es tárgyak
 | 
						|
    SELECT 
 | 
						|
       Foglalkozas.C_TANTARGYID
 | 
						|
      ,Tantargy.C_FOTARGYID
 | 
						|
      ,f.ID AS c_tanuloid
 | 
						|
      ,tcsOsztaly.ID AS C_TANULOCSOPORTID
 | 
						|
      ,Tantargy.C_INTEZMENYID
 | 
						|
      ,Tantargy.C_TANEVID
 | 
						|
    FROM T_FOGLALKOZAS_OSSZES Foglalkozas
 | 
						|
      INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = Foglalkozas.C_INTEZMENYID
 | 
						|
        AND Tantargy.C_TANEVID = Foglalkozas.C_TANEVID
 | 
						|
        AND Tantargy.TOROLT = 'F'
 | 
						|
        AND Tantargy.ID = Foglalkozas.C_TANTARGYID
 | 
						|
      INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = Foglalkozas.C_OSZTALYCSOPORTID
 | 
						|
        AND tcs.TOROLT = 'F'
 | 
						|
      INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
 | 
						|
      INNER JOIN T_TANULOCSOPORT_OSSZES tcsOsztaly ON tcsOsztaly.C_OSZTALYCSOPORTID = @osztalyCsoportId
 | 
						|
        AND tcsOsztaly.C_TANULOID = f.ID
 | 
						|
        AND tcsOsztaly.TOROLT = 'F'
 | 
						|
    WHERE 
 | 
						|
      (tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM > tcs.C_BELEPESDATUM)
 | 
						|
      AND Foglalkozas.C_INTEZMENYID = @intezmenyId
 | 
						|
      AND Foglalkozas.C_TANEVID = @tanevId
 | 
						|
      AND Foglalkozas.TOROLT = 'F'
 | 
						|
      AND (@isCsoport = 0  OR Foglalkozas.C_OSZTALYCSOPORTID = @osztalyCsoportId)
 | 
						|
 | 
						|
    UNION
 | 
						|
    -- ttf-ben nem szereplő tárgyak
 | 
						|
    SELECT 
 | 
						|
       OrarendiOra.C_TANTARGYID
 | 
						|
      ,Tantargy.C_FOTARGYID
 | 
						|
      ,f.ID AS C_TANULOID
 | 
						|
      ,tcsOsztaly.ID AS C_TANULOCSOPORTID
 | 
						|
      ,Tantargy.C_INTEZMENYID
 | 
						|
      ,Tantargy.C_TANEVID
 | 
						|
    FROM T_ORARENDIORA_OSSZES OrarendiOra
 | 
						|
      INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.C_INTEZMENYID = OrarendiOra.C_INTEZMENYID
 | 
						|
        AND Tantargy.C_TANEVID = OrarendiOra.C_TANEVID
 | 
						|
        AND Tantargy.TOROLT = 'F'
 | 
						|
        AND Tantargy.ID = OrarendiOra.C_TANTARGYID
 | 
						|
      INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = OrarendiOra.C_OSZTALYCSOPORTID
 | 
						|
        AND (tcs.C_BELEPESDATUM < OrarendiOra.C_ORAERVENYESSEGVEGE AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= OrarendiOra.C_ORAERVENYESSEGKEZDETE))
 | 
						|
        AND tcs.TOROLT = 'F'
 | 
						|
      INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
 | 
						|
      INNER JOIN T_TANULOCSOPORT_OSSZES tcsOsztaly ON tcsOsztaly.C_OSZTALYCSOPORTID = @osztalyCsoportId
 | 
						|
        AND (tcsOsztaly.C_BELEPESDATUM < OrarendiOra.C_ORAERVENYESSEGVEGE AND (tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM >= OrarendiOra.C_ORAERVENYESSEGKEZDETE))
 | 
						|
        AND tcsOsztaly.C_TANULOID = f.ID
 | 
						|
        AND tcsOsztaly.TOROLT = 'F'
 | 
						|
    WHERE 
 | 
						|
          (tcsOsztaly.C_KILEPESDATUM IS NULL OR tcsOsztaly.C_KILEPESDATUM > tcs.C_BELEPESDATUM)
 | 
						|
      AND OrarendiOra.C_INTEZMENYID = @intezmenyId
 | 
						|
      AND OrarendiOra.C_TANEVID = @tanevId
 | 
						|
      AND OrarendiOra.TOROLT = 'F'
 | 
						|
      AND (@isCsoport = 0  OR OrarendiOra.C_OSZTALYCSOPORTID = @osztalyCsoportId)
 | 
						|
 | 
						|
    UNION
 | 
						|
      -- Értékelést kapott tárgyak
 | 
						|
    SELECT DISTINCT
 | 
						|
       TanuloErtekeles.TantargyId
 | 
						|
      ,TanuloErtekeles.FotargyId
 | 
						|
      ,TanuloErtekeles.TanuloId
 | 
						|
      ,TanuloErtekeles.TanuloCsoportId AS C_TANULOCSOPORTID
 | 
						|
      ,@intezmenyId
 | 
						|
      ,@tanevId
 | 
						|
    FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevId, @osztalyCsoportId, DEFAULT, DEFAULT, @csakKivalasztottOsztalyCsoport, DEFAULT, DEFAULT) AS TanuloErtekeles
 | 
						|
  )
 | 
						|
 | 
						|
  SELECT
 | 
						|
     NULL
 | 
						|
    ,NULL
 | 
						|
    ,'Magatartás'
 | 
						|
    ,''
 | 
						|
    ,0
 | 
						|
    ,f.ID
 | 
						|
    ,tcs.ID
 | 
						|
    ,0
 | 
						|
    ,''
 | 
						|
    ,0
 | 
						|
    ,0
 | 
						|
    ,''
 | 
						|
    ,@intezmenyId
 | 
						|
    ,@tanevId
 | 
						|
  FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
    LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
 | 
						|
  WHERE 
 | 
						|
    tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId 
 | 
						|
    AND tcs.TOROLT = 'F'
 | 
						|
 | 
						|
  UNION ALL
 | 
						|
 | 
						|
  SELECT
 | 
						|
     NULL
 | 
						|
    ,NULL
 | 
						|
    ,'Szorgalom'
 | 
						|
    ,''
 | 
						|
    ,0
 | 
						|
    ,f.ID
 | 
						|
    ,tcs.ID
 | 
						|
    ,1
 | 
						|
    ,''
 | 
						|
    ,0
 | 
						|
    ,0
 | 
						|
    ,''
 | 
						|
    ,@intezmenyId
 | 
						|
    ,@tanevId
 | 
						|
  FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
    LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
 | 
						|
  WHERE 
 | 
						|
    tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId 
 | 
						|
    AND tcs.TOROLT = 'F'
 | 
						|
 | 
						|
  UNION ALL
 | 
						|
 | 
						|
  SELECT DISTINCT
 | 
						|
     KapcsopodoTantargy.ID
 | 
						|
    ,KapcsopodoTantargy.C_FOTARGYID
 | 
						|
    ,KapcsopodoTantargy.C_NEV
 | 
						|
    ,KapcsopodoTantargy.C_NEVNYOMTATVANYBAN
 | 
						|
    ,KapcsopodoTantargy.C_TARGYKATEGORIA
 | 
						|
    ,tantargy_CTE.c_tanuloId
 | 
						|
    ,tantargy_CTE.c_tanulocsoportid
 | 
						|
    ,CASE WHEN KapcsopodoTantargy.C_FOTARGYID IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END RENDEZ1
 | 
						|
    ,ISNULL(ISNULL(Fotargy.C_NEVNYOMTATVANYBAN, Fotargy.C_NEV), ISNULL(KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_NEV)) AS RENDEZ2
 | 
						|
    ,ISNULL(KapcsopodoTantargy.C_FOTARGYID, KapcsopodoTantargy.ID) AS RENDEZ3
 | 
						|
    ,KapcsopodoTantargy.C_FOTARGYID AS RENDEZ4
 | 
						|
    ,ISNULL(KapcsopodoTantargy.C_NEVNYOMTATVANYBAN, KapcsopodoTantargy.C_NEV) AS RENDEZ5
 | 
						|
    ,KapcsopodoTantargy.C_INTEZMENYID
 | 
						|
    ,KapcsopodoTantargy.C_TANEVID
 | 
						|
  FROM tantargy_CTE 
 | 
						|
    INNER JOIN #KapcsopodoTantargy KapcsopodoTantargy ON tantargy_CTE.C_TANTARGYID = KapcsopodoTantargy.ID OR tantargy_CTE.C_FOTARGYID = KapcsopodoTantargy.ID
 | 
						|
    LEFT JOIN T_TANTARGY_OSSZES Fotargy ON Fotargy.C_INTEZMENYID = tantargy_CTE.C_INTEZMENYID
 | 
						|
      AND Fotargy.C_TANEVID = tantargy_CTE.C_TANEVID
 | 
						|
      AND Fotargy.TOROLT = 'F'
 | 
						|
      AND Fotargy.ID = tantargy_CTE.C_FOTARGYID
 | 
						|
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON TargyKategoriaDictionary.Id = KapcsopodoTantargy.C_TARGYKATEGORIA
 | 
						|
      AND TargyKategoriaDictionary.TOROLT = 'F'
 | 
						|
      AND TargyKategoriaDictionary.C_TANEVID = @tanevId
 | 
						|
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON FotargyKategoriaDictionary.ID = Fotargy.C_TARGYKATEGORIA
 | 
						|
      AND FotargyKategoriaDictionary.TOROLT = 'F'
 | 
						|
      AND FotargyKategoriaDictionary.C_TANEVID = Fotargy.C_TANEVID
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
 |