DROP PROCEDURE IF EXISTS dbo.sp_GetTanulokTantargyMulasztasokReszletezese
DROP PROCEDURE IF EXISTS dbo.uspGetTanulokTantargyMulasztasokReszletezese
GO

CREATE PROCEDURE [dbo].[uspGetTanulokTantargyMulasztasokReszletezese]
   @pOsztalyId int
  ,@pTanevId int
  ,@pIskolaErdekuSzamit bit

AS BEGIN
  SET NOCOUNT ON;

  CREATE TABLE #MulasztasOsztalyonkent(
     TantargyId int
    ,Tipusa int
    ,IgazolasTipusa int
    ,OsztalyCsoportId int
    ,TanuloId int
    ,TantargyNev nvarchar(1000)
    ,OsztalyCsoportNev nvarchar(510)
    ,Igazolt char(1)
    ,KesesPercben int
    ,Datum date
    ,OraszamWithOrakezdeteVege nvarchar(50)
	  ,RENDEZ1 INT
	  ,RENDEZ2 NVARCHAR(510)
	  ,RENDEZ3 INT
	  ,RENDEZ4 INT
	  ,RENDEZ5 NVARCHAR(510)
  )

  INSERT INTO #MulasztasOsztalyonkent(
     TantargyId
    ,Tipusa
    ,IgazolasTipusa
    ,OsztalyCsoportId
    ,TanuloID
    ,TantargyNev
    ,OsztalyCsoportNev
    ,Igazolt
    ,KesesPercben
    ,Datum
    ,OraszamWithOrakezdeteVege
	  ,RENDEZ1
	  ,RENDEZ2
	  ,RENDEZ3
	  ,RENDEZ4
	  ,RENDEZ5
  ) SELECT
     TantargyId
    ,Tipusa
    ,IgazolasTipusa
    ,OsztalyCsoportId
    ,TanuloID
    ,TantargyNev
    ,OsztalyCsoportNev
    ,Igazolt
    ,KesesPercben
    ,Datum
    ,OraszamWithOrakezdeteVege
    ,RENDEZ1
    ,RENDEZ2
    ,RENDEZ3
    ,RENDEZ4
    ,RENDEZ5
  FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @pIskolaErdekuSzamit, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT)

  /*FEJLEC*/
  SELECT
     IntezmenyAdat.C_NEV as IntezmenyNeve
    ,IntezmenyAdat.C_OMKOD as IntezmenyOMKod
    ,IntezmenyAdat.C_IGAZGATONEVE IntezmenyVezeto
    ,dbo.fnGetDokumentumIntezmenyCime(@pTanevId) as IntezmenyCime
    ,IntezmenyAdat.C_VAROS as IntezmenyVaros
    ,(SELECT C_NEV FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyId) as OsztalyCsoportNev
    ,@pOsztalyId as OsztalyId
    ,ofo.C_NYOMTATASINEV as OsztalyfonokNev
  FROM T_INTEZMENYADATOK_OSSZES IntezmenyAdat
    INNER JOIN T_OSZTALY_OSSZES AS o ON o.ID = @pOsztalyId AND o.TOROLT='F'
    LEFT JOIN T_FELHASZNALO_OSSZES AS ofo ON ofo.ID = o.C_OSZTALYFONOKID AND ofo.TOROLT='F'
  WHERE INTEZMENYADAT.C_TANEVID = @pTanevId AND IntezmenyAdat.TOROLT='F'

  /*TANULOK*/
  SELECT
     TanuloId
    ,Felhasznalo.C_NYOMTATASINEV as TanuloNev
    ,@pOsztalyId as OsztalyCsoportId
    ,Felhasznalo.C_OKTATASIAZONOSITO as TanuloOktAzon
  FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @pOsztalyId, 'T') Tanulok
    INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.ID = Tanulok.TanuloId AND Felhasznalo.TOROLT='F'
  ORDER BY Felhasznalo.C_NYOMTATASINEV

  /*MULASZTOTT TANTARGY*/
  SELECT DISTINCT
     TanuloId
    ,TantargyId
    ,TantargyNev as TantargyNev
    ,COUNT(1) as COUNT
	  ,RENDEZ1
	  ,RENDEZ2
	  ,RENDEZ3
	  ,RENDEZ4
	  ,RENDEZ5
  FROM #MulasztasOsztalyonkent MulasztasokOsztalyonkent
    INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.ID = MulasztasokOsztalyonkent.TantargyId AND Tantargy.TOROLT='F'
  GROUP BY TanuloId, TantargyId, TantargyNev, RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5
  ORDER BY TanuloId, RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5

  SELECT
     TanuloId
    ,OsztalyCsoportId
    ,OsztalyCsoportNev as OsztalyCsoportNev
    ,CASE
      WHEN Igazolt = 'T' THEN 'Igen'
      WHEN Igazolt = 'F' THEN 'Nem'
      ELSE ''
     END as Igazolt
    ,MulasztasTipus.C_NAME as Tipusa
    ,IgazolasTipus.C_NAME as IgazolasTipusa
    ,KesesPercben as Keses
    ,Datum as Datum
    ,OraszamWithOrakezdeteVege as Oraszam
    ,TantargyId
    ,Felhasznalo.C_NYOMTATASINEV as OsztalyfonokNev
  FROM #MulasztasOsztalyonkent MulasztasokOsztalyonkent
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES MulasztasTipus ON MulasztasokOsztalyonkent.Tipusa = MulasztasTipus.ID AND MulasztasTipus.C_TANEVID = @pTanevId AND MulasztasTipus.TOROLT='F'
    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES IgazolasTipus ON MulasztasokOsztalyonkent.IgazolasTipusa = IgazolasTipus.ID AND IgazolasTipus.C_TANEVID = @pTanevId AND IgazolasTipus.TOROLT='F'
    LEFT JOIN T_OSZTALY_OSSZES Osztaly ON MulasztasokOsztalyonkent.OsztalyCsoportId = Osztaly.ID AND Osztaly.TOROLT='F'
    LEFT JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Osztaly.C_OSZTALYFONOKID = Felhasznalo.ID AND Felhasznalo.TOROLT='F'
  ORDER BY Datum, RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5

  SELECT
     o.ID as OsztalyId
    ,ocs.C_EVFOLYAMTIPUSA as EvfolyamTipusa
    ,ocs.C_FELADATELLATASIHELYID as FeladatEllatasiHelyId
    ,ocs.C_KEPZESIFORMA as KepzesiForma
    ,o.C_OSZTALYFONOKID as OsztalyfonokId
    ,o.C_TANTERVID as TantervId
    ,o.C_SZAKMACSOPORT as SzakmaCsoport
    ,o.C_AGAZAT as Agazat
    ,o.C_SZAKKEPESITES as Szakkepesites
    ,o.C_RESZSZAKKEPESITES as Reszszakkepesites
    ,ocs.C_KERESZTFELEVES as OJCSJKeresztfeleves
    ,ocs.C_VEGZOSEVFOLYAM as CSJVegzosEvfolyamu
    ,o.C_TECHNIKAIOSZTALY as OJTechnikaiOsztaly
    ,o.C_NEMZETISEGI as OJNemzetisegi
    ,o.C_KETTANNYELVU as OJKettannyelvu
    ,o.C_NYELVIELOKESZITO as OJNyelviElokeszito
    ,o.C_LOGOPEDIAI as OJLogopediai
    ,o.C_SPORT as OJSportOsztaly
    ,o.C_AJPROGRAM as OJAranyJanosProgram
    ,o.C_GYOGYPEDAGOGIAI as OJGyogypedagogiai
  FROM T_OSZTALY_OSSZES as o
    INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.TOROLT = 'F'
  WHERE o.ID = @pOsztalyId AND o.TOROLT='F'
END
GO

