kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20170621100825_KRETA_2005/sp_GetCsoportNaplo.sql
2024-03-13 00:33:46 +01:00

258 lines
No EOL
9.8 KiB
Transact-SQL

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 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