370 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			370 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
-- =============================================
 | 
						|
-- Author:		Telek Ákos
 | 
						|
-- Create date: 2018.01.15.
 | 
						|
-- Description:	Órarend lekérdezése.
 | 
						|
-- =============================================
 | 
						|
IF OBJECT_ID('sp_GetOrarend') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE sp_GetOrarend
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE sp_GetOrarend
 | 
						|
   @pIntezmenyId int
 | 
						|
  ,@pTanevId int
 | 
						|
  ,@pIdoszakKezdete datetime
 | 
						|
  ,@pIdoszakVege datetime
 | 
						|
  ,@pTanarId int
 | 
						|
  ,@pOsztalyCsoportId int
 | 
						|
  ,@pTanuloId int
 | 
						|
  ,@pCsakOrarendiOrak bit
 | 
						|
  ,@pIsNapirend bit = 0 /*0 csak orarendi ora, 1 csak napirend, NULL mindkettő*/
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  
 | 
						|
  SET NOCOUNT ON;
 | 
						|
  DECLARE @sql nvarchar(max) = ''
 | 
						|
  
 | 
						|
  /* Változók deklarálása */
 | 
						|
  SET @sql += N'
 | 
						|
	DECLARE 
 | 
						|
     @KezdoHet int = DATEPART( ISO_WEEK, @pIdoszakKezdete)
 | 
						|
	  ,@ZaroHet int = DATEPART( ISO_WEEK, @pIdoszakVege);
 | 
						|
 | 
						|
 | 
						|
	DECLARE @VegzosUtolsoTanitasiNap datetime;
 | 
						|
	SELECT @VegzosUtolsoTanitasiNap = C_DATUM
 | 
						|
	FROM T_TANEVRENDJE_OSSZES
 | 
						|
	WHERE TOROLT = ''F''
 | 
						|
		AND C_TANEVID = @pTanevId
 | 
						|
		AND C_NAPTIPUSA = 1402 
 | 
						|
 | 
						|
  DECLARE @IsVegzosEvfolyam char(1)
 | 
						|
  '
 | 
						|
  
 | 
						|
  /* A kapcsolódó osztálycsoportok összegyűjtése */
 | 
						|
  SET @sql += N'
 | 
						|
  DECLARE @OsztalyCsoportok table (
 | 
						|
     Id int PRIMARY KEY
 | 
						|
    ,Nev nvarchar(255)
 | 
						|
    ,Oka nvarchar(50)
 | 
						|
    ,IsVegzos char(1)
 | 
						|
    ,IdoszakVege datetime
 | 
						|
  );
 | 
						|
 | 
						|
  
 | 
						|
	IF @pOsztalyCsoportId IS NOT NULL BEGIN
 | 
						|
    SELECT @IsVegzosEvfolyam = C_VEGZOSEVFOLYAM 
 | 
						|
    FROM T_OSZTALYCSOPORT 
 | 
						|
    WHERE ID = @pOsztalyCsoportId  
 | 
						|
 | 
						|
    INSERT INTO @OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakVege)
 | 
						|
		SELECT kocs.ID, ocs.C_NEV, kocs.OKA, ocs.C_VEGZOSEVFOLYAM, IIF(@IsVegzosEvfolyam = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @pIdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @pIdoszakVege)
 | 
						|
    FROM [dbo].fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pIdoszakKezdete, @pIdoszakVege) kocs
 | 
						|
    INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = kocs.ID
 | 
						|
	END
 | 
						|
  ELSE BEGIN
 | 
						|
    IF @pTanuloId IS NOT NULL BEGIN
 | 
						|
      
 | 
						|
      SELECT @IsVegzosEvfolyam = MAX(ocs.C_VEGZOSEVFOLYAM) 
 | 
						|
      FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
        INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
 | 
						|
      WHERE EXISTS (SELECT 1 FROM T_OSZTALY_OSSZES o WHERE o.ID = ocs.ID)
 | 
						|
        AND tcs.C_BELEPESDATUM <= @pIdoszakVege
 | 
						|
        AND (tcs.C_KILEPESDATUM > @pIdoszakKezdete OR tcs.C_KILEPESDATUM IS NULL)
 | 
						|
            
 | 
						|
      INSERT INTO @OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakVege)    
 | 
						|
      SELECT tcs.C_OSZTALYCSOPORTID, ocs.C_NEV, '''' AS Oka, @IsVegzosEvfolyam, IIF(@IsVegzosEvfolyam = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @pIdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @pIdoszakVege)
 | 
						|
      FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
        INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tcs.C_OSZTALYCSOPORTID = ocs.ID 
 | 
						|
      WHERE tcs.C_TANULOID = @pTanuloId
 | 
						|
        AND tcs.C_BELEPESDATUM <= @pIdoszakVege
 | 
						|
        AND (tcs.C_KILEPESDATUM > @pIdoszakKezdete OR tcs.C_KILEPESDATUM IS NULL)
 | 
						|
      
 | 
						|
      
 | 
						|
    END
 | 
						|
    ELSE BEGIN
 | 
						|
  		INSERT INTO @OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakVege)
 | 
						|
  		SELECT ID, C_NEV, '''' AS Oka, C_VEGZOSEVFOLYAM, IIF(C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @pIdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @pIdoszakVege)
 | 
						|
  		FROM T_OSZTALYCSOPORT_OSSZES 
 | 
						|
      WHERE C_TANEVID = @pTanevId AND TOROLT = ''F''
 | 
						|
	  END
 | 
						|
  END
 | 
						|
  
 | 
						|
  '
 | 
						|
 | 
						|
  /* A naptári napok összegyűjtése tanév rendje alapján */
 | 
						|
  SET @sql += N'  
 | 
						|
  DECLARE @NaptariNapok table (
 | 
						|
     Datum datetime
 | 
						|
    ,HetirendId int
 | 
						|
    ,HetNapjaId int
 | 
						|
    ,OrarendiNap char(1)
 | 
						|
    ,OsztalyCsoportId int
 | 
						|
  );
 | 
						|
  
 | 
						|
  INSERT INTO @NaptariNapok (
 | 
						|
     Datum
 | 
						|
    ,HetirendId
 | 
						|
    ,HetNapjaId
 | 
						|
    ,OrarendiNap
 | 
						|
    ,OsztalyCsoportId
 | 
						|
  ) SELECT 
 | 
						|
       nn.Datum
 | 
						|
      ,ISNULL(tr.HetirendId, nn.HetirendId) AS HetirendId
 | 
						|
      ,ISNULL(tr.HetNapjaId, nn.HetNapjaId) AS HetNapjaId
 | 
						|
      ,ISNULL(tr.OrarendiNap, nn.OrarendiNap) AS OrarendiNap
 | 
						|
      ,nn.OsztalyCsoportId
 | 
						|
    FROM (
 | 
						|
      SELECT 
 | 
						|
         nn.C_NAPDATUMA AS Datum
 | 
						|
        ,nn.C_HETIREND AS HetirendId
 | 
						|
      	,nn.C_HETNAPJA AS HetNapjaId
 | 
						|
        ,nn.C_ORARENDINAP AS OrarendiNap
 | 
						|
        ,ocs.ID AS OsztalyCsoportId
 | 
						|
      FROM T_NAPTARINAP_OSSZES nn
 | 
						|
        CROSS JOIN @OsztalyCsoportok ocs
 | 
						|
      WHERE nn.TOROLT = ''F''
 | 
						|
        AND nn.C_NAPDATUMA >= @pIdoszakKezdete AND nn.C_NAPDATUMA < ocs.IdoszakVege
 | 
						|
        AND nn.C_INTEZMENYID = @pIntezmenyId AND nn.C_TANEVID = @pTanevId
 | 
						|
    ) nn 
 | 
						|
    LEFT JOIN (
 | 
						|
      SELECT 
 | 
						|
         nn.C_NAPDATUMA AS Datum
 | 
						|
        ,tr.C_HETIREND AS HetirendId
 | 
						|
        ,tr.C_HETNAPJA AS HetNapjaId
 | 
						|
        ,tr.C_ORARENDINAP AS OrarendiNap
 | 
						|
        ,ocstr.C_OSZTALYCSOPORTID AS OsztalyCsoportId
 | 
						|
      FROM T_NAPTARINAP_OSSZES nn 
 | 
						|
        INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND nn.C_INTEZMENYID = tr.C_INTEZMENYID AND nn.C_TANEVID = tr.C_TANEVID AND nn.TOROLT = ''F''
 | 
						|
        INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID
 | 
						|
        INNER JOIN @OsztalyCsoportok ocs ON ocs.Id = ocstr.C_OSZTALYCSOPORTID
 | 
						|
      WHERE nn.TOROLT = ''F''
 | 
						|
        AND nn.C_INTEZMENYID = @pIntezmenyId AND nn.C_TANEVID = @pTanevId
 | 
						|
        AND nn.C_NAPDATUMA >= @pIdoszakKezdete AND nn.C_NAPDATUMA < ocs.IdoszakVege
 | 
						|
    ) tr ON nn.Datum = tr.datum AND nn.OsztalyCsoportId = tr.OsztalyCsoportId
 | 
						|
    WHERE ISNULL(tr.OrarendiNap, nn.OrarendiNap) = ''T''
 | 
						|
	'
 | 
						|
  
 | 
						|
  /* Órarend lekérdezés */
 | 
						|
  IF @pCsakOrarendiOrak = 0 BEGIN
 | 
						|
  SET @sql += N'
 | 
						|
    DECLARE @OrarendTable TABLE (
 | 
						|
       Id int
 | 
						|
      ,ORARENDIID int
 | 
						|
      ,Datum datetime
 | 
						|
      ,Bontott char(1)
 | 
						|
      ,Hetirend int
 | 
						|
      ,HetNapja int
 | 
						|
      ,ErvenyessegKezdete datetime
 | 
						|
      ,ErvenyessegVege datetime
 | 
						|
      ,OraKezdete datetime
 | 
						|
      ,OraVege datetime
 | 
						|
      ,Oraszam int
 | 
						|
      ,TargyNev nvarchar(300)
 | 
						|
      ,TargyNevForMobile nvarchar(300)
 | 
						|
      ,TargykategoriaID int
 | 
						|
      ,Megtartott char(1)
 | 
						|
      ,CsengetesiRendOraID int
 | 
						|
      ,MaxNapiOraszam int
 | 
						|
      ,OsztalyNev nvarchar(255)
 | 
						|
      ,TanevRendOsztalyCsoportId int
 | 
						|
      ,MegjelenesOka nvarchar(300)
 | 
						|
      ,TanarNev nvarchar(255)
 | 
						|
      ,TeremNev nvarchar(255)
 | 
						|
      ,OraTipus nvarchar(200)
 | 
						|
      ,Hianyzas char(1)
 | 
						|
  		,Keses char(1)
 | 
						|
			,Ures char(1)
 | 
						|
      ,HelyettesitoTanarID int
 | 
						|
      ,HelyettesitoTanarNev nvarchar(255)
 | 
						|
      ,TanarID int
 | 
						|
      ,AdminAltalKiirt  char(1)
 | 
						|
      ,GroupId int
 | 
						|
      ,Tema nvarchar(max)
 | 
						|
      ,TantargyId int
 | 
						|
      ,OsztCsopId int  
 | 
						|
      ,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
 | 
						|
    )
 | 
						|
    INSERT INTO @OrarendTable
 | 
						|
    '
 | 
						|
    
 | 
						|
  END
 | 
						|
  
 | 
						|
  SET @sql += N'
 | 
						|
    SELECT 
 | 
						|
       oo.ID AS Id
 | 
						|
      ,oo.ID AS ORARENDIID
 | 
						|
      ,nn.Datum AS Datum
 | 
						|
      ,oo.C_BONTOTT AS Bontott
 | 
						|
      ,oo.C_HETIREND AS Hetirend
 | 
						|
      ,oo.C_HETNAPJA AS HetNapja
 | 
						|
      ,oo.C_ORAERVENYESSEGKEZDETE AS ErvenyessegKezdete
 | 
						|
      ,oo.C_ORAERVENYESSEGVEGE AS ErvenyessegVege
 | 
						|
      ,nn.Datum + oo.C_ORAKEZDETE AS OraKezdete
 | 
						|
      ,nn.Datum + oo.C_ORAVEGE AS OraVege
 | 
						|
      ,oo.C_ORASZAM AS Oraszam
 | 
						|
      ,ISNULL(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNev
 | 
						|
      ,COALESCE(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNevForMobile
 | 
						|
      ,tt.C_TARGYKATEGORIA AS TargykategoriaID
 | 
						|
      ,''F'' AS Megtartott
 | 
						|
      ,csro.ID AS CsengetesiRendOraID
 | 
						|
      ,MAX(oo.C_ORASZAM) OVER() AS MaxNapiOraszam /*He?*/
 | 
						|
      ,ocs.Nev AS OsztalyNev
 | 
						|
      ,nn.OsztalyCsoportId AS TanevRendOsztalyCsoportId
 | 
						|
      ,ocs.OKA AS MegjelenesOka
 | 
						|
      ,tanar.C_NYOMTATASINEV AS TanarNev
 | 
						|
      ,terem.C_NEV AS TeremNev
 | 
						|
      ,''OrarendiOra'' AS OraTipus
 | 
						|
      ,''F'' AS Hianyzas
 | 
						|
  		,''F'' AS Keses
 | 
						|
			,''F'' AS Ures
 | 
						|
      ,hisz.C_HELYETTESTANAROKID AS HelyettesitoTanarID
 | 
						|
      ,helyettes.C_NYOMTATASINEV AS HelyettesitoTanarNev
 | 
						|
      ,tanar.ID AS TanarID
 | 
						|
      ,NULL AS AdminAltalKiirt
 | 
						|
      ,oo.C_ORARENDIORAGROUPID AS GroupId
 | 
						|
      ,NULL AS Tema
 | 
						|
      ,oo.C_TANTARGYID AS TantargyId
 | 
						|
      ,oo.C_OSZTALYCSOPORTID AS OsztCsopId
 | 
						|
    FROM T_ORARENDIORA_OSSZES oo
 | 
						|
      INNER JOIN @NaptariNapok nn ON (oo.C_HETIREND = 1554 OR nn.HetirendId = oo.C_HETIREND) AND nn.HetnapjaId = oo.C_HETNAPJA  AND oo.C_OSZTALYCSOPORTID = nn.OsztalyCsoportId
 | 
						|
      INNER JOIN @OsztalyCsoportok ocs ON nn.OsztalyCsoportId = ocs.Id
 | 
						|
      LEFT  JOIN T_CSENGETESIRENDORA_OSSZES csro ON csro.C_CSENGETESIRENDID = oo.C_CSENGETESIRENDID AND csro.C_ORASZAM = oo.C_ORASZAM
 | 
						|
  		LEFT  JOIN T_TANTARGY_OSSZES tt ON tt.ID = oo.C_TANTARGYID
 | 
						|
  		LEFT  JOIN T_FELHASZNALO_OSSZES tanar ON tanar.ID = oo.C_TANARID
 | 
						|
  		LEFT  JOIN T_TEREM_OSSZES terem ON terem.id = oo.C_TEREMID
 | 
						|
      LEFT  JOIN T_HELYETTESITESIIDOSZAK_OSSZES hisz ON oo.ID = hisz.C_HELYETTESITETTORARENDID AND hisz.C_HELYETTESITESNAPJA = nn.Datum AND hisz.TOROLT = ''F''
 | 
						|
      LEFT  JOIN T_FELHASZNALO_OSSZES helyettes ON hisz.C_HELYETTESTANAROKID = helyettes.ID
 | 
						|
    WHERE oo.TOROLT = ''F'' 
 | 
						|
      ' + CASE @pIsNapirend WHEN 1 THEN 'AND oo.C_CSENGETESIRENDID IS NULL ' WHEN 0 THEN 'AND oo.C_CSENGETESIRENDID IS NOT NULL ' ELSE '' END + '  
 | 
						|
  		AND oo.C_INTEZMENYID = @pIntezmenyId AND oo.C_TANEVID = @pTanevId
 | 
						|
      AND oo.C_ORAERVENYESSEGKEZDETE <= ocs.IdoszakVege AND oo.C_ORAERVENYESSEGVEGE > @pIdoszakKezdete  -- C_DATUM
 | 
						|
      ' + IIF(@pTanarId IS NULL, '', 'AND (oo.C_TANARID = @pTanarId OR hisz.C_HELYETTESTANAROKID = @pTanarId)') 
 | 
						|
  
 | 
						|
  
 | 
						|
  IF @pCsakOrarendiOrak = 0 BEGIN
 | 
						|
    
 | 
						|
    /* TanításiÓra lekérdezés */
 | 
						|
    SET @sql += N'
 | 
						|
    SELECT 
 | 
						|
       ISNULL(tn.Id, oo.Id) AS Id
 | 
						|
      ,ISNULL(tn.ORARENDIID, oo.ORARENDIID) AS ORARENDIID
 | 
						|
      ,ISNULL(tn.Datum, oo.Datum) AS Datum
 | 
						|
      ,ISNULL(tn.Bontott, oo.Bontott) AS Bontott
 | 
						|
      ,oo.Hetirend AS Hetirend
 | 
						|
      ,ISNULL(tn.HetNapja, oo.HetNapja) AS HetNapja
 | 
						|
      ,IIF(tn.Id IS NOT NULL, NULL, oo.ErvenyessegKezdete) AS ErvenyessegKezdete
 | 
						|
      ,IIF(tn.Id IS NOT NULL, NULL, oo.ErvenyessegVege) AS ErvenyessegVege
 | 
						|
      ,ISNULL(tn.OraKezdete, oo.OraKezdete) AS OraKezdete
 | 
						|
      ,ISNULL(tn.OraVege, oo.OraVege) AS OraVege
 | 
						|
      ,ISNULL(tn.Oraszam, oo.Oraszam) AS Oraszam
 | 
						|
      ,ISNULL(tn.TargyNev, oo.TargyNev) AS TargyNev
 | 
						|
      ,ISNULL(tn.TargyNevForMobile, oo.TargyNevForMobile) AS TargyNevForMobile
 | 
						|
      ,ISNULL(tn.TargykategoriaID, oo.TargykategoriaID) AS TargykategoriaID
 | 
						|
      ,ISNULL(tn.Megtartott, oo.Megtartott) AS Megtartott
 | 
						|
      ,ISNULL(tn.CsengetesiRendOraID, oo.CsengetesiRendOraID) AS CsengetesiRendOraID
 | 
						|
      ,ISNULL(tn.MaxNapiOraszam, oo.MaxNapiOraszam) AS MaxNapiOraszam
 | 
						|
      ,ISNULL(tn.OsztalyNev, oo.OsztalyNev) AS OsztalyNev
 | 
						|
      ,ISNULL(tn.TanevRendOsztalyCsoportId, oo.TanevRendOsztalyCsoportId) AS TanevRendOsztalyCsoportId
 | 
						|
      ,ISNULL(tn.MegjelenesOka, oo.MegjelenesOka) AS MegjelenesOka
 | 
						|
      ,ISNULL(tn.TanarNev, oo.TanarNev) AS TanarNev
 | 
						|
      ,ISNULL(tn.TeremNev, oo.TeremNev) AS TeremNev 
 | 
						|
      ,ISNULL(tn.OraTipus, oo.OraTipus) AS OraTipus
 | 
						|
      ,ISNULL(tn.Hianyzas, oo.Hianyzas) AS Hianyzas
 | 
						|
      ,ISNULL(tn.Keses, oo.Keses) AS Keses
 | 
						|
      ,ISNULL(tn.Ures, oo.Ures) AS Ures
 | 
						|
      ,ISNULL(tn.HelyettesitoTanarID, oo.HelyettesitoTanarID) AS HelyettesitoTanarID
 | 
						|
      ,ISNULL(tn.HelyettesitoTanarNev, oo.HelyettesitoTanarNev) AS HelyettesitoTanarNev
 | 
						|
      ,ISNULL(tn.TanarID, oo.TanarID) AS TanarID
 | 
						|
      ,ISNULL(tn.AdminAltalKiirt, oo.AdminAltalKiirt) AS AdminAltalKiirt
 | 
						|
      ,ISNULL(tn.GroupId, oo.GroupId) AS GroupId
 | 
						|
      ,tn.Tema AS Tema
 | 
						|
      ,ISNULL(tn.TantargyId, oo.OsztCsopId) AS TantargyId
 | 
						|
      ,ISNULL(tn.OsztCsopId, oo.OsztCsopId) AS OsztCsopId
 | 
						|
    FROM @OrarendTable oo
 | 
						|
    FULL JOIN (
 | 
						|
      SELECT 
 | 
						|
         tao.ID AS Id
 | 
						|
        ,NULL AS ORARENDIID
 | 
						|
        ,tao.C_DATUM AS Datum
 | 
						|
        ,tao.C_BONTOTT AS Bontott /*MAJD*/
 | 
						|
        ,tao.C_HETNAPJA AS HetNapja
 | 
						|
        ,tao.C_ORAKEZDETE AS OraKezdete
 | 
						|
        ,tao.C_ORAVEGE AS OraVege
 | 
						|
        ,tao.C_ORASZAM AS Oraszam
 | 
						|
        ,ISNULL(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNev
 | 
						|
        ,COALESCE(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNevForMobile
 | 
						|
        ,tt.C_TARGYKATEGORIA AS TargykategoriaID
 | 
						|
        ,tao.C_MEGTARTOTT AS Megtartott
 | 
						|
        ,tao.C_CSENGETESIRENDORAID AS CsengetesiRendOraID
 | 
						|
        ,MAX(tao.C_ORASZAM) OVER() AS MaxNapiOraszam /*He?*/
 | 
						|
        ,ocs.Nev AS OsztalyNev
 | 
						|
        ,tao.C_OSZTALYCSOPORTID AS TanevRendOsztalyCsoportId
 | 
						|
        ,ocs.OKA AS MegjelenesOka
 | 
						|
        ,tanar.C_NYOMTATASINEV AS TanarNev
 | 
						|
        ,terem.C_NEV AS TeremNev
 | 
						|
        ,''TanitasiOra'' AS OraTipus
 | 
						|
        ,' + IIF(@pTanuloId IS NULL, '''F''', 'IIF(mh.ID IS NULL, ''F'', ''T'')') + ' AS Hianyzas
 | 
						|
        ,' + IIF(@pTanuloId IS NULL, '''F''', 'IIF(mk.ID IS NULL, ''F'', ''T'')') + ' AS Keses
 | 
						|
        ,' + IIF(@pTanuloId IS NULL, '''F''', 'IIF(mu.ID IS NULL, ''F'', ''T'')') + ' AS Ures
 | 
						|
        ,helyettes.ID HelyettesitoTanarID
 | 
						|
        ,helyettes.C_NYOMTATASINEV HelyettesitoTanarNev
 | 
						|
        ,tanar.ID AS TanarID
 | 
						|
        ,tao.C_ADMINALTALKIIRT AS AdminAltalKiirt
 | 
						|
        ,tao.C_ORARENDIORAGROUPID AS GroupId
 | 
						|
        ,tao.C_TEMA AS Tema
 | 
						|
        ,tao.C_TANTARGYID AS TantargyId
 | 
						|
        ,tao.C_OSZTALYCSOPORTID AS OsztCsopId        
 | 
						|
      FROM T_TANITASIORA_OSSZES tao
 | 
						|
        INNER JOIN @OsztalyCsoportok ocs ON tao.C_OSZTALYCSOPORTID = ocs.Id
 | 
						|
        INNER JOIN T_TANTARGY_OSSZES tt ON tao.C_TANTARGYID = tt.ID
 | 
						|
        INNER JOIN T_FELHASZNALO_OSSZES tanar ON tao.C_TANARID = tanar.ID
 | 
						|
        LEFT  JOIN T_FELHASZNALO_OSSZES helyettes ON helyettes.ID = tao.C_HELYETTESITOTANARID
 | 
						|
        INNER JOIN T_TEREM_OSSZES terem ON terem.ID = tao.C_TEREMID
 | 
						|
      ' 
 | 
						|
      IF @pTanuloId IS NOT NULL BEGIN
 | 
						|
      SET @sql += N'
 | 
						|
        LEFT JOIN T_TANULOMULASZTAS mh ON mh.C_TANITASIORAKID = tao.ID AND mh.C_ORATANULOIID = @pTanuloId AND mh.C_TIPUS = 1500
 | 
						|
        LEFT JOIN T_TANULOMULASZTAS mk ON mk.C_TANITASIORAKID = tao.ID AND mk.C_ORATANULOIID = @pTanuloId AND mk.C_TIPUS = 1499
 | 
						|
        LEFT JOIN T_TANULOMULASZTAS mu ON mu.C_TANITASIORAKID = tao.ID AND mu.C_ORATANULOIID = @pTanuloId AND mu.C_TIPUS = 1817
 | 
						|
      '
 | 
						|
      END
 | 
						|
      SET @sql += N'
 | 
						|
      WHERE tao.TOROLT = ''F''
 | 
						|
        AND tao.C_DATUM >= @pIdoszakKezdete AND tao.C_DATUM < ocs.IdoszakVege
 | 
						|
        AND tao.C_TANEVID = @pTanevId
 | 
						|
        ' + CASE @pIsNapirend WHEN 1 THEN 'AND tao.C_CSENGETESIRENDID IS NULL ' WHEN 0 THEN 'AND tao.C_CSENGETESIRENDID IS NOT NULL ' ELSE '' END + '  
 | 
						|
        ' + IIF(@pTanarId IS NULL, '', 'AND (tao.C_TANARID = @pTanarId OR tao.C_HELYETTESITOTANARID = @pTanarId)')  + '
 | 
						|
    ) tn ON tn.Datum = oo.Datum 
 | 
						|
        AND tn.HetNapja = oo.HetNapja 
 | 
						|
        AND tn.Oraszam = oo.Oraszam 
 | 
						|
        AND tn.TanevRendOsztalyCsoportId = oo.TanevRendOsztalyCsoportId 
 | 
						|
        AND tn.TantargyId = oo.TantargyId
 | 
						|
        AND tn.TanarID = oo.TanarID
 | 
						|
    '
 | 
						|
  END
 | 
						|
 | 
						|
  EXEC sp_executesql @sql, N'
 | 
						|
  	 @pIntezmenyId int
 | 
						|
  	,@pTanevId int
 | 
						|
  	,@pIdoszakKezdete datetime
 | 
						|
  	,@pIdoszakVege datetime
 | 
						|
  	,@pTanarId int
 | 
						|
  	,@pOsztalyCsoportId int
 | 
						|
  	,@pTanuloId int
 | 
						|
  	,@pCsakOrarendiOrak bit
 | 
						|
    ,@pIsNapirend bit'
 | 
						|
  	,@pIntezmenyId = @pIntezmenyId
 | 
						|
  	,@pTanevId = @pTanevId
 | 
						|
  	,@pIdoszakKezdete = @pIdoszakKezdete
 | 
						|
  	,@pIdoszakVege = @pIdoszakVege
 | 
						|
  	,@pTanarId = @pTanarId
 | 
						|
  	,@pOsztalyCsoportId = @pOsztalyCsoportId
 | 
						|
  	,@pTanuloId = @pTanuloId
 | 
						|
  	,@pCsakOrarendiOrak = @pCsakOrarendiOrak
 | 
						|
    ,@pIsNapirend = @pIsNapirend
 | 
						|
 | 
						|
END
 | 
						|
GO
 | 
						|
 |