DROP PROCEDURE IF EXISTS dbo.uspGetUzenofuzetErtekelolap
GO

CREATE PROCEDURE [dbo].[uspGetUzenofuzetErtekelolap]
   @osztalyId int
  ,@tanevId int
  ,@intezmenyId int
  ,@osztalyzatTipusTypeID int = 44
  ,@magatartasErtekelesTipusTypeID int = 50
  ,@szorgalomErtekelesTipusTypeID int = 51
AS
BEGIN
  SET NOCOUNT ON;

  CREATE TABLE #szovegesTemp (
     TanuloId int
    ,TanuloCsoportId int 
    ,Honap nvarchar(100)
    ,Tantargy nvarchar(510)
    ,Ertekeles nvarchar(MAX)
    ,Tipus nvarchar(500)
    ,RogzitesDatum datetime
    ,RendezHonap int
  )

  --Intézmény, tanév
  SELECT 
     T_INTEZMENYADATOK_OSSZES.C_NEV        IntezmenyNeve
    ,T_INTEZMENYADATOK_OSSZES.C_VAROS        IntezmenyVaros
    ,dbo.fnGetDokumentumIntezmenyCime(@tanevId)  IntezmenyCime
    ,T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM    TELEFON
    ,T_INTEZMENYADATOK_OSSZES.C_EMAILCIM      EMAILCIM
    ,T_INTEZMENYADATOK_OSSZES.C_OMKOD        IntezmenyOMKod
    ,T_INTEZMENYADATOK_OSSZES.C_IGAZGATONEVE    Intezmenyvezeto 
    ,(SELECT C_OSZTALYFONOKID FROM T_OSZTALY_OSSZES WHERE T_OSZTALY_OSSZES.ID = @osztalyId AND T_OSZTALY_OSSZES.C_ALTANEVID = @tanevId AND T_OSZTALY_OSSZES.TOROLT = 'F') PartnerID
    ,T_TANEV_OSSZES.C_NEV              TANEV
    ,@osztalyId AS  OsztalyId
  FROM T_INTEZMENYADATOK_OSSZES
    INNER JOIN T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID AND T_TANEV_OSSZES.C_INTEZMENYID = T_INTEZMENYADATOK_OSSZES.C_INTEZMENYID AND T_TANEV_OSSZES.TOROLT = 'F'
  WHERE T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
    AND T_TANEV_OSSZES.ID = @tanevId

  --Osztály, évfolyam
  SELECT 
     ocs.C_NEV
    ,ocs.C_EVFOLYAMTIPUSA
    ,f.C_NYOMTATASINEV Osztalyfonok
    ,ocs.ID  AS  OsztalyId
    ,f.ID AS  OsztalyfonokId
    ,ocs.C_EVFOLYAMTIPUSA    EvfolyamTipusa
    ,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
    ,o.C_TANTERVID      TantervId
    ,ocs.C_KEPZESIFORMA    KepzesiForma
    ,o.C_AGAZAT        Agazat
    ,o.C_SZAKMACSOPORT    SzakmaCsoport
    ,o.C_SZAKKEPESITES    Szakkepesites
    ,o.C_RESZSZAKKEPESITES  Reszszakkepesites
    ,o.C_AGAZATUJSZKTTIPUSID AS UjSzktAgazat
    ,o.C_SZAKMATIPUSID AS UjSzktSzakma
    ,o.C_SZAKMAIRANYTIPUSID AS UjSzktSzakmairany
    ,o.C_TANULMANYITERULETNKTTIPUSID AS NktTanulmanyiTerulet
    ,o.C_SZAKKEPESITESNKTTIPUSID AS NktSzakkepesites
    ,o.C_SZAKIRANYNKTTIPUSID AS NktSzakirany
    ,ocs.C_KERESZTFELEVES  OJCSJKeresztfeleves
    ,ocs.C_VEGZOSEVFOLYAM  CSJVegzosEvfolyamu
    ,ocs.C_ISTECHNIKAI  OJTechnikaiOsztaly
    ,o.C_NEMZETISEGI    OJNemzetisegi
    ,o.C_KETTANNYELVU    OJKettannyelvu
    ,o.C_NYELVIELOKESZITO  OJNyelviElokeszito
    ,ocs.C_ISGYOGYPEDAGOGIAILOGOPEDIAI      OJIsGyogypedagogiaiLogopediai
    ,o.C_SPORT        OJSportOsztaly
    ,o.C_AJPROGRAM      OJAranyJanosProgram
  FROM T_OSZTALYCSOPORT_OSSZES AS ocs
    INNER JOIN T_OSZTALY_OSSZES AS o ON ocs.id = o.ID
    LEFT JOIN T_FELHASZNALO_OSSZES AS f ON f.id = o.c_osztalyfonokid
  WHERE ocs.TOROLT='F' 
    AND ocs.ID = @osztalyId
    AND ocs.C_TANEVID = @tanevId
  
  --Tanuló adatai
  SELECT 
     TanuloId            Id
    ,TanuloCsoportId        TanuloCsoportId
    ,OsztalyTanuloi.BelepesDatum  BelepesDatum
    ,OsztalyTanuloi.KilepesDatum  KilepesDatum
  INTO #studentsWithTanuloCsoport
  FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') OsztalyTanuloi

  SELECT 
     T_FELHASZNALO_OSSZES.ID            TanuloId
    ,TanuloCsoportId
    ,T_FELHASZNALO_OSSZES.C_NYOMTATASINEV    TANULONEV
    ,T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO  OKTATASIAZONOSITO
    ,@osztalyId AS  OsztalyId
  FROM T_FELHASZNALO_OSSZES
    INNER JOIN #studentsWithTanuloCsoport Tanulok ON Tanulok.Id = T_FELHASZNALO_OSSZES.Id
  ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV
  
  SELECT 
     Datum
    ,RogzitesDatum
    ,TipusId
    ,ErtekelesSzoveg
    ,ErtekelesSzovegFormazott
    ,ErtekelesSzovegRovidNev
    ,ErtekelesOsztalyzatId
    ,ErtekelesOsztalyzatValue
    ,ErtekelesOsztalyzatNev
    ,ErtekelesSzazalek
    ,MagatartasOsztalyzatId
    ,MagatartasOsztalyzatNev
    ,MagatartasSzoveg
    ,MagatartasSzovegRovidNev
    ,MagatartasErtekId
    ,MagatartasErtek
    ,SzorgalomOsztalyzatId
    ,SzorgalomOsztalyzatNev
    ,SzorgalomSzoveg
    ,SzorgalomSzovegRovidNev
    ,SzorgalomErtekId
    ,SzorgalomErtek
    ,TanuloId
    ,TanuloCsoportId
    ,OsztalyCsoportId
    ,TantargyId
    ,TantargyNevZarojellel
    ,TantargyNev
    ,TantargyNevNyomtatvanyban
    ,TargyKategoriaId
    ,FotargyE
    ,FotargyId
    ,Altantargy
    ,ErtekelesTema
    ,Jeloles
    ,JelolesAndErtekelesTema 
    ,isMagatartasSzorgalom
    ,RENDEZ0
    ,RENDEZ1 
    ,RENDEZ2
    ,RENDEZ3
    ,RENDEZ4
    ,RENDEZ5
  INTO #ErtekelesekTemp
  FROM fnGetDokumentumErtekelesekOsztalyonkent (@tanevId, @osztalyId, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, @osztalyzatTipusTypeID, @magatartasErtekelesTipusTypeID, @szorgalomErtekelesTipusTypeID)

  CREATE TABLE #Tantargyak(
     ID          INT
    ,C_FOTARGYID    INT
    ,C_NEV        NVARCHAR(255) COLLATE DATABASE_DEFAULT
    ,C_NEVNYOMTATVANYBAN  NVARCHAR(255) COLLATE DATABASE_DEFAULT
    ,C_TARGYKATEGORIA   INT
    ,c_tanuloid int
    ,c_tanulocsoportid  int
    ,RENDEZ0 int
    ,RENDEZ1 int
    ,RENDEZ2 nvarchar(255) COLLATE DATABASE_DEFAULT
    ,RENDEZ3 int
    ,RENDEZ4 int
    ,RENDEZ5 nvarchar(255) COLLATE DATABASE_DEFAULT
    ,C_INTEZMENYID     INT
    ,C_TANEVID       INT
  );
  EXEC uspGetDokumentumErtekelesekIdoszakonkent
     @tanevId  = @tanevId
    ,@osztalyCsoportId = @osztalyId
    ,@ertekelesTipusa = NULL
    ,@csakTanorai = 1
    ,@csakKivalasztottOsztalyCsoport = 0
    ,@atsoroltTanuloErtekelesek = 0
    ,@fuggolegesTantargyak = 0
    ,@isMegjegyzesMegjelenjen = 0
    ,@intezmenyId = @intezmenyId
    ,@osztalyzatTipusTypeID = @osztalyzatTipusTypeID
    ,@magatartasErtekelesTipusTypeID = @magatartasErtekelesTipusTypeID
    ,@szorgalomErtekelesTipusTypeID = @szorgalomErtekelesTipusTypeID

  /*Szöveges minősítések*/
  INSERT INTO #szovegesTemp
  SELECT
     a.tanuloId
    ,a.TanuloCsoportId
    ,a.Honap
    ,a.Tantargy
    ,a.Ertekeles
    ,a.Tipus
    ,a.RogzitesDatum
    ,a.RendezHonap
  FROM (
    SELECT
       s.Id tanuloId
      ,s.TanuloCsoportId
      ,szoveges.Honap
      ,szoveges.Tantargy
      ,szoveges.Ertekeles
      ,szoveges.Tipus
      ,szoveges.RendezHonap
      ,szoveges.RogzitesDatum
    FROM #studentsWithTanuloCsoport s
      INNER JOIN (
        SELECT
           TanuloId tanuloId
          ,TanuloCsoportId
          ,'[' + CONVERT(nvarchar (max), DATEPART(MONTH, Datum)) + '. hónap]' AS Honap
          ,IIF(TantargyNev <> TantargyNevNyomtatvanyban AND TantargyNevNyomtatvanyban IS NOT NULL, TantargyNevNyomtatvanyban + ' (' + TantargyNev + ')', TantargyNev) AS Tantargy
          ,IIF(Jeloles IS NOT NULL AND TipusId = 1518, LOWER(ISNULL(ErtekelesSzovegRovidNev, 'sz')) + Jeloles + '     ', '') + ErtekelesSzovegFormazott + ISNULL(' *' + ErtekelesTema, '')      Ertekeles
          ,ErtekelesTipusDictionary.C_NAME AS Tipus
          ,CASE
            WHEN DATEPART(MONTH, Datum) = 1 THEN 5
            WHEN DATEPART(MONTH, Datum) = 2 THEN 6
            WHEN DATEPART(MONTH, Datum) = 3 THEN 7
            WHEN DATEPART(MONTH, Datum) = 4 THEN 8
            WHEN DATEPART(MONTH, Datum) = 5 THEN 9
            WHEN DATEPART(MONTH, Datum) = 6 THEN 10
            WHEN DATEPART(MONTH, Datum) = 7 THEN 11
            WHEN DATEPART(MONTH, Datum) = 8 THEN 12
            WHEN DATEPART(MONTH, Datum) = 9 THEN  1
            WHEN DATEPART(MONTH, Datum) = 10 THEN 2
            WHEN DATEPART(MONTH, Datum) = 11 THEN 3
            WHEN DATEPART(MONTH, Datum) = 12 THEN 4
          END AS RendezHonap
          ,RogzitesDatum
        FROM #ErtekelesekTemp ErtekelesTemp
          INNER JOIN T_DICTIONARYITEMBASE_OSSZES ErtekelesTipusDictionary ON ErtekelesTipusDictionary.ID = ErtekelesTemp.TipusId
            AND ErtekelesTipusDictionary.C_TANEVID = @tanevId
        WHERE ErtekelesSzoveg IS NOT NULL
      ) szoveges ON szoveges.TANULOID = s.Id
        AND s.TanuloCsoportId = szoveges.TanuloCsoportId
  ) a

  SELECT DISTINCT
     kulso.TanuloId
    ,kulso.TanuloCsoportId
    ,kulso.Honap
    ,kulso.Tantargy
    ,STUFF(((
      SELECT 
        '<br>|' + belso.Ertekeles
      FROM #szovegesTemp belso
      WHERE kulso.TanuloId = belso.TanuloId
        AND kulso.TanuloCsoportId = belso.TanuloCsoportId
        AND kulso.Honap = belso.Honap
        AND kulso.Tantargy = belso.Tantargy
        AND kulso.Tipus = belso.Tipus
      ORDER BY
         belso.RendezHonap ASC
        ,belso.Tantargy ASC
        ,belso.RogzitesDatum ASC
      FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'))
      ,1
      ,5
      ,'') AS Ertekeles
    ,kulso.Tipus
  FROM #szovegesTemp kulso

  DROP TABLE #studentsWithTanuloCsoport
  DROP TABLE #Tantargyak
END

GO