451 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			451 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
-- =============================================
 | 
						|
-- Author:    Telek Ákos
 | 
						|
-- Create date: 2018.01.15.
 | 
						|
-- Description:  Órarend lekérdezése.
 | 
						|
-- =============================================
 | 
						|
IF OBJECT_ID('[dbo].[sp_GetOrarend]') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE [dbo].[sp_GetOrarend]
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE [dbo].[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'
 | 
						|
  CREATE TABLE #OsztalyCsoportok (
 | 
						|
     Id int PRIMARY KEY
 | 
						|
    ,Nev nvarchar(255)
 | 
						|
    ,Oka nvarchar(50)
 | 
						|
    ,IsVegzos char(1)
 | 
						|
    ,IdoszakVege datetime
 | 
						|
    ,INDEX IX1 CLUSTERED(Id, Nev, IsVegzos)
 | 
						|
  );
 | 
						|
 | 
						|
  
 | 
						|
  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(ocs.C_VEGZOSEVFOLYAM = ''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 AND ocs.TOROLT = ''F''
 | 
						|
  END
 | 
						|
  ELSE BEGIN
 | 
						|
    IF @pTanuloId IS NOT NULL BEGIN
 | 
						|
      
 | 
						|
      SELECT @IsVegzosEvfolyam = 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_TANULOID = @pTanuloId AND tcs.TOROLT = ''F''
 | 
						|
        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 AND ocs.TOROLT = ''F''
 | 
						|
      WHERE tcs.C_TANULOID = @pTanuloId AND tcs.TOROLT = ''F''
 | 
						|
        AND tcs.C_BELEPESDATUM <= @pIdoszakVege
 | 
						|
        AND (tcs.C_KILEPESDATUM > @pIdoszakKezdete OR tcs.C_KILEPESDATUM IS NULL)
 | 
						|
      
 | 
						|
      
 | 
						|
    END
 | 
						|
  --Performancia noveles miatt
 | 
						|
  ELSE IF @pTanarId IS NOT NULL
 | 
						|
    BEGIN
 | 
						|
    INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakVege)    
 | 
						|
  	SELECT ID 
 | 
						|
  	       ,ocs.C_NEV
 | 
						|
            ,''''
 | 
						|
            ,ocs.C_VEGZOSEVFOLYAM
 | 
						|
            ,IIF(ocs.C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @pIdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @pIdoszakVege)
 | 
						|
 | 
						|
  	FROM (	
 | 
						|
  		SELECT 
 | 
						|
            oo.C_OSZTALYCSOPORTID
 | 
						|
          FROM T_ORARENDIORA_OSSZES oo
 | 
						|
          WHERE oo.C_TANARID = @pTanarId
 | 
						|
            AND oo.C_ORAERVENYESSEGKEZDETE <= @pIdoszakVege
 | 
						|
            AND oo.C_ORAERVENYESSEGVEGE >= @pIdoszakKezdete
 | 
						|
            AND oo.TOROLT = ''F''
 | 
						|
 | 
						|
  		UNION
 | 
						|
 | 
						|
          SELECT 
 | 
						|
            oo.C_OSZTALYCSOPORTID
 | 
						|
          FROM T_HELYETTESITESIIDOSZAK_OSSZES hi
 | 
						|
            INNER JOIN T_ORARENDIORA_OSSZES oo ON oo.ID = hi.C_HELYETTESITETTORARENDID AND oo.TOROLT = ''F''
 | 
						|
          WHERE hi.C_HELYETTESTANAROKID = @pTanarId
 | 
						|
            AND hi.C_HELYETTESITESNAPJA >= @pIdoszakKezdete
 | 
						|
            AND hi.C_HELYETTESITESNAPJA <= @pIdoszakVege
 | 
						|
            AND hi.TOROLT = ''F''
 | 
						|
 | 
						|
  		  UNION
 | 
						|
 | 
						|
          SELECT
 | 
						|
            tno.C_OSZTALYCSOPORTID
 | 
						|
          FROM T_TANITASIORA tno
 | 
						|
          WHERE tno.C_HELYETTESITOTANARID = @pTanarId
 | 
						|
            AND tno.C_DATUM <= @pIdoszakVege
 | 
						|
            AND tno.C_DATUM >= @pIdoszakKezdete
 | 
						|
            AND tno.TOROLT = ''F''
 | 
						|
  		  
 | 
						|
  		  UNION
 | 
						|
 | 
						|
  		    SELECT
 | 
						|
            tno.C_OSZTALYCSOPORTID
 | 
						|
          FROM T_TANITASIORA tno
 | 
						|
          WHERE tno.C_TANARID = @pTanarId 
 | 
						|
            AND tno.C_DATUM <= @pIdoszakVege
 | 
						|
            AND tno.C_DATUM >= @pIdoszakKezdete
 | 
						|
            AND tno.TOROLT = ''F''
 | 
						|
		  ) x
 | 
						|
		  INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = x.C_OSZTALYCSOPORTID
 | 
						|
    END
 | 
						|
  --Performancia noveles miatt
 | 
						|
    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'  
 | 
						|
  CREATE TABLE #NaptariNapok (
 | 
						|
     Datum datetime
 | 
						|
    ,HetirendId int
 | 
						|
    ,HetNapjaId int
 | 
						|
    ,OrarendiNap char(1)
 | 
						|
    ,OsztalyCsoportId int
 | 
						|
    ,HetSorszam int
 | 
						|
    ,CsengetesiRendId int
 | 
						|
    ,PRIMARY KEY CLUSTERED (OsztalyCsoportId, Datum, HetirendId, HetNapjaId)
 | 
						|
  );
 | 
						|
  
 | 
						|
  INSERT INTO #NaptariNapok (
 | 
						|
     Datum
 | 
						|
    ,HetirendId
 | 
						|
    ,HetNapjaId
 | 
						|
    ,OrarendiNap
 | 
						|
    ,OsztalyCsoportId
 | 
						|
    ,HetSorszam
 | 
						|
    ,CsengetesiRendId
 | 
						|
  ) 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
 | 
						|
      ,ISNULL(tr.HetSorszam, nn.HetSorszam) AS HetSorszam
 | 
						|
      ,ISNULL(tr.CsengetesiRendId, nn.CsengetesiRendId) AS CsengetesiRendId
 | 
						|
    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
 | 
						|
        ,nn.C_HETSORSZAMA AS HetSorszam
 | 
						|
        ,tr.C_CSENGETESIRENDID AS CsengetesiRendId
 | 
						|
      FROM T_NAPTARINAP_OSSZES nn
 | 
						|
        LEFT 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 tr.TOROLT = ''F'' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = ''T''
 | 
						|
        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
 | 
						|
        ,nn.C_HETSORSZAMA AS HetSorszam
 | 
						|
        ,tr.C_CSENGETESIRENDID AS CsengetesiRendId
 | 
						|
      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 tr.TOROLT = ''F'' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = ''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'
 | 
						|
    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)
 | 
						|
      ,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 DISTINCT
 | 
						|
       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
 | 
						|
      ,nn.HetSorszam AS HetSorszam
 | 
						|
      ,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
 | 
						|
      ,csro.C_CSENGETESIRENDID AS CsengetesiRendID
 | 
						|
      ,MAX(oo.C_ORASZAM) OVER() AS MaxNapiOraszam
 | 
						|
      ,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 AND nn.Datum >= oo.C_ORAERVENYESSEGKEZDETE AND ((nn.Datum < oo.C_ORAERVENYESSEGVEGE) OR (oo.C_ORAERVENYESSEGKEZDETE = oo.C_ORAERVENYESSEGVEGE AND nn.Datum = oo.C_ORAERVENYESSEGVEGE))
 | 
						|
      INNER JOIN #OsztalyCsoportok ocs ON nn.OsztalyCsoportId = ocs.Id
 | 
						|
      LEFT  JOIN T_CSENGETESIRENDORA_OSSZES csro ON csro.C_CSENGETESIRENDID = ISNULL(nn.CsengetesiRendId, oo.C_CSENGETESIRENDID) AND csro.C_ORASZAM = oo.C_ORASZAM AND csro.TOROLT = ''F''
 | 
						|
      LEFT  JOIN T_TANTARGY_OSSZES tt ON tt.ID = oo.C_TANTARGYID AND tt.TOROLT = ''F''
 | 
						|
      LEFT  JOIN T_FELHASZNALO_OSSZES tanar ON tanar.ID = oo.C_TANARID AND tanar.TOROLT = ''F''
 | 
						|
      LEFT  JOIN T_TEREM_OSSZES terem ON terem.id = oo.C_TEREMID AND terem.TOROLT = ''F''
 | 
						|
      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 AND helyettes.TOROLT = ''F''
 | 
						|
    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 AND csro.ID IS NOT NULL' ELSE 'AND ((oo.C_CSENGETESIRENDID IS NOT NULL AND csro.ID IS NOT NULL) OR oo.C_CSENGETESIRENDID IS NULL)' END + '  
 | 
						|
      AND oo.C_INTEZMENYID = @pIntezmenyId AND oo.C_TANEVID = @pTanevId
 | 
						|
      ' + IIF(@pTanarId IS NULL, '', 'AND (oo.C_TANARID = @pTanarId OR hisz.C_HELYETTESTANAROKID = @pTanarId)') 
 | 
						|
  
 | 
						|
  SET @sql += '
 | 
						|
    ' + IIF(@pCsakOrarendiOrak = 0, '', 'ORDER BY OraKezdete') + '
 | 
						|
    '
 | 
						|
  
 | 
						|
  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
 | 
						|
      ,ISNULL(tn.HetSorszam, oo.HetSorszam) AS HetSorszam
 | 
						|
      ,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.CsengetesiRendID, oo.CsengetesiRendID) AS CsengetesiRendID
 | 
						|
      ,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.TantargyId) AS TantargyId
 | 
						|
      ,ISNULL(tn.OsztCsopId, oo.OsztCsopId) AS OsztCsopId
 | 
						|
    FROM #OrarendTable oo
 | 
						|
    '
 | 
						|
    SET @sql += N'
 | 
						|
    FULL JOIN (
 | 
						|
      SELECT 
 | 
						|
         tao.ID AS Id
 | 
						|
        ,NULL AS ORARENDIID
 | 
						|
        ,tao.C_DATUM AS Datum
 | 
						|
        ,tao.C_BONTOTT AS Bontott
 | 
						|
        ,tao.C_HETNAPJA AS HetNapja
 | 
						|
        ,tao.C_HETSORSZAMA AS HetSorszam
 | 
						|
        ,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
 | 
						|
        ,tao.C_CSENGETESIRENDID AS CsengetesiRendID
 | 
						|
        ,MAX(tao.C_ORASZAM) OVER() AS MaxNapiOraszam
 | 
						|
        ,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 AND mh.TOROLT = ''F''
 | 
						|
        LEFT JOIN T_TANULOMULASZTAS mk ON mk.C_TANITASIORAKID = tao.ID AND mk.C_ORATANULOIID = @pTanuloId AND mk.C_TIPUS = 1499 AND mk.TOROLT = ''F''
 | 
						|
        LEFT JOIN T_TANULOMULASZTAS mu ON mu.C_TANITASIORAKID = tao.ID AND mu.C_ORATANULOIID = @pTanuloId AND mu.C_TIPUS = 1817 AND mu.TOROLT = ''F''
 | 
						|
      '
 | 
						|
      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 
 | 
						|
        ' + CASE @pIsNapirend WHEN 1 THEN 'AND tn.OraKezdete = oo.OraKezdete AND tn.OraVege = oo.OraVege ' WHEN 0 THEN 'AND tn.Oraszam = oo.Oraszam  ' ELSE 'AND ((tn.CsengetesiRendID IS NULL AND tn.OraKezdete = oo.OraKezdete AND tn.OraVege = oo.OraVege) OR (tn.CsengetesiRendID IS NOT NULL AND tn.Oraszam = oo.Oraszam)) ' END + ' 
 | 
						|
        AND tn.TanevRendOsztalyCsoportId = oo.TanevRendOsztalyCsoportId 
 | 
						|
        AND tn.TantargyId = oo.TantargyId
 | 
						|
        AND tn.TanarID = oo.TanarID
 | 
						|
    '
 | 
						|
 
 | 
						|
  SET @sql += '
 | 
						|
   ORDER BY OraKezdete
 | 
						|
   '
 | 
						|
 | 
						|
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
 | 
						|
 |