﻿DROP PROCEDURE IF EXISTS uspGetAdminDashboardStatisztika
GO

CREATE PROCEDURE uspGetAdminDashboardStatisztika
   @pTanevId int
  ,@pDatum datetime
  ,@pTanarAlkalmazottMunkakor int = 8384
AS
BEGIN
  SET NOCOUNT ON;
  
  SELECT
     ia.C_NEV AS IntezmenyNev
    ,i.C_AZONOSITO AS IntezmenyAzonosito
    ,i.C_ALTERNATIVAZONOSITO AS IntezmenyAlternativAzonosito
    ,tv.C_NEV AS TanevNev
    ,(SELECT
        C_NEV
      FROM T_TANEV_OSSZES adat
      WHERE adat.C_INTEZMENYID = i.ID
        AND adat.TOROLT = 'F'
        AND adat.C_AKTIV = 'T'
     ) AS AktivTanevNeve
    ,(SELECT
        COUNT(1)
      FROM T_ALKALMAZOTT_OSSZES alkalmazott
        INNER JOIN T_MUNKAUGYIADATOK munkaugyiadat ON munkaugyiadat.C_ALKALMAZOTTID = alkalmazott.ID
          AND ISNULL(munkaugyiadat.C_ALKALMAZASKEZDETE, GETDATE()) <= GETDATE()
          AND ISNULL(munkaugyiadat.C_ALKALMAZASMEGSZUNESE, GETDATE()) >= GETDATE()
          AND munkaugyiadat.C_TANEVID = alkalmazott.C_ALTANEVID
          AND munkaugyiadat.TOROLT = 'F'
        INNER JOIN T_MUNKAKORTIPUS_OSSZES mkt ON mkt.ID = munkaugyiadat.C_MUNKAKORTIPUSA AND mkt.C_ALTANEVID = munkaugyiadat.C_TANEVID AND mkt.TOROLT = 'F'
      WHERE alkalmazott.TOROLT = 'F'
        AND alkalmazott.C_ALTANEVID = tv.ID
        AND mkt.C_ALKALMAZOTTMUNKAKORTIPUSID = @pTanarAlkalmazottMunkakor
     ) AS AlkalmazottakSzama
    ,(SELECT
        COUNT(1)
      FROM T_TANULO_OSSZES t
        LEFT JOIN (
          SELECT 
             t.ID TanuloId
            ,tcs.C_OSZTALYCSOPORTID OsztalyId
          FROM T_TANULO_OSSZES t
            INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = t.ID
              AND tcs.TOROLT='F'
              AND tcs.C_BELEPESDATUM <= @pDatum
              AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @pDatum)
            INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_TANULOCSOPORTID = tcs.ID
              AND tta.TOROLT='F'
          WHERE t.C_ALTANEVID = tv.ID
        ) AS tanugyiAdatok ON tanugyiAdatok.TanuloId = t.ID
        INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = tanugyiAdatok.TanuloId
          AND tcs.C_OSZTALYCSOPORTID = tanugyiAdatok.OsztalyId
          AND tcs.TOROLT='F'
          AND tcs.C_BELEPESDATUM <= CAST(GETDATE() AS DATE)
          AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > CAST(GETDATE() AS DATE))
      WHERE t.TOROLT = 'F'
        AND t.C_ALTANEVID = tv.ID
     ) AS AktivTanulokSzama
    ,(SELECT
        COUNT(1)
      FROM T_TANULO_OSSZES t
        LEFT JOIN (
          SELECT
            t.ID TanuloId
          FROM T_TANULO_OSSZES t
            INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = t.ID
              AND tcs.TOROLT='F'
              AND tcs.C_BELEPESDATUM <= @pDatum
              AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @pDatum)
            INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_TANULOCSOPORTID = tcs.ID
              AND tta.TOROLT='F'
          WHERE t.C_ALTANEVID = tv.ID
        ) AS tanugyiAdatok ON tanugyiAdatok.TanuloId = t.ID
      WHERE t.TOROLT = 'F'
        AND t.C_ALTANEVID = tv.ID
     ) AS TanulokSzama
    ,(SELECT
        COUNT(1)
      FROM T_TEREM_OSSZES adat
      WHERE adat.C_TANEVID = tv.ID
        AND adat.TOROLT = 'F'
      ) AS TermekSzama
    ,(SELECT
        COUNT(1)
      FROM T_ESZKOZ_OSSZES adat
      WHERE adat.C_TANEVID = tv.ID
        AND adat.TOROLT = 'F'
     ) AS EszkozokSzama
    ,(SELECT
        SUM(adat.C_ORASZAM)
      FROM T_FOGLALKOZAS_OSSZES adat
      WHERE adat.C_TANEVID = tv.ID
         AND adat.TOROLT = 'F'
     ) AS TtfOrakSzama
    ,(SELECT
        COUNT(1)
      FROM T_OSZTALY_OSSZES adat
      WHERE adat.C_ALTANEVID = tv.ID
        AND adat.TOROLT = 'F'
      ) AS OsztalyokSzama
    ,(SELECT
        COUNT(1)
      FROM T_CSOPORT_OSSZES adat
      WHERE adat.C_ALTANEVID = tv.ID
      AND adat.TOROLT = 'F'
     ) AS CsoportokSzama
  FROM T_TANEV_OSSZES tv
    INNER JOIN T_INTEZMENY i ON i.ID = tv.C_INTEZMENYID
    INNER JOIN T_INTEZMENYADATOK_OSSZES ia ON ia.C_INTEZMENYID = tv.C_INTEZMENYID
      AND ia.C_TANEVID = tv.ID
      AND ia.TOROLT = 'F'
  WHERE tv.TOROLT = 'F'
    AND tv.ID = @pTanevId

END
GO
