﻿DROP PROCEDURE IF EXISTS uspGetOsztalyTanuloinakKepzesiJellemzoi
GO

CREATE PROCEDURE uspGetOsztalyTanuloinakKepzesiJellemzoi
   @pTanevId int
  ,@pIntezmenyId int
  ,@pOsztalyId int
  ,@pJegyzekTipus int
  ,@pIsAktivTanev bit

AS BEGIN
  SET NOCOUNT ON;
  IF @pJegyzekTipus = 1
    BEGIN  
      SELECT
        --UJSZKT
         C_OSZTALYCSOPORTID OsztalyId
        ,C_AGAZATUJSZKTTIPUSID  AgazatUjSzktTipusId
        ,agazatDict.C_NAME  AgazatUjSzktTipus           
        ,C_SZAKMATIPUSID  SzakmaTipusId
        ,szakmaTipusDict.C_NAME  SzakmaTipus
        ,C_SZAKMAIRANYTIPUSID SzakmairanyTipusId
        ,szakmairanyTipusDict.C_NAME  SzakmairanyTipus
        ,COUNT(C_OSZTALYCSOPORTID) Letszam 
        ,@pJegyzekTipus JegyzekTipus
      FROM  T_TANULOCSOPORT_OSSZES tcs
        INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON  tta.C_TANULOCSOPORTID = tcs.ID AND tta.TOROLT = 'F'
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES agazatDict ON agazatDict.ID = tta.C_AGAZATUJSZKTTIPUSID and agazatDict.TOROLT = 'F' AND agazatDict.C_TANEVID = @pTanevId
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES szakmaTipusDict ON szakmaTipusDict.ID = tta.C_SZAKMATIPUSID and szakmaTipusDict.TOROLT = 'F' AND szakmaTipusDict.C_TANEVID = @pTanevId
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES szakmairanyTipusDict ON szakmairanyTipusDict.ID = tta.C_SZAKMAIRANYTIPUSID and szakmairanyTipusDict.TOROLT = 'F' AND szakmairanyTipusDict.C_TANEVID = @pTanevId
      WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyId
        AND (@pIsAktivTanev = 0 OR tcs.C_BELEPESDATUM <= GETDATE())
        AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE())
        AND (COALESCE (tta.C_AGAZATUJSZKTTIPUSID, tta.C_SZAKMATIPUSID, tta.C_SZAKMAIRANYTIPUSID) IS NOT NULL
              AND (tta.C_AGAZATUJSZKTTIPUSID <> 7920 OR tta.C_SZAKMATIPUSID <> 7946 OR tta.C_SZAKMAIRANYTIPUSID <> 8122)
        ) /*Ha bármelyik nem null vagy nem Na*/
        AND tcs.TOROLT = 'F'
        AND tcs.C_TANEVID = @pTanevId
        AND tcs.C_INTEZMENYID = @pIntezmenyId
      GROUP BY
         C_OSZTALYCSOPORTID
        ,C_AGAZATUJSZKTTIPUSID
        ,agazatDict.C_NAME        
        ,C_SZAKMATIPUSID
        ,szakmaTipusDict.C_NAME
        ,C_SZAKMAIRANYTIPUSID
        ,szakmairanyTipusDict.C_NAME     
    END

  IF @pJegyzekTipus = 2
    BEGIN
      SELECT
        --OKJ
         C_OSZTALYCSOPORTID  OsztalyId
        ,C_SZAKMACSOPORTID  SzakmacsoportId
        ,SzakmacsoportDict.C_NAME Szakmacsoport
        ,C_AGAZATID AgazatId
        ,agazatDict.C_NAME Agazat
        ,C_SZAKKEPESITESID  SzakkepesitesId
        ,SzakkepesitesDict.C_NAME Szakkepesites
        ,C_RESZSZAKKEPESITESID  ReszszakkepesitesId
        ,ReszszakkepesitesDict.C_NAME Reszszakkepesites
        ,COUNT(C_OSZTALYCSOPORTID) Letszam
        ,@pJegyzekTipus JegyzekTipus
      FROM  T_TANULOCSOPORT_OSSZES tcs
        INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON  tta.C_TANULOCSOPORTID = tcs.ID AND tta.TOROLT = 'F'
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES szakmacsoportDict ON szakmacsoportDict.ID = tta.C_SZAKMACSOPORTID and szakmacsoportDict.TOROLT = 'F' AND szakmacsoportDict.C_TANEVID = @pTanevId
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES agazatDict ON agazatDict.ID = tta.C_AGAZATID and agazatDict.TOROLT = 'F' AND agazatDict.C_TANEVID = @pTanevId
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES szakkepesitesDict ON szakkepesitesDict.ID = tta.C_SZAKKEPESITESID and szakkepesitesDict.TOROLT = 'F' AND szakkepesitesDict.C_TANEVID = @pTanevId
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES reszszakkepesitesDict ON reszszakkepesitesDict.ID = tta.C_RESZSZAKKEPESITESID and reszszakkepesitesDict.TOROLT = 'F' AND reszszakkepesitesDict.C_TANEVID = @pTanevId
      WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyId
        AND (@pIsAktivTanev = 0 OR tcs.C_BELEPESDATUM <= GETDATE())
        AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE())
        AND 
        (COALESCE (tta.C_SZAKMACSOPORTID,tta.C_AGAZATID, tta.C_SZAKKEPESITESID, tta.C_RESZSZAKKEPESITESID) IS NOT NULL
          AND (tta.C_SZAKMACSOPORTID <> 6084 OR tta.C_AGAZATID <> 5484 OR tta.C_SZAKKEPESITESID <> 5527 OR tta.C_RESZSZAKKEPESITESID <> 6108)
        )  /*Ha bármelyik nem null vagy nem Na*/
        AND tcs.TOROLT = 'F'
        AND tcs.C_TANEVID = @pTanevId
        AND tcs.C_INTEZMENYID = @pIntezmenyId
      GROUP BY
         C_OSZTALYCSOPORTID
        ,C_SZAKMACSOPORTID  
        ,SzakmacsoportDict.C_NAME
        ,C_AGAZATID
        ,agazatDict.C_NAME
        ,C_SZAKKEPESITESID
        ,SzakkepesitesDict.C_NAME
        ,C_RESZSZAKKEPESITESID
        ,ReszszakkepesitesDict.C_NAME
    END

  IF @pJegyzekTipus = 3
    BEGIN
      SELECT
        --NKT
         C_OSZTALYCSOPORTID OsztalyId
        ,C_SZAKIRANYNKTTIPUSID  SzakiranyNktTipusId
        ,szakiranyNktTipusDict.C_NAME SzakiranyNktTipus
        ,C_SZAKKEPESITESNKTTIPUSID SzakkepesitesNktTipusId
        ,szakkepesitesNktDict.C_NAME SzakkepesitesNktTipus
        ,C_TANULMANYITERULETNKTTIPUSID TanulmanyiTeruletNktTipusId
        ,tanulmanyiTeruletNktTipusDict.C_NAME TanulmanyiTeruletNktTipus
        ,COUNT(C_OSZTALYCSOPORTID) Letszam
        ,@pJegyzekTipus JegyzekTipus
      FROM  T_TANULOCSOPORT_OSSZES tcs
        INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON  tta.C_TANULOCSOPORTID = tcs.ID AND tta.TOROLT = 'F'
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES szakiranyNktTipusDict ON szakiranyNktTipusDict.ID = tta.C_SZAKIRANYNKTTIPUSID and szakiranyNktTipusDict.TOROLT = 'F' AND szakiranyNktTipusDict.C_TANEVID = @pTanevId
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES szakkepesitesNktDict ON szakkepesitesNktDict.ID = tta.C_SZAKKEPESITESNKTTIPUSID and szakkepesitesNktDict.TOROLT = 'F' AND szakkepesitesNktDict.C_TANEVID = @pTanevId
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES tanulmanyiTeruletNktTipusDict ON tanulmanyiTeruletNktTipusDict.ID = tta.C_TANULMANYITERULETNKTTIPUSID and tanulmanyiTeruletNktTipusDict.TOROLT = 'F' AND tanulmanyiTeruletNktTipusDict.C_TANEVID = @pTanevId
      WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyId
        AND (@pIsAktivTanev = 0 OR tcs.C_BELEPESDATUM <= GETDATE())
        AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE())
        AND (COALESCE (tta.C_SZAKIRANYNKTTIPUSID,tta.C_SZAKKEPESITESNKTTIPUSID, tta.C_TANULMANYITERULETNKTTIPUSID) IS NOT NULL
              AND (tta.C_SZAKIRANYNKTTIPUSID <> 8493 OR tta.C_SZAKKEPESITESNKTTIPUSID <> 8464 OR tta.C_TANULMANYITERULETNKTTIPUSID <> 8459)
        )  /*Ha bármelyik nem null vagy nem Na*/
        AND tcs.TOROLT = 'F'
        AND tcs.C_TANEVID = @pTanevId
        AND tcs.C_INTEZMENYID = @pIntezmenyId
      GROUP BY
         C_OSZTALYCSOPORTID
        ,C_SZAKIRANYNKTTIPUSID
        ,szakiranyNktTipusDict.C_NAME
        ,C_SZAKKEPESITESNKTTIPUSID
        ,szakkepesitesNktDict.C_NAME
        ,C_TANULMANYITERULETNKTTIPUSID
        ,tanulmanyiTeruletNktTipusDict.C_NAME
    END

  IF @pJegyzekTipus = 4
    BEGIN  
      SELECT
        --RESZSZAKMA
         C_OSZTALYCSOPORTID OsztalyId
        ,C_AGAZATRESZSZAKMATIPUSID  AgazatReszSzakmaTipusId
        ,agazatReszSzakmaDict.C_NAME  AgazatReszSzakmaTipus           
        ,C_SZAKMARESZSZAKMATIPUSID  SzakmaReszSzakmaTipusId
        ,szakmaReszSzakmaDict.C_NAME  SzakmaReszSzakmaTipus
        ,C_RESZSZAKMATIPUSID ReszSzakmaTipusId
        ,reszSzakmaDict.C_NAME  ReszSzakmaTipus
        ,COUNT(C_OSZTALYCSOPORTID) Letszam 
        ,@pJegyzekTipus JegyzekTipus
      FROM  T_TANULOCSOPORT_OSSZES tcs
        INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON  tta.C_TANULOCSOPORTID = tcs.ID AND tta.TOROLT = 'F'
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES agazatReszSzakmaDict ON agazatReszSzakmaDict.ID = tta.C_AGAZATRESZSZAKMATIPUSID and agazatReszSzakmaDict.TOROLT = 'F' AND agazatReszSzakmaDict.C_TANEVID = @pTanevId
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES szakmaReszSzakmaDict ON szakmaReszSzakmaDict.ID = tta.C_SZAKMARESZSZAKMATIPUSID and szakmaReszSzakmaDict.TOROLT = 'F' AND szakmaReszSzakmaDict.C_TANEVID = @pTanevId
        INNER JOIN T_DICTIONARYITEMBASE_OSSZES reszSzakmaDict ON reszSzakmaDict.ID = tta.C_RESZSZAKMATIPUSID and reszSzakmaDict.TOROLT = 'F' AND reszSzakmaDict.C_TANEVID = @pTanevId
      WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyId
        AND (@pIsAktivTanev = 0 OR tcs.C_BELEPESDATUM <= GETDATE())
        AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > GETDATE())
        AND (COALESCE (tta.C_AGAZATRESZSZAKMATIPUSID, tta.C_SZAKMARESZSZAKMATIPUSID, tta.C_RESZSZAKMATIPUSID) IS NOT NULL
              AND (tta.C_AGAZATRESZSZAKMATIPUSID <> 8832 OR tta.C_SZAKMARESZSZAKMATIPUSID <> 8850 OR tta.C_RESZSZAKMATIPUSID <> 8895)
        ) /*Ha bármelyik nem null vagy nem Na*/
        AND tcs.TOROLT = 'F'
        AND tcs.C_TANEVID = @pTanevId
        AND tcs.C_INTEZMENYID = @pIntezmenyId
      GROUP BY
         C_OSZTALYCSOPORTID
        ,C_AGAZATRESZSZAKMATIPUSID
        ,agazatReszSzakmaDict.C_NAME        
        ,C_SZAKMARESZSZAKMATIPUSID
        ,szakmaReszSzakmaDict.C_NAME
        ,C_RESZSZAKMATIPUSID
        ,reszSzakmaDict.C_NAME     
    END
END
GO
