﻿DROP PROCEDURE IF EXISTS sp_GetNemMegtartottOrakSzamaPerHet 

GO 
CREATE PROCEDURE [sp_GetNemMegtartottOrakSzamaPerHet] 
	@pFeladatKategoriaId    INT = NULL,
	@pOsztalyId				INT, 
	@pFeladatEllatasiHelyId	INT = NULL,
	@pIntezmenyId		    INT, 
	@pTanevId			    INT 

AS
BEGIN

  SET NOCOUNT ON;
	
	DECLARE @pCsakOrarendiOrak BIT = 0;
	DECLARE @pIdoszakKezdete DATETIME;
	DECLARE @pIdoszakVege DATETIME = GETDATE()

  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)
   )
	
	SELECT
		@pIdoszakKezdete = nh.C_HETKEZDONAPJA
	FROM T_NAPTARIHET nh
	WHERE
		nh.C_INTEZMENYID = @pIntezmenyId AND nh.C_TANEVID = @pTanevId AND nh.TOROLT = ''F''
		AND nh.C_HETSORSZAMA = 1
	
	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)
	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.HetSorszam AS HetSorszam
	,COUNT(tmp.id) AS NemNaplozottOrakSzama
	,@pOsztalyId AS OsztalyID
    ,ISNULL(@pFeladatKategoriaId, '''')		as feladatKategoriaId
    ,ISNULL(@pFeladatEllatasiHelyId, '''')	as feladatEllatasiHelyId
	FROM #OrarendTable tmp
  INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tmp.OsztCsopId = ocs.ID'

  SET @whereSql = N'
  WHERE tmp.OraTipus = ''OrarendiOra''
		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'
    GROUP BY tmp.HetSorszam
	  ORDER BY tmp.HetSorszam'

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


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

END
GO