238 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			238 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS uspGetDokumentumTantargyakErtekeleshez
 | 
						|
GO
 | 
						|
 | 
						|
 | 
						|
CREATE PROCEDURE uspGetDokumentumTantargyakErtekeleshez
 | 
						|
   @intezmenyId int
 | 
						|
  ,@tanevId int
 | 
						|
  ,@osztalyCsoportId int
 | 
						|
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
 | 
						|
  
 | 
						|
  SELECT @elsoNap = C_KEZDONAP, @utolsoNap = C_UTOLSONAP FROM T_TANEV_OSSZES WHERE ID = @tanevId
 | 
						|
 | 
						|
  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
 | 
						|
  )
 | 
						|
  -- Összeszedjük az osztályhoz kapcsolódó csoportokat
 | 
						|
  CREATE TABLE #KapcsolodoOsztalyCsoport(
 | 
						|
     Id int PRIMARY KEY
 | 
						|
    ,Kezdete datetime
 | 
						|
    ,Vege datetime
 | 
						|
  )
 | 
						|
 | 
						|
  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
 | 
						|
 | 
						|
  IF EXISTS (SELECT ID FROM T_OSZTALY_OSSZES WHERE ID = @osztalyCsoportId) BEGIN
 | 
						|
    INSERT INTO #KapcsolodoOsztalyCsoport (ID)
 | 
						|
      SELECT DISTINCT kocs.ID
 | 
						|
      FROM fnGetKapcsolodoOsztalycsoportokByDate(@osztalyCsoportId, @elsoNap, @utolsoNap) kocs
 | 
						|
        LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = kocs.ID
 | 
						|
        LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA
 | 
						|
      WHERE (cs.ID IS NULL OR cst.C_ISTANORAICELU = 'T')
 | 
						|
    END
 | 
						|
    ELSE BEGIN
 | 
						|
      -- Csoport esetén csak a keresett csoport kell legyen tagja
 | 
						|
      INSERT INTO #KapcsolodoOsztalyCsoport (ID)
 | 
						|
      SELECT @osztalyCsoportId
 | 
						|
    END;
 | 
						|
 | 
						|
  -- Ö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 #KapcsolodoOsztalyCsoport kocs ON kocs.ID = Foglalkozas.C_OSZTALYCSOPORTID
 | 
						|
      INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = kocs.ID
 | 
						|
        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 Foglalkozas.C_INTEZMENYID = @intezmenyId
 | 
						|
      AND Foglalkozas.C_TANEVID = @tanevId
 | 
						|
      AND Foglalkozas.TOROLT = 'F'
 | 
						|
 | 
						|
    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 #KapcsolodoOsztalyCsoport kocs ON kocs.ID = OrarendiOra.C_OSZTALYCSOPORTID
 | 
						|
      INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = kocs.ID
 | 
						|
        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 OrarendiOra.C_INTEZMENYID = @intezmenyId
 | 
						|
      AND OrarendiOra.C_TANEVID = @tanevId
 | 
						|
      AND OrarendiOra.TOROLT = 'F'
 | 
						|
 | 
						|
    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, 1, DEFAULT, DEFAULT) AS TanuloErtekeles
 | 
						|
  )
 | 
						|
--      UNION ALL
 | 
						|
--      -- AMI-s értékelés
 | 
						|
---- összevonható-e az alap értékeléssel
 | 
						|
--        SELECT DISTINCT
 | 
						|
--        TanuloErtekeles.C_TANTARGYID,
 | 
						|
--        Tantargy.C_FOTARGYID,
 | 
						|
--        TanuloErtekeles.C_TANULOID,
 | 
						|
--        tcs.ID as C_TANULOCSOPORTID,
 | 
						|
--        Tantargy.C_INTEZMENYID,
 | 
						|
--        Tantargy.C_TANEVID
 | 
						|
--      FROM
 | 
						|
---- helyett az fnGetDokumentumErtekelesekOsztalyonkent
 | 
						|
--        T_TANULOERTEKELES_OSSZES TanuloErtekeles
 | 
						|
--      INNER JOIN
 | 
						|
--        T_TANTARGY_OSSZES Tantargy ON
 | 
						|
--          Tantargy.C_INTEZMENYID      = TanuloErtekeles.C_INTEZMENYID
 | 
						|
--        AND Tantargy.C_TANEVID        = TanuloErtekeles.C_TANEVID
 | 
						|
--        AND Tantargy.TOROLT          = 'F'
 | 
						|
--        AND  Tantargy.ID            = TanuloErtekeles.C_TANTARGYID
 | 
						|
--      INNER JOIN
 | 
						|
--        T_OSZTALYCSOPORT_OSSZES Osztaly ON
 | 
						|
--            Osztaly.C_INTEZMENYID    = TanuloErtekeles.C_INTEZMENYID
 | 
						|
--          AND Osztaly.C_TANEVID      = TanuloErtekeles.C_TANEVID
 | 
						|
--          AND  Osztaly.TOROLT        = 'F'
 | 
						|
--          AND  Osztaly.ID          = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
 | 
						|
--          AND Osztaly.C_EVFOLYAMTIPUSA  = @evfolyamTipusId
 | 
						|
--      INNER JOIN
 | 
						|
--        T_TANULOCSOPORT_OSSZES tcs ON
 | 
						|
--          tcs.C_OSZTALYCSOPORTID = Osztaly.ID
 | 
						|
--          AND tcs.C_TANULOID = TanuloErtekeles.C_TANULOID
 | 
						|
---- and ertekels-datum between tcs.belépés and tcs. kilépés
 | 
						|
--      WHERE
 | 
						|
--          TanuloErtekeles.C_INTEZMENYID  = @intezmenyId
 | 
						|
--        AND TanuloErtekeles.C_TANEVID    = @tanevId
 | 
						|
--        AND TanuloErtekeles.TOROLT      = 'F'
 | 
						|
--        AND TanuloErtekeles.C_TANTARGYID IS NOT NULL
 | 
						|
--        AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL
 | 
						|
 | 
						|
  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
 | 
						|
 | 
						|
 |