﻿DROP PROCEDURE IF EXISTS uspGetNemMegtartottOrakSzamaPerHet 

GO 
CREATE PROCEDURE [uspGetNemMegtartottOrakSzamaPerHet] 
  @pFeladatKategoriaId int = NULL,
  @pOsztalyId int, 
  @pFeladatEllatasiHelyId int = NULL,
  @pIntezmenyId int, 
  @pTanevId int,
  @pFelhasznaloId int

AS
BEGIN

  SET NOCOUNT ON;
  
  DECLARE @pCsakOrarendiOrak BIT = 0
  DECLARE @pIdoszakKezdete DATETIME = (SELECT MIN(C_HETKEZDONAPJA) FROM T_NAPTARIHET nh  WHERE nh.C_INTEZMENYID = @pIntezmenyId AND nh.C_TANEVID = @pTanevId AND nh.TOROLT = 'F')
  DECLARE @pIdoszakVege DATETIME = GETDATE()

  CREATE TABLE #OrarendTable (
     Id int
    ,HetSorszam int
    ,OraVege datetime
    ,OraTipus nvarchar(200)
    ,OsztCsopId int
   )
  
  INSERT INTO #OrarendTable 
  (
     Id
    ,HetSorszam
    ,OraVege
    ,OraTipus
    ,OsztCsopId
  )
  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
    ,@pOszlopok = N'Id,HetSorszam,OraVege,OraTipus,OsztCsopId'

  SELECT
     nh.C_HETSORSZAMA AS HetSorszam
    ,ISNULL(nemBeirt.NemNaplozottOrakSzama, 0) AS NemNaplozottOrakSzama
    ,@pOsztalyId AS OsztalyID
    ,ISNULL(@pFeladatKategoriaId, '') AS feladatKategoriaId
    ,ISNULL(@pFeladatEllatasiHelyId, '') AS feladatEllatasiHelyId
    ,ell.EllenorzesId
    ,ISNULL(ell.EllenorzesDatuma, GETDATE()) AS EllenorzesDatuma
    ,ISNULL(ell.EllenorizteId, @pFelhasznaloId) AS EllenorizteId
    ,ISNULL(ell.Ellenorizte, lekerdezo.C_NYOMTATASINEV) AS Ellenorizte
    ,ell.EllenorzesMegjegyzes
  FROM T_NAPTARIHET nh
    LEFT JOIN (
      SELECT 
      tmp.HetSorszam AS HetSorszam
      ,count(tmp.Id) AS NemNaplozottOrakSzama
      FROM #OrarendTable tmp
        INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tmp.OsztCsopId = ocs.ID
      WHERE tmp.OraTipus = 'OrarendiOra'
        AND tmp.OraVege < GETDATE()
        AND (@pFeladatKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId)
        AND (@pFeladatEllatasiHelyId IS NULL OR ocs.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId)
      GROUP BY tmp.HetSorszam
    ) nemBeirt ON nemBeirt.HetSorszam = nh.C_HETSORSZAMA
    LEFT JOIN 
    (
      SELECT
         ne.ID AS EllenorzesId
        ,ne.C_ELLENORZESDATUMA AS EllenorzesDatuma
        ,ne.C_ELLENORZOSZEMELYID AS EllenorizteId
        ,f.C_NYOMTATASINEV AS Ellenorizte
        ,ne.C_ESZREVETEL AS EllenorzesMegjegyzes
        ,ne.C_HETSORSZAMA
      FROM T_NAPLOELLENORZES_OSSZES ne
      LEFT JOIN T_FELHASZNALO f ON f.ID = ne.C_ELLENORZOSZEMELYID AND f.TOROLT = 'F'
      WHERE ne.C_TANEVID = @pTanevId
        AND ne.C_OSZTALYID = @pOsztalyId
        AND ne.TOROLT = 'F'
    ) ell ON ell.C_HETSORSZAMA = nh.C_HETSORSZAMA
    LEFT JOIN T_FELHASZNALO lekerdezo ON lekerdezo.ID = @pFelhasznaloId AND lekerdezo.TOROLT = 'F'
  WHERE nh.C_HETIREND IS NOT NULL
    AND nh.TOROLT = 'F'
    AND nh.C_TANEVID = @pTanevId
    AND nh.C_HETKEZDONAPJA < GETDATE()
  ORDER BY nh.C_HETSORSZAMA

END
GO