﻿DROP PROCEDURE IF EXISTS uspGetNemNaplozottOrarendiOrak
GO

CREATE PROCEDURE uspGetNemNaplozottOrarendiOrak
   @IntezmenyId int
  ,@TanevId int
  ,@IdoszakKezdete datetime
  ,@IdoszakVege datetime
  ,@TanarId int = NULL
  ,@OsztalyCsoportId int = NULL
  ,@TantargyId int = NULL
  ,@CsakHelyettesitesreKiirtTanorak bit = 0
  ,@pFeladatKategoriaId int = NULL
AS BEGIN
  SET NOCOUNT ON;

  SET DATEFIRST 1;

  DECLARE
    @CsakOrarendiOrak bit = 0

  CREATE TABLE #OrarendiOrak (
     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
    ,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
  )

  INSERT INTO #OrarendiOrak (
     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
  )
  EXEC sp_GetOrarend
     @pIntezmenyId = @IntezmenyId
    ,@pTanevId = @TanevId
    ,@pIdoszakKezdete = @IdoszakKezdete
    ,@pIdoszakVege = @IdoszakVege
    ,@pTanarId = @TanarId
    ,@pIsHelyettesitesNelkul = 0
    ,@pOsztalyCsoportId = NULL
    ,@pTanuloId = NULL
    ,@pTantargyId = NULL
    ,@pTeremId = NULL
    ,@pCsakOrarendiOrak = 0
    ,@pIsNapirend = NULL
    ,@pFeladatKategoriaId = @pFeladatKategoriaId

  SELECT
     orak.Id
    ,orak.ORARENDIID
    ,orak.Bontott
    ,orak.Hetirend
    ,orak.HetNapja
    ,orak.HetSorszam
    ,orak.ErvenyessegKezdete
    ,orak.ErvenyessegVege
    ,orak.OraKezdete
    ,CONVERT(date, orak.OraKezdete) AS OraKezdeteDate
    ,CONVERT(varchar (5), orak.OraKezdete, 108) AS OraKezdeteTimeText
    ,orak.OraVege
    ,IIF(orak.CsengetesiRendID IS NOT NULL, orak.Oraszam, NULL) AS Oraszam
    ,orak.TargyNev
    ,orak.TargyNevForMobile
    ,orak.TargykategoriaID
    ,orak.Megtartott
    ,orak.CsengetesiRendOraID
    ,orak.CsengetesiRendID
    ,orak.MaxNapiOraszam
    ,orak.OsztalyNev
    ,orak.MegjelenesOka
    ,orak.TanarNev
    ,f.C_OKTATASIAZONOSITO TanarOktAzon
    ,orak.TeremNev
    ,orak.OraTipus
    ,orak.Hianyzas
    ,orak.Keses
    ,orak.Ures
    ,orak.HelyettesitoTanarID
    ,orak.HelyettesitoTanarNev
    ,orak.HelyettesitesId
    ,orak.TanarID
    ,orak.AdminAltalKiirt
    ,orak.GroupId
    ,orak.Tema
    ,orak.TantargyId
    ,orak.OsztCsopId
    ,IIF(orak.HelyettesitoTanarID IS NOT NULL, orak.TanarNev, NULL) AS HelyettesitettPedagogusNev
    ,CONVERT(nvarchar (25), orak.OraKezdete, 102) AS OraKezdeteDateST
    ,DATEPART(w, orak.OraKezdete) + 1407 AS HetNapjaValos
  FROM #OrarendiOrak orak 
    INNER JOIN T_FELHASZNALO_OSSZES f ON orak.TanarID = f.ID 
      AND f.TOROLT ='F' 
      AND f.C_TANEVID = @TanevId
  WHERE orak.OraTipus = 'OrarendiOra'
    AND orak.OraKezdete <= @IdoszakVege
    AND orak.OraVege >= @IdoszakKezdete
    AND (@CsakHelyettesitesreKiirtTanorak = 0 OR orak.HelyettesitoTanarNev IS NOT NULL)

  -- Iktatás adatok
  SELECT
     @OsztalyCsoportId AS OsztalyId
    ,ocs.C_EVFOLYAMTIPUSA AS Evfolyam
    ,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
    ,o.C_KEPZESIFORMA AS KepzesiForma
    ,o.C_OSZTALYFONOKID AS OsztalyFonokId
    ,o.C_TANTERVID AS TantervId
    ,o.C_SZAKMACSOPORT AS SzakmaCsoport
    ,o.C_AGAZAT AS Agazat
    ,o.C_SZAKKEPESITES AS Szakkepesites
    ,o.C_RESZSZAKKEPESITES AS Reszszakkepesites
    ,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
    ,o.C_TECHNIKAIOSZTALY AS OJTechnikaiOsztaly
    ,o.C_NEMZETISEGI AS OJNemzetisegi
    ,o.C_KETTANNYELVU AS OJKettannyelvu
    ,o.C_NYELVIELOKESZITO AS OJNyelviElokeszito
    ,o.C_LOGOPEDIAI AS OJLogopediai
    ,o.C_SPORT AS OJSportOsztaly
    ,o.C_AJPROGRAM AS OJAranyJanosProgram
    ,o.C_GYOGYPEDAGOGIAI AS OJGyogypedagogiai
  FROM T_OSZTALYCSOPORT_OSSZES ocs
    INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
      AND o.C_ALTANEVID = ocs.C_TANEVID
      AND o.C_ALINTEZMENYID = ocs.C_INTEZMENYID
  WHERE ocs.ID = @OsztalyCsoportId
    AND ocs.TOROLT = 'F'
    AND ocs.C_TANEVID = @TanevId
    AND ocs.C_INTEZMENYID = @IntezmenyId

  -- Tanár iktatás adatok
  SELECT DISTINCT
     f.ID AS TanarId
    ,f.C_OKTATASIAZONOSITO AS TanarOktAzon
  FROM T_ALKALMAZOTT_OSSZES a
    INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = a.ID AND f.TOROLT = 'F'
      AND a.C_ALTANEVID = f.C_TANEVID
      AND a.C_ALINTEZMENYID = f.C_INTEZMENYID
    LEFT JOIN #OrarendiOrak orak ON orak.TanarID = f.ID
  WHERE a.TOROLT = 'F'
    AND a.C_ALINTEZMENYID = @IntezmenyId
    AND a.C_ALTANEVID = @TanevId
    AND (@TanarId IS NULL OR f.ID = @TanarId)

END
GO
