240 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
SET ANSI_NULLS ON
 | 
						||
GO
 | 
						||
SET QUOTED_IDENTIFIER ON
 | 
						||
GO
 | 
						||
 | 
						||
DROP PROCEDURE IF EXISTS uspGetNyomtatvanyokOrarendOsszes
 | 
						||
GO
 | 
						||
 | 
						||
CREATE PROCEDURE uspGetNyomtatvanyokOrarendOsszes
 | 
						||
	   @intezmenyId int 
 | 
						||
	  ,@tanevID int 
 | 
						||
	  ,@pIdoszakKezdete datetime 
 | 
						||
	  ,@pIdoszakVege datetime 
 | 
						||
	  ,@pTanarId int = NULL
 | 
						||
	  ,@pIsHelyettesitesNelkul bit = 0
 | 
						||
	  ,@pOsztalyCsoportId int = NULL
 | 
						||
	  ,@pTanuloId int = NULL
 | 
						||
	  ,@pTantargyId int = NULL
 | 
						||
	  ,@pTeremId int = NULL
 | 
						||
	  ,@pCsakOrarendiOrak bit = 0
 | 
						||
	  ,@pIsNapirend bit  /*0 csak orarendi ora, 1 csak napirend, NULL mindkett?*/
 | 
						||
      ,@pKapcsolodoCsoportokMegjelenitese bit = NULL
 | 
						||
      ,@pOsztalyBontasokMegjelenitese bit = NULL
 | 
						||
AS 
 | 
						||
BEGIN
 | 
						||
	SET NOCOUNT ON;
 | 
						||
  
 | 
						||
    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  
 | 
						||
  );
 | 
						||
 | 
						||
    INSERT INTO #OrarendTable
 | 
						||
    EXEC sp_GetOrarend
 | 
						||
       @pIntezmenyId = @intezmenyId
 | 
						||
      ,@pTanevId = @tanevID
 | 
						||
      ,@pIdoszakKezdete = @pIdoszakKezdete
 | 
						||
      ,@pIdoszakVege = @pIdoszakVege
 | 
						||
      ,@pTanarId = @pTanarId
 | 
						||
      ,@pIsHelyettesitesNelkul = @pIsHelyettesitesNelkul
 | 
						||
      ,@pOsztalyCsoportId = @pOsztalyCsoportId
 | 
						||
      ,@pTanuloId = @pTanuloId
 | 
						||
      ,@pTantargyId = @pTantargyId
 | 
						||
      ,@pTeremId = @pTeremId
 | 
						||
      ,@pCsakOrarendiOrak = @pCsakOrarendiOrak
 | 
						||
      ,@pIsNapirend = @pIsNapirend
 | 
						||
 | 
						||
    -- a lek<65>rt <20>rarendben a minden h<>ten <20>r<EFBFBD>kat <20>t<EFBFBD>ll<6C>tjuk a h<>tsotsz<73>mnak megfelel<65> hetirendre
 | 
						||
    UPDATE o
 | 
						||
    SET o.Hetirend = ISNULL(hr.Hetirend, o.Hetirend)
 | 
						||
    FROM #OrarendTable o
 | 
						||
    LEFT JOIN
 | 
						||
    (
 | 
						||
        SELECT DISTINCT Hetirend, HetSorszam FROM #OrarendTable WHERE Hetirend <> 1554
 | 
						||
    ) hr ON hr.HetSorszam = o.HetSorszam
 | 
						||
    WHERE
 | 
						||
        o.Hetirend = 1554
 | 
						||
 | 
						||
    -- kapcsol<6F>d<EFBFBD> csoportok <20>r<EFBFBD>inak t<>rl<72>se
 | 
						||
    IF @pKapcsolodoCsoportokMegjelenitese IS NOT NULL AND @pKapcsolodoCsoportokMegjelenitese = 0
 | 
						||
    BEGIN
 | 
						||
        DELETE o FROM #OrarendTable o
 | 
						||
            INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = o.OsztCsopId AND cs.C_OSZTALYBONTASID IS NULL
 | 
						||
        WHERE OsztCsopId != @pOsztalyCsoportId
 | 
						||
    END
 | 
						||
    -- oszt<7A>lybontott csoportok <20>r<EFBFBD>inak t<>rl<72>se
 | 
						||
    IF @pOsztalyBontasokMegjelenitese IS NOT NULL AND @pOsztalyBontasokMegjelenitese = 0
 | 
						||
    BEGIN
 | 
						||
        DELETE o FROM #OrarendTable o
 | 
						||
            INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = o.OsztCsopId AND cs.C_OSZTALYBONTASID IS NOT NULL
 | 
						||
        WHERE OsztCsopId != @pOsztalyCsoportId
 | 
						||
    END
 | 
						||
 | 
						||
    declare @intezmenyNev NVARCHAR(510) = (SELECT C_NEV FROM T_INTEZMENYADATOK_OSSZES WHERE C_INTEZMENYID = @intezmenyId AND C_TANEVID = @tanevID and TOROLT = 'F')
 | 
						||
 | 
						||
	CREATE TABLE #Oraszamok (Oraszam int, PRIMARY KEY(Oraszam))
 | 
						||
    INSERT INTO #Oraszamok
 | 
						||
    SELECT DISTINCT 
 | 
						||
       C_ORASZAM
 | 
						||
    FROM T_ORARENDIORA_OSSZES 
 | 
						||
    WHERE C_INTEZMENYID = @intezmenyId 
 | 
						||
      AND C_TANEVID = @tanevID
 | 
						||
      AND C_ORASZAM IS NOT NULL
 | 
						||
 | 
						||
	SELECT DISTINCT
 | 
						||
      COALESCE(@pTanarId, @pTeremId, @pOsztalyCsoportId) as Id
 | 
						||
      ,STUFF((SELECT DISTINCT 
 | 
						||
				', ' + IIF(@pTanarId IS NOT NULL, bo.TanarNev, IIF(@pTeremId IS NOT NULL, bo.TeremNev, IIF(@pOsztalyCsoportId IS NOT NULL, bo.OsztalyNev,''))) 
 | 
						||
               FROM #OrarendTable bo 
 | 
						||
               WHERE  bo.Hetirend = o.Hetirend
 | 
						||
               FOR XML PATH(''), TYPE)
 | 
						||
				.value('.','NVARCHAR(MAX)'),1,2,'') as Nev
 | 
						||
      ,@intezmenyNev as IntezmenyNev
 | 
						||
      ,STUFF((
 | 
						||
        SELECT DISTINCT ', ' + dic.C_NAME
 | 
						||
        FROM #OrarendTable qw
 | 
						||
          LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.C_TANEVID = @tanevID and dic.TOROLT = 'F' and dic.ID = qw.Hetirend
 | 
						||
        WHERE o.Hetirend = qw.Hetirend
 | 
						||
        FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)'), 1, 2, '') AS Hetirend
 | 
						||
    FROM #OrarendTable o
 | 
						||
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES dic on o.Hetirend = dic.ID and dic.C_TANEVID = @tanevID
 | 
						||
 | 
						||
    SELECT
 | 
						||
		COALESCE(@pTanarId, @pTeremId, @pOsztalyCsoportId) as Id
 | 
						||
		,IIF(@pIsNapirend = 0, CAST(t.Oraszam as NVARCHAR(3)), ISNULL(t.OraKezdete + ' - ' + t.OraVege, '')) as Ora
 | 
						||
    ,t.Hetirend as HetirendId
 | 
						||
		,[1408] AS Hetfo
 | 
						||
		,[1409] AS Kedd
 | 
						||
		,[1410] AS Szerda
 | 
						||
		,[1411] AS Csutortok
 | 
						||
		,[1412] AS Pentek
 | 
						||
		,[1413] AS Szombat
 | 
						||
    ,t.HetirendNev as HetirendNev
 | 
						||
    FROM ( SELECT *
 | 
						||
           FROM
 | 
						||
              ( SELECT 
 | 
						||
                  STUFF(( SELECT  
 | 
						||
							CONVERT(NVARCHAR(MAX),bo.TargyNev + NCHAR(13) + NCHAR(10) + bo.OsztalyNev + NCHAR(13) + NCHAR(10) + bo.TeremNev + NCHAR(10) + NCHAR(10)) 
 | 
						||
					      FROM #OrarendTable bo 
 | 
						||
                          WHERE bo.OraKezdete = o.OraKezdete
 | 
						||
                          FOR XML PATH(''), TYPE)
 | 
						||
				          .value('.','NVARCHAR(MAX)'),1,0,'') as TargyNev
 | 
						||
                  ,HetNapja
 | 
						||
                  ,Oraszam
 | 
						||
                  ,CONVERT(CHAR(5), OraKezdete, 108) OraKezdete
 | 
						||
                  ,CONVERT(CHAR(5), OraVege, 108)    OraVege
 | 
						||
                  ,dic.C_NAME AS HetirendNev
 | 
						||
                  ,Hetirend AS Hetirend
 | 
						||
                FROM #OrarendTable o
 | 
						||
                    LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dic ON dic.C_TANEVID = @tanevID and dic.TOROLT = 'F' and dic.ID = o.Hetirend
 | 
						||
              ) as ot
 | 
						||
              PIVOT (MAX(ot.TargyNev) FOR ot.HetNapja in([1408],[1409],[1410],[1411],[1412],[1413])) as pv
 | 
						||
              ) as t 
 | 
						||
       ORDER BY HetirendNev, 
 | 
						||
               CASE WHEN @pIsNapirend = 0 then t.Oraszam else CAST(t.OraKezdete AS DATETIME) END
 | 
						||
 | 
						||
-- Iktat<61>si adatok
 | 
						||
    IF @pOsztalyCsoportId IS NOT NULL BEGIN
 | 
						||
    --  Oszt<7A>ly adatok
 | 
						||
      SELECT 
 | 
						||
	    @pOsztalyCsoportId					OsztalyId
 | 
						||
	    ,o.C_OSZTALYFONOKID			OsztalyfonokId
 | 
						||
	    ,ocs.C_EVFOLYAMTIPUSA		EvfolyamTipusa
 | 
						||
	    ,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
 | 
						||
	    ,o.C_TANTERVID			TantervId
 | 
						||
	    ,o.C_KEPZESIFORMA		KepzesiForma
 | 
						||
	    ,o.C_AGAZAT				Agazat
 | 
						||
	    ,o.C_SZAKMACSOPORT		SzakmaCsoport
 | 
						||
	    ,o.C_SZAKKEPESITES		Szakkepesites
 | 
						||
	    ,o.C_RESZSZAKKEPESITES	Reszszakkepesites
 | 
						||
	    ,ocs.C_KERESZTFELEVES	OJCSJKeresztfeleves
 | 
						||
	    ,ocs.C_VEGZOSEVFOLYAM	CSJVegzosEvfolyamu
 | 
						||
	    ,o.C_TECHNIKAIOSZTALY	OJTechnikaiOsztaly
 | 
						||
	    ,o.C_NEMZETISEGI		OJNemzetisegi
 | 
						||
	    ,o.C_KETTANNYELVU		OJKettannyelvu
 | 
						||
	    ,o.C_NYELVIELOKESZITO	OJNyelviElokeszito
 | 
						||
	    ,o.C_LOGOPEDIAI			OJLogopediai
 | 
						||
	    ,o.C_SPORT				OJSportOsztaly
 | 
						||
	    ,o.C_AJPROGRAM			OJAranyJanosProgram
 | 
						||
	    ,o.C_GYOGYPEDAGOGIAI	OJGyogypedagogiai
 | 
						||
      FROM T_OSZTALYCSOPORT_OSSZES ocs 
 | 
						||
  	    INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID AND o.torolt='F'
 | 
						||
      WHERE ocs.ID = @pOsztalyCsoportId
 | 
						||
 | 
						||
    --  Oszt<7A>ly csoportok
 | 
						||
      SELECT DISTINCT
 | 
						||
      ot.OsztCsopId AS CsoportId
 | 
						||
      FROM #OrarendTable ot
 | 
						||
      INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = ot.OsztCsopId
 | 
						||
    --  Alkalmazottak
 | 
						||
      SELECT DISTINCT
 | 
						||
      ot.TanarID  AS TanarId
 | 
						||
      ,f.C_OKTATASIAZONOSITO AS TanarOktAzon
 | 
						||
      FROM #OrarendTable ot
 | 
						||
      LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = ot.TanarID
 | 
						||
    --  Tanul<75>k
 | 
						||
      SELECT DISTINCT
 | 
						||
        f.ID  AS  TanuloId
 | 
						||
        ,f.C_NYOMTATASINEV  AS TanuloNeve
 | 
						||
        ,f.C_OKTATASIAZONOSITO  AS  TanuloOktAzon
 | 
						||
      FROM #OrarendTable ot
 | 
						||
        INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ot.OsztCsopId and tcs.C_TANEVID = @tanevID
 | 
						||
        INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID
 | 
						||
    END
 | 
						||
    ELSE IF @pTanarId IS NOT NULL BEGIN
 | 
						||
    --  Alkalmazottak
 | 
						||
      SELECT DISTINCT
 | 
						||
      ot.TanarID  AS TanarId
 | 
						||
      ,f.C_OKTATASIAZONOSITO AS TanarOktAzon
 | 
						||
      ,mua.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
 | 
						||
      FROM #OrarendTable ot
 | 
						||
      LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = ot.TanarID
 | 
						||
      INNER JOIN T_MUNKAUGYIADATOK_OSSZES mua ON mua.C_ALKALMAZOTTID = ot.TanarID
 | 
						||
    END
 | 
						||
    ELSE IF @pTeremId IS NOT NULL BEGIN
 | 
						||
      SELECT 
 | 
						||
        t.ID,
 | 
						||
        t.C_MUKODESIHELYID
 | 
						||
      FROM T_TEREM_OSSZES AS  t
 | 
						||
      WHERE ID = @pTeremId
 | 
						||
    END
 | 
						||
END
 | 
						||
 | 
						||
GO |