﻿IF OBJECT_ID('[dbo].[sp_GetCsoportNaplo]') IS NOT NULL BEGIN
  DROP PROCEDURE [dbo].[sp_GetCsoportNaplo]
END  
GO

CREATE PROCEDURE [dbo].[sp_GetCsoportNaplo]
  @tanevId				INT,
  @intezmenyid			INT,
  @csoportId			INT,
  @iskolaErdekuSzamit	BIT

AS
BEGIN
  SET NOCOUNT ON;

--Tanulók adatai, elérhetőségei
  DECLARE @tanulok TABLE (
     Id int
    ,Nev nvarchar(max)
    ,Osztaly nvarchar(max)
    ,Sorszam nvarchar(max)
    ,Torzslapszam nvarchar(max)
    ,Allampolgarsaga nvarchar(max)
    ,DiakIg nvarchar(max)
    ,SzulHely nvarchar(max)
    ,SzulIdo nvarchar(max)
    ,Anyja nvarchar(max)
    ,Taj nvarchar(20)
    ,OktAzon nvarchar(20)
    ,Kilepes nvarchar(max)
    ,Kepzes nvarchar(max)
    ,TanuloCimTipus nvarchar(max)
    ,TanuloCim nvarchar(max)
    ,TanuloTelefon nvarchar(max)
    ,TanuloEmail nvarchar(max)
    ,szoc nvarchar(max)
  )
 
  INSERT INTO @tanulok
  SELECT DISTINCT 
     t.id Id 
    ,iif(tcs.C_KILEPESDATUM is not null, f.C_NYOMTATASINEV + ' (kilépett)',f.c_nyomtatasinev) as Nev
    ,Osztaly.Osztaly as Osztaly
    ,t.c_naplosorszam as Sorszam
    ,t.c_beirasinaplosorszam as Torzslapszam
    ,Allampolgarsaga.C_NAME as Allampolgarsag
    ,t.c_diakigazolvanyszam as DiakIg
    ,f.c_szuletesihely as SzulHely 
		,FORMAT(f.c_szuletesidatum, 'yyyy. MMMM dd.', 'hu-hu') as SzulIdo
    ,f.c_anyjaneve as Anyja
    ,f.c_tajszam as Taj
    ,f.c_oktatasiazonosito as OktAzon
    ,FORMAT(tcs.c_kilepesdatum, 'yyyy. MMMM dd.', 'hu-hu') as Kilepes
    ,tt.c_nev as Kepzes 
		,cim.Tipus
    ,cim.cim
    ,tel.c_telefonszam
    ,email.c_emailcim as TanuloEmail
    ,IIF(t.C_MAGANTANULO = 'T', 'Magántanuló (eü. ok), ', '') + IIF(t.C_JOGVISZONYATSZUNETELTETO = 'T', 'Jogviszony szüneteltetve, ', '') + 
      IIF(t.C_SZAKMAIGYAKORLATON = 'T', 'Szakmai gyakorlat, ', '') + 
      IIF(t.C_SZOCIALISTAMOGATAS = 'T', 'Szociális támogatás, ', '') AS szoc
	FROM T_TANULOCSOPORT_OSSZES tcs
  	INNER JOIN T_FELHASZNALO_OSSZES f ON f.id=tcs.c_tanuloid AND f.torolt='F'
  	INNER JOIN T_DICTIONARYITEMBASE_OSSZES Allampolgarsaga ON Allampolgarsaga.Id = f.c_allampolgarsaga AND Allampolgarsaga.C_TANEVID = f.C_TANEVID
  	LEFT JOIN (
      SELECT tcs.c_tanuloid TanuloId, ocs.c_nev as Osztaly, tcs.c_kilepesdatum Kilepes 
      FROM T_TANULOCSOPORT_OSSZES tcs 
  		  INNER JOIN T_OSZTALY_OSSZES o ON o.id=tcs.c_osztalycsoportid 
  		  INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON o.id=ocs.id
    ) osztaly ON tcs.c_tanuloid=osztaly.TanuloId
  	INNER JOIN T_TANTERV_OSSZES tt ON tt.c_intezmenyid=tcs.c_intezmenyid AND tt.c_intezmenyid=@intezmenyid AND tt.c_tanevid=@tanevid
	  INNER JOIN T_TANULO_OSSZES t ON t.id=f.id
	  INNER JOIN (
      SELECT f.id Tanulo, dt.c_name Tipus, c.c_iranyitoszam+', '+c.c_varos+' '+c.c_kozterulet+' '+dj.c_name+' '+c.c_hazszam as Cim 
      FROM t_cim_osszes c
  			INNER JOIN (select distinct d.id, d.c_name from T_DICTIONARYITEMBASE_OSSZES d )dt ON dt.id=c.c_cimtipusa
  			INNER JOIN T_FELHASZNALO_OSSZES f ON f.id=c.c_felhasznaloid
  			INNER JOIN (select distinct d.id, d.c_name from T_DICTIONARYITEMBASE_OSSZES d)dj ON dj.id=c.c_kozteruletjellege
			WHERE c.c_cimtipusa = 907 
        AND c.c_gondviseloid is null 
        AND c.torolt='F' 
        AND c.c_tanevid=@tanevId
    ) cim ON cim.Tanulo=tcs.c_tanuloid
	  LEFT JOIN T_TELEFON_OSSZES tel ON tel.c_felhasznaloid = f.id AND tel.c_gondviseloid IS NULL AND tel.torolt = 'F' AND tel.c_alapertelmezett = 'T'
	  LEFT JOIN T_EMAIL_OSSZES email ON email.c_felhasznaloid = tcs.c_tanuloid AND email.c_gondviseloid IS NULL AND email.torolt = 'F' AND email.c_alapertelmezett = 'T'
  WHERE tcs.c_osztalycsoportid = @csoportId AND tcs.c_tanevid = @tanevid

--Kezdőoldal
  SELECT 
     ia.c_nev as IntezmenyNev
    ,ia.c_cime as IntezmenyCim
    ,ia.c_omkod as OMKOD
    ,ia.c_igazgatoneve as IntezmenyVezeto
    ,ocs.c_nev Csoport 
		,isnull(f.c_nyomtatasinev,'-') as CsoportVezeto
    ,isnull(cs.c_csoportnaploleiras,'-') as CsoportNaploLeiras
    ,FORMAT(cs.c_csoportnaplomegnyitasa, 'yyyy. MMMM dd.', 'hu-hu') as Megnyitas 
		,isnull(FORMAT(cs.c_csoportnaplozarasa, 'yyyy. MMMM dd.', 'hu-hu'),'-') as Lezaras
    ,ocs.c_nev RovidNev 
  FROM T_INTEZMENY_OSSZES i
	  INNER JOIN T_INTEZMENYADATOK_OSSZES ia ON ia.c_intezmenyid = i.id
	  INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.c_intezmenyid = i.id AND ocs.c_tanevid = @tanevid
	  INNER JOIN T_CSOPORT_OSSZES cs ON cs.id = ocs.id 
	  LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id=cs.c_csoportvezetoid
  WHERE i.id = @intezmenyid AND ia.c_tanevid = @tanevid AND ocs.id = @csoportId

  --Csoportot vezette
  SELECT isnull(f.c_nyomtatasinev,'-') as CsoportVezeto 
  FROM T_CSOPORT_OSSZES cs
  	LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id = cs.c_csoportvezetoid
  WHERE cs.id = @csoportId 

  --Tanulók
  SELECT DISTINCT Nev,  Osztaly, OktAzon FROM @tanulok

  --Naplóhetek
  DECLARE @elsonap as date
  DECLARE @utolsonap as date

  select @elsonap=c_elsotanitasinap, @utolsonap=c_utolsotanitasinap from t_tanev_osszes where id=@tanevId 

  SELECT 
     n.c_hetsorszama as Het
    ,FORMAT(convert(date,min(c_napdatuma)), 'yyyy. MMMM dd.', 'hu-hu')as HetEleje
    ,FORMAT(convert(date,max(c_napdatuma)), 'yyyy. MMMM dd.', 'hu-hu') as HetVege 
  FROM T_NAPTARINAP_OSSZES n
  WHERE n.c_napdatuma >= @elsonap 
   AND n.c_napdatuma <= @utolsonap 
   AND n.c_orarendinap = 'T'
   AND n.c_tanevid = @tanevid 
   AND n.c_intezmenyid = @intezmenyid
  GROUP BY n.c_hetsorszama

  --Tanuló adatok
  SELECT * FROM @tanulok

--Napló
  SELECT DISTINCT 
     nn.c_hetsorszama as Het
    ,d.Nap as Nap
    ,FORMAT(nn.c_napdatuma, 'yyyy. MMMM dd.', 'hu-hu') as Datum 
  FROM T_NAPTARINAP_OSSZES nn 
  	LEFT JOIN T_TANITASIORA_OSSZES tao ON tao.c_datum = nn.c_napdatuma AND tao.c_osztalycsoportid = @csoportid AND tao.torolt = 'F'
  	LEFT JOIN (select distinct d.id as ID, d.c_name Nap from T_DICTIONARYITEMBASE_OSSZES d) d ON d.id = nn.c_hetnapja 
  	LEFT JOIN T_FOGLALKOZAS_OSSZES fog ON fog.id=tao.c_foglalkozasid AND fog.c_tanevid = @tanevid 
  	LEFT JOIN T_FOGLALKOZASOK_TANAROK_OSSZES ft ON ft.c_foglalkozasokid=fog.id
  	LEFT JOIN T_FELHASZNALO_OSSZES f ON f.id=ft.c_tanarokid AND f.torolt='F'
  WHERE nn.c_orarendinap='T' AND nn.c_napdatuma >= @elsonap AND nn.c_napdatuma <= @utolsonap
  ORDER BY nn.c_hetsorszama, FORMAT(nn.c_napdatuma, 'yyyy. MMMM dd.', 'hu-hu')

--Napló adatok
  DECLARE @Orak TABLE (
     datum date
    ,Sorszam int
    ,Hetsorszam int
  )
  
  INSERT INTO @Orak
  SELECT DISTINCT 
     n.c_napdatuma datum
    ,sz.Oraszam
    ,n.c_hetsorszama
  FROM T_NAPTARINAP_OSSZES n
  CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10)) sz (Oraszam)
  WHERE n.c_napdatuma >= @elsonap 
    AND n.c_napdatuma <= @utolsonap
    AND n.c_orarendinap = 'T'
    AND TOROLT = 'F'
    AND n.C_TANEVID = @tanevId

  DECLARE @oraSorszam TABLE (Id int, EvesSorszam int)
  
  INSERT INTO @oraSorszam (Id, EvesSorszam)
  SELECT DISTINCT 
     s.Id 
    ,s.EvesSorszam
  FROM (
    SELECT DISTINCT tn.C_TANTARGYID, tn.C_OSZTALYCSOPORTID, ot.C_TANAROKID, tn.C_INTEZMENYID--, fh.C_NYOMTATASINEV
    FROM T_TANITASIORA_OSSZES tn
      INNER JOIN T_ORAK_TANAROK ot ON tn.ID = ot.C_ORAKID
      INNER JOIN T_FELHASZNALO fh ON fh.ID = ot.C_TANAROKID
    WHERE tn.C_OSZTALYCSOPORTID = @csoportid
  ) x
  CROSS APPLY dbo.fnGetEvesOraszamLista (
     x.C_TANTARGYID
    ,x.C_OSZTALYCSOPORTID
    ,x.C_TANAROKID
    ,GETDATE() 
    ,x.C_INTEZMENYID
    ,@tanevID
  ) s
  
  SELECT DISTINCT 
     o.Hetsorszam as Het
    ,o.Sorszam as Oraszam
    ,FORMAT(o.Datum, 'yyyy. MMMM dd.', 'hu-hu') as Datum
    ,FORMAT(tao.c_orakezdete, 'hh:mm')as OraKezd
    ,fh.C_NYOMTATASINEV as Tanar
    ,os.EvesSorszam as Sorszam
    ,tao.c_tema as Tema
  FROM @Orak o
  	LEFT JOIN T_TANITASIORA_OSSZES tao ON tao.c_datum = o.Datum 
      AND tao.torolt = 'F' 
      AND tao.c_oraszam = o.Sorszam 
      AND tao.c_tanevid = @tanevid
      AND tao.c_osztalycsoportid = @csoportid
    LEFT JOIN @oraSorszam os ON os.Id = tao.ID
    LEFT JOIN T_ORAK_TANAROK ot ON tao.ID = ot.C_ORAKID
    LEFT JOIN T_FELHASZNALO fh ON fh.ID = ot.C_TANAROKID
  ORDER BY Oraszam


--Napló mulasztás
  SELECT C_HETSORSZAMA Het, C_NYOMTATASINEV Tanulo, 
     MAX([1]) AS [Hetfo]
    ,MAX([2]) AS [Kedd]
    ,MAX([3]) AS [Szerda]
    ,MAX([4]) AS [Csutortok]
    ,MAX([5]) AS [Pentek]
    ,MAX([6]) AS [Szombat] 
  FROM (
    SELECT C_HETSORSZAMA, C_NYOMTATASINEV, [0], [1], [2], [3], [4], [5], [6]
    FROM (
     SELECT DISTINCT n.C_NAPTARINAPID, DATEPART(dw,n.C_DATUM) AS NAP, t.C_NYOMTATASINEV, n.C_HETSORSZAMA,
      '[' + STUFF((
        SELECT  ', ' + CAST(o.C_ORASZAM AS VARCHAR(3)) + IIF(tm.C_TIPUS = 1500, '', '(k)')
        FROM T_TANULOMULASZTAS_OSSZES tm
          INNER JOIN T_TANITASIORA_OSSZES o ON o.ID = tm.C_TANITASIORAKID  
		      INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.id=@csoportid
        WHERE n.C_NAPTARINAPID = o.C_NAPTARINAPID
          AND m.C_ORATANULOIID = tm.C_ORATANULOIID
          AND o.C_TANEVID = @tanevID 
          AND tm.C_TANEVID = @tanevID
		  AND TM.TOROLT='F'
		  AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
        ORDER BY o.C_NAPTARINAPID, o.C_ORASZAM
        FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') + '] ' + CAST(SUM(IIF(m.C_IGAZOLT = 'T', 1, 0)) AS varchar(2)) + '/' + CAST(SUM(IIF(m.C_IGAZOLT = 'T' OR m.C_TIPUS = 1499, 0, 1)) AS varchar(2)) AS hianyzas
      FROM T_TANITASIORA_OSSZES n
        INNER JOIN T_TANULOMULASZTAS_OSSZES m ON m.C_TANITASIORAKID = n.ID  AND m.TOROLT='F'
        INNER JOIN T_FELHASZNALO_OSSZES t ON t.ID = m.C_ORATANULOIID
      WHERE 
		n.C_TANEVID = @tanevID 
		AND m.C_TANEVID = @tanevID 
		AND n.c_osztalycsoportid=@csoportId 
		AND n.torolt='F' 
		AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
      GROUP BY n.C_NAPTARINAPID, C_ORATANULOIID, C_NYOMTATASINEV, n.C_HETSORSZAMA, n.C_DATUM) AS SUB
      PIVOT
      (
      MAX(HIANYZAS)
      FOR NAP IN ([0], [1], [2], [3], [4], [5], [6])
    ) AS PivotTable
  ) AS x
  GROUP BY C_HETSORSZAMA, C_NYOMTATASINEV
  ORDER BY C_HETSORSZAMA  
END

GO