﻿DROP PROCEDURE IF EXISTS sp_GetNemMegtartottOrakSzamaByHet

GO
CREATE PROCEDURE sp_GetNemMegtartottOrakSzamaByHet
	@pFeladatKategoriaId	INT = NULL,
	@pIntezmenyId			INT,
	@pTanevId				INT,
	@pOsztalyId				INT,
	@pHetSorszam			INT,
	@pFeladatEllatasiHelyId	INT = NULL
AS
BEGIN

	DECLARE @pCsakOrarendiOrak bit = 0;
	DECLARE @pIdoszakKezdete datetime;
	DECLARE @pIdoszakVege datetime;
	
    DECLARE 
     @sql nvarchar(max)
    ,@OrarendSql nvarchar(max)
    ,@selectSql nvarchar(max)
    ,@whereSql nvarchar(max)
    ,@orderSql nvarchar(max) = ''
	
  SET @OrarendSql = N'
  CREATE TABLE #OrarendTable (
     Id int
    ,ORARENDIID int
    ,Datum datetime
    ,Bontott char(1)
    ,Hetirend int
    ,HetNapja int
    ,HetSorszam int
    ,ErvenyessegKezdete datetime
    ,ErvenyessegVege datetime
    ,OraKezdete datetime
    ,OraVege datetime
    ,Oraszam int
    ,TargyNev nvarchar(300)
    ,TargyNevForMobile nvarchar(300)
    ,TargykategoriaID int
    ,Megtartott char(1)
    ,CsengetesiRendOraID int
    ,CsengetesiRendID int
    ,MaxNapiOraszam int
    ,OsztalyNev nvarchar(255)
    ,TanevRendOsztalyCsoportId int
    ,MegjelenesOka nvarchar(300)
    ,TanarNev nvarchar(255)
    ,TeremNev nvarchar(255)
	,TeremId int
    ,OraTipus nvarchar(200)
    ,Hianyzas char(1)
    ,Keses char(1)
    ,Ures char(1)
    ,HelyettesitoTanarID int
    ,HelyettesitoTanarNev nvarchar(255)
	,HelyettesitesId int
    ,TanarID int
    ,AdminAltalKiirt  char(1)
    ,GroupId int
    ,Tema nvarchar(max)
    ,TantargyId int
    ,OsztCsopId int
    ,IsEgyediNap char(1)
    ,TeremTobbOratLehetTartani char(1)
    ,KozpontiOraGroupId uniqueidentifier NULL
	,KozpontilagToroltOraGroupId uniqueidentifier NULL
  )
	
	SELECT
		 @pIdoszakKezdete = nh.C_HETKEZDONAPJA
		,@pIdoszakVege = nh.C_HETUTOLSONAPJA
	FROM T_NAPTARIHET nh
	WHERE nh.C_INTEZMENYID = @pIntezmenyId 
    AND nh.C_TANEVID = @pTanevId 
    AND nh.TOROLT = ''F''
		AND nh.C_HETSORSZAMA = @pHetSorszam
	
	INSERT INTO #OrarendTable (
		Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
		TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
		MegjelenesOka,TanarNev,TeremNev,TeremId,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,HelyettesitesId,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId,IsEgyediNap,TeremTobbOratLehetTartani,KozpontiOraGroupId,KozpontilagToroltOraGroupId)
	EXEC sp_GetOrarend
     @pIntezmenyId = @pIntezmenyId
    ,@pTanevId = @pTanevId
    ,@pIdoszakKezdete = @pIdoszakKezdete
    ,@pIdoszakVege = @pIdoszakVege
    ,@pTanarId = NULL
    ,@pIsHelyettesitesNelkul  = 0
    ,@pOsztalyCsoportId  =  @pOsztalyId
    ,@pTanuloId = NULL
    ,@pTantargyId  = NULL
    ,@pTeremId = NULL
    ,@pCsakOrarendiOrak  = @pCsakOrarendiOrak
    ,@pIsNapirend = NULL'  

  SET @selectSql = N'
	SELECT DISTINCT
		 tmp.Id AS Id
		,tmp.HetSorszam AS HetSzama
		,tmp.Datum AS Datum
		,tmp.HetNapja AS HetNapja
		,tmp.Oraszam AS Oraszam
		,tmp.OsztalyNev AS OsztalyNev
		,tmp.TargyNev AS TargyNev
		,ISNULL(tmp.HelyettesitoTanarNev, tmp.TanarNev) AS TanarNev
		,tmp.OraKezdete AS OraKezdete
		,tmp.OraVege AS OraVege
		,tmp.CsengetesiRendID AS CsengetesiRend
		,tmp.IsEgyediNap as IsEgyediNap
	FROM #OrarendTable tmp
  INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tmp.OsztCsopId = ocs.ID'

  SET @whereSql = N'
  WHERE tmp.OraTipus = ''OrarendiOra''
		AND tmp.HetSorszam = @pHetSorszam
		AND tmp.OraVege < GETDATE()'

  IF @pFeladatKategoriaId IS NOT NULL BEGIN
	  SET @whereSql += N'
        AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId'
  END

  IF @pFeladatEllatasiHelyId IS NOT NULL BEGIN
    SET @whereSql += N'
        AND ocs.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId'
  END

  SET @orderSql = N'
    ORDER BY tmp.Datum ASC,tmp.Oraszam ASC'


  SET @sql = @OrarendSql + @selectSql + @whereSql + @orderSql

  EXEC sp_executesql @sql, N'
     @pIntezmenyId INT
    ,@pTanevId INT 
    ,@pIdoszakKezdete DATETIME
    ,@pIdoszakVege DATETIME 
    ,@pOsztalyId  INT 
    ,@pCsakOrarendiOrak  BIT
    ,@pHetSorszam INT
    ,@pFeladatKategoriaId INT 
    ,@pFeladatEllatasiHelyId INT'
    ,@pIntezmenyId = @pIntezmenyId
    ,@pTanevId = @pTanevId
    ,@pIdoszakKezdete = @pIdoszakKezdete
    ,@pIdoszakVege = @pIdoszakVege
    ,@pOsztalyId  =  @pOsztalyId
    ,@pCsakOrarendiOrak  = @pCsakOrarendiOrak
    ,@pHetSorszam = @pHetSorszam
    ,@pFeladatKategoriaId = @pFeladatKategoriaId
    ,@pFeladatEllatasiHelyId = @pFeladatEllatasiHelyId
END
GO