﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Hoffmann Zsolt>
-- Create date: <2016.07.27>
-- Description:	<Osztályok éves óraszáma>
-- =============================================

IF OBJECT_ID('sp_GetOsztalyokEvesOraszama') IS NOT NULL BEGIN
  DROP PROCEDURE sp_GetOsztalyokEvesOraszama
END
GO

CREATE PROCEDURE [sp_GetOsztalyokEvesOraszama]
	@tanevID int
AS
BEGIN
DECLARE @osztalyID  INT = 0
DECLARE @osztalyNev VARCHAR(255)
DECLARE @HetekSzama INT = 0

	SET NOCOUNT ON;

	select
	@HetekSzama = DATEDIFF(ww, T_TANEV_OSSZES.C_ELSOTANITASINAP, T_TANEV_OSSZES.C_UTOLSOTANITASINAP)  
	from T_TANEV_OSSZES
	where TOROLT = 'F' 
	and ID = @tanevID

	select 
	T_OSZTALYCSOPORT_OSSZES.ID,
	T_OSZTALYCSOPORT_OSSZES.C_NEV Nev 
	into #Osztalyok
	from T_OSZTALYCSOPORT_OSSZES
	inner join T_OSZTALY_OSSZES on T_OSZTALY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID and T_OSZTALY_OSSZES. TOROLT = 'F'
	where T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F'
	and T_OSZTALYCSOPORT_OSSZES.C_TANEVID = @tanevID

	SELECT * FROM #Osztalyok

WHILE (1 = 1) 
	BEGIN
		SELECT TOP 1 @osztalyID=ID, @osztalyNev = Nev FROM #Osztalyok Osztalyok WHERE ID > @osztalyID ORDER BY ID
		IF @@ROWCOUNT = 0 
		BEGIN
			BREAK;
		END
		--A WHILE CIKLUS MIDEN LÉPÉSÉBEN VISSZAAD EGY TÁBLÁT
				select 
			T_FELHASZNALO_OSSZES.C_NYOMTATASINEV TanuloNev,
			T_TANTARGY_OSSZES.C_NEV TantargyNev,
			case
			when T_TANTARGY_OSSZES.C_FOTARGYE = 'T' then T_TANTARGY_OSSZES.C_NEV
			when T_TANTARGY_OSSZES.C_FOTARGYE = 'F' and T_TANTARGY_OSSZES.C_FOTARGYID is not null then FT.C_NEV
			else ''
			end as FotargyNev,
			isnull(case 
			when T_ORATERVTARGY_OSSZES.C_EVESORASZAM = 0 then HETEK.HetekSzama * T_FOGLALKOZAS_OSSZES.C_ORASZAM
			when T_ORATERVTARGY_OSSZES.C_EVESORASZAM > 0 and (HETEK.HetekSzama * T_FOGLALKOZAS_OSSZES.C_ORASZAM) > T_ORATERVTARGY_OSSZES.C_EVESORASZAM then HETEK.HetekSzama * T_FOGLALKOZAS_OSSZES.C_ORASZAM
			else T_ORATERVTARGY_OSSZES.C_EVESORASZAM
			end, 0) as EvesOraszam
			from T_FOGLALKOZAS_OSSZES
			inner join T_TANULOCSOPORT_OSSZES on T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID and T_TANULOCSOPORT_OSSZES.TOROLT = 'F'
			inner join T_OSZTALYCSOPORT_OSSZES on T_OSZTALYCSOPORT_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID and T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F'
			inner join T_FELHASZNALO_OSSZES on T_FELHASZNALO_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_TANULOID and T_FELHASZNALO_OSSZES.TOROLT = 'F'
			inner join T_TANTARGY_OSSZES on T_TANTARGY_OSSZES.ID = T_FOGLALKOZAS_OSSZES.C_TANTARGYID and T_TANTARGY_OSSZES.TOROLT = 'F'
			left join T_TANTARGY_OSSZES FT on FT.ID = T_TANTARGY_OSSZES.C_FOTARGYID and FT.TOROLT = 'F'
			left join T_ORATERV_OSSZES on T_ORATERV_OSSZES.C_EVFOLYAM = T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA 
										  and T_ORATERV_OSSZES.C_INTEZMENYID = T_FOGLALKOZAS_OSSZES.C_INTEZMENYID 
										  and T_ORATERV_OSSZES.C_TANEVID = @tanevID		
										  and T_ORATERV_OSSZES.TOROLT = 'F'	
			left join T_ORATERVTARGY_OSSZES on T_ORATERVTARGY_OSSZES.C_ORATERVID = T_ORATERV_OSSZES.ID
											   and T_ORATERVTARGY_OSSZES.C_TANTARGYID = T_TANTARGY_OSSZES.ID
											   and T_ORATERVTARGY_OSSZES.TOROLT = 'F'
			left join 
			(
			select 
				F.ID TanuloId,
				case 
				when TCS.C_BELEPESDATUM is not null and TCS.C_KILEPESDATUM is null then DATEDIFF(WW, TCS.C_BELEPESDATUM, TE.C_UTOLSOTANITASINAP)
				when TCS.C_BELEPESDATUM is null and TCS.C_KILEPESDATUM is not null then DATEDIFF(WW, TE.C_ELSOTANITASINAP, TCS.C_KILEPESDATUM)
				else DATEDIFF(WW, TCS.C_BELEPESDATUM, TCS.C_KILEPESDATUM)
				end as HetekSzama
				from T_FELHASZNALO_OSSZES F
				inner join T_TANULOCSOPORT_OSSZES TCS on TCS.C_TANULOID = F.ID and TCS.TOROLT = 'F'
				inner join T_TANEV_OSSZES TE on TE.ID = F.C_TANEVID and TE.TOROLT = 'F'
				where F.TOROLT = 'F'
				and TE.ID = @tanevID
				and ((TCS.C_BELEPESDATUM is not null and TCS.C_BELEPESDATUM > TE.C_ELSOTANITASINAP)
				or (TCS.C_KILEPESDATUM is not null and TCS.C_KILEPESDATUM < TE.C_UTOLSOTANITASINAP))
			) HETEK on  HETEK.TanuloId = T_FELHASZNALO_OSSZES.ID
			where T_FOGLALKOZAS_OSSZES.TOROLT = 'F' 
			and T_FOGLALKOZAS_OSSZES.C_TANEVID = @tanevID
			and T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyID
			order by T_FOGLALKOZAS_OSSZES.C_NEV, T_TANTARGY_OSSZES.C_NEV

	END
DROP TABLE #Osztalyok
END 