GO
/****** Object:  StoredProcedure [dbo].[sp_GetIntezmenyFeltoltottsegeRiport]    Script Date: 2016.10.07. 8:37:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('[sp_GetIntezmenyFeltoltottsegeRiport]') IS NOT NULL
BEGIN
  DROP PROCEDURE [sp_GetIntezmenyFeltoltottsegeRiport]
END
GO

-- =============================================
-- Author:		Kelemen Attila
-- Create date: 2016. 08. 10.
-- Description: Adatok az intézmény feltöltöttsége riporthoz
-- =============================================
CREATE PROCEDURE  [sp_GetIntezmenyFeltoltottsegeRiport]
  @fenntartoId int,
  @intezmenyId int,
  @tanevNev nvarchar(20),
  @utazoGyogypedagogusCsoportjaCsoportTipusa int
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

  DECLARE @intezmenyTable table (
    id int primary key,
    tanevId int
  )

  IF @fenntartoId IS NOT NULL AND @intezmenyId IS NOT NULL BEGIN
    INSERT INTO @intezmenyTable (id)
    SELECT i.ID FROM T_INTEZMENY i
    WHERE i.C_FENNTARTOAZONOSITO = @fenntartoId 
      AND i.ID = @intezmenyId
      AND i.TOROLT = 'F'
  END

  IF @fenntartoId IS NOT NULL AND @intezmenyId IS NULL BEGIN
    INSERT INTO @intezmenyTable (id)
    SELECT i.ID FROM T_INTEZMENY i
    WHERE i.C_FENNTARTOAZONOSITO = @fenntartoId
      AND i.TOROLT = 'F'
  END

  IF @fenntartoId IS NULL AND @intezmenyId IS NOT NULL BEGIN
    INSERT INTO @intezmenyTable (id)
    SELECT i.ID FROM T_INTEZMENY i 
    WHERE i.ID = @intezmenyId
      AND i.TOROLT = 'F'
  END

  IF @fenntartoId IS NULL AND @intezmenyId IS NULL BEGIN
    INSERT INTO @intezmenyTable (id)
    SELECT i.ID FROM T_INTEZMENY i 
    WHERE i.TOROLT = 'F'
  END

  IF NOT EXISTS (SELECT 1 FROM @intezmenyTable) BEGIN
    RETURN
  END  

  UPDATE i
    SET i.tanevId = t.ID
  FROM @intezmenyTable i
  INNER JOIN T_TANEV t ON t.C_INTEZMENYID = i.id
  WHERE t.C_NEV = @tanevNev
    AND t.TOROLT = 'F'

	select 
Ossz,
NincsNem,
IIF(Ossz = 0, 0, cast(NincsNem as float)/cast(Ossz as float) * 100)  NincsNemSzazalek,

NincsMunkakor,
IIF(Ossz = 0, 0, cast(NincsMunkakor as float)/cast(Ossz as float) * 100) NincsMunkakorSzazalek,

NincsFoglalkoztatasTipus,
IIF(Ossz = 0, 0, cast(NincsFoglalkoztatasTipus as float)/cast(Ossz as float) * 100) NincsFoglalkoztatasTipusSzazalek,

NincsKotelezoOraszam,
IIF(Ossz = 0, 0, cast(NincsKotelezoOraszam as float)/cast(Ossz as float) * 100) NincsKotelezoOraszamSzazalek,

NincsKepesites,
IIF(Ossz = 0, 0, cast(NincsKepesites as float)/cast(Ossz as float) * 100) NincsKepesitesSzazalek
 From
(
select
 count(1) Ossz,
  (select count(1)  from T_ALKALMAZOTT inner join T_FELHASZNALO on T_ALKALMAZOTT.ID = T_FELHASZNALO.ID
   INNER JOIN @intezmenyTable i ON T_FELHASZNALO.C_INTEZMENYID = i.id  AND T_FELHASZNALO.C_TANEVID = i.tanevId
  where (T_FELHASZNALO.C_NEME is null OR T_FELHASZNALO.C_NEME = 1565)
  AND T_ALKALMAZOTT.TOROLT ='F' AND T_FELHASZNALO.TOROLT ='F'
  AND T_MUNKAUGYIADATOK.C_BETOLTETLENALLASHELY = 'F'
  ) NincsNem,

 (select count(1)  from T_ALKALMAZOTT inner join T_MUNKAUGYIADATOK on T_ALKALMAZOTT.ID = T_MUNKAUGYIADATOK.C_ALKALMAZOTTID
 INNER JOIN @intezmenyTable i ON T_MUNKAUGYIADATOK.C_INTEZMENYID = i.id  AND T_MUNKAUGYIADATOK.C_TANEVID = i.tanevId
  where (T_MUNKAUGYIADATOK.C_MUNKAKORTIPUSA is null OR T_MUNKAUGYIADATOK.C_MUNKAKORTIPUSA = 548)
  AND T_ALKALMAZOTT.TOROLT ='F' AND T_MUNKAUGYIADATOK.TOROLT='F'
  AND T_MUNKAUGYIADATOK.C_BETOLTETLENALLASHELY = 'F'
  ) NincsMunkakor,

  (select count(1)  from T_ALKALMAZOTT inner join T_MUNKAUGYIADATOK on T_ALKALMAZOTT.ID = T_MUNKAUGYIADATOK.C_ALKALMAZOTTID
   INNER JOIN @intezmenyTable i ON T_MUNKAUGYIADATOK.C_INTEZMENYID = i.id  AND T_MUNKAUGYIADATOK.C_TANEVID = i.tanevId
  where (T_MUNKAUGYIADATOK.C_MUNKAVISZONYTIPUSA is null OR T_MUNKAUGYIADATOK.C_MUNKAVISZONYTIPUSA = 643)
  AND T_ALKALMAZOTT.TOROLT ='F' AND T_MUNKAUGYIADATOK.TOROLT='F'
  AND T_MUNKAUGYIADATOK.C_BETOLTETLENALLASHELY = 'F'
  ) NincsFoglalkoztatasTipus,

    (select count(1)  from T_ALKALMAZOTT inner join T_MUNKAUGYIADATOK on T_ALKALMAZOTT.ID = T_MUNKAUGYIADATOK.C_ALKALMAZOTTID
	 INNER JOIN @intezmenyTable i ON T_MUNKAUGYIADATOK.C_INTEZMENYID = i.id  AND T_MUNKAUGYIADATOK.C_TANEVID = i.tanevId
  where (T_MUNKAUGYIADATOK.C_KOTELEZOORASZAM is null OR T_MUNKAUGYIADATOK.C_KOTELEZOORASZAM <= 0)
  AND T_ALKALMAZOTT.TOROLT ='F' AND T_MUNKAUGYIADATOK.TOROLT='F'
  AND T_MUNKAUGYIADATOK.C_BETOLTETLENALLASHELY = 'F'
  ) NincsKotelezoOraszam,

      (select count(1)  from T_ALKALMAZOTT inner join T_MUNKAUGYIADATOK on T_ALKALMAZOTT.ID = T_MUNKAUGYIADATOK.C_ALKALMAZOTTID
	   INNER JOIN @intezmenyTable i ON T_MUNKAUGYIADATOK.C_INTEZMENYID = i.id  AND T_MUNKAUGYIADATOK.C_TANEVID = i.tanevId
  where T_MUNKAUGYIADATOK.C_BESOROLASIFOKOZAT is null
  AND T_ALKALMAZOTT.TOROLT ='F' AND (T_MUNKAUGYIADATOK.TOROLT='F'
   OR 
  --Tanár és Képesítés NA
  (T_MUNKAUGYIADATOK.C_PEDAGOGUSSTATUSZA <> 3036 AND T_MUNKAUGYIADATOK.C_BESOROLASIFOKOZAT = 3040)
  OR
  --Nem tanár és képesítés nem NA
  (T_MUNKAUGYIADATOK.C_PEDAGOGUSSTATUSZA = 3036 AND T_MUNKAUGYIADATOK.C_BESOROLASIFOKOZAT <> 3040))
  AND T_MUNKAUGYIADATOK.C_BETOLTETLENALLASHELY = 'F'
  ) NincsKepesites

  from T_ALKALMAZOTT
  INNER JOIN @intezmenyTable i ON T_ALKALMAZOTT.C_ALINTEZMENYID = i.id  AND T_ALKALMAZOTT.C_ALTANEVID = i.tanevId
  inner join T_MUNKAUGYIADATOK on T_ALKALMAZOTT.ID = T_MUNKAUGYIADATOK.C_ALKALMAZOTTID
  WHERE T_ALKALMAZOTT.TOROLT='F' and T_MUNKAUGYIADATOK.C_BETOLTETLENALLASHELY = 'F'
  group by T_MUNKAUGYIADATOK.C_BETOLTETLENALLASHELY
  ) Alk


  select 
Ossz,
NincsEvfolyam,
IIF(Ossz = 0, 0, cast(NincsEvfolyam as float)/cast(Ossz as float) * 100) NincsEvfolyamSzazalek,
NincsTervezettLetszam,
IIF(Ossz = 0, 0, cast(NincsTervezettLetszam as float)/cast(Ossz as float) * 100) NincsTervezettLetszamSzazalek

From
(
select
 count(1) Ossz,
  (select count(1)  from T_OSZTALY inner join T_OSZTALYCSOPORT on T_OSZTALY.ID = T_OSZTALYCSOPORT.ID
  INNER JOIN @intezmenyTable i ON T_OSZTALYCSOPORT.C_INTEZMENYID = i.id  AND T_OSZTALYCSOPORT.C_TANEVID = i.tanevId
  where (T_OSZTALYCSOPORT.C_EVFOLYAMTIPUSA is null OR T_OSZTALYCSOPORT.C_EVFOLYAMTIPUSA = 1296)
  AND T_OSZTALY.TOROLT='F' AND T_OSZTALYCSOPORT.TOROLT='F'
  ) NincsEvfolyam,

   (select count(1)  from 	(
	select t_osztaly.id
	 from t_osztaly
	 inner join t_osztalycsoport on t_osztaly.id = t_osztalycsoport.id
	 INNER JOIN @intezmenyTable i ON T_OSZTALYCSOPORT.C_INTEZMENYID = i.id  AND T_OSZTALYCSOPORT.C_TANEVID = i.tanevId
	  left join T_TANULOCSOPORT on t_osztaly.id = T_TANULOCSOPORT.C_OSZTALYCSOPORTID and
		 T_TANULOCSOPORT.TOROLT ='F' and t_tanulocsoport.C_BELEPESDATUM <= GETDATE() AND 
		 (T_TANULOCSOPORT.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT.C_KILEPESDATUM > GETDATE())
	 where t_tanulocsoport.id is null
	 and t_osztaly.torolt ='F' and t_osztalycsoport.TOROLT='F' 
	 group by t_osztaly.ID ) Osztaly
  ) NincsTervezettLetszam
  
  from T_OSZTALY
  inner join T_OSZTALYCSOPORT on T_OSZTALY.ID = T_OSZTALYCSOPORT.ID
  INNER JOIN @intezmenyTable i ON T_OSZTALYCSOPORT.C_INTEZMENYID = i.id  AND T_OSZTALYCSOPORT.C_TANEVID = i.tanevId
  AND T_OSZTALY.TOROLT='F'
  ) Oszt

    select 
Ossz,
NincsCsoportTipus,
IIF(Ossz = 0, 0, cast(NincsCsoportTipus as float)/cast(Ossz as float) * 100) NincsCsoportTipusSzazalek,
NincsEvfolyam,
IIF(Ossz = 0, 0, cast(NincsEvfolyam as float)/cast(Ossz as float) * 100) NincsEvfolyamSzazalek,
NincsTervezettLetszam,
IIF(Ossz = 0, 0, cast(NincsTervezettLetszam as float)/cast(Ossz as float) * 100) NincsTervezettLetszamSzazalek

From
(
select
 count(1) Ossz,
 (select count(1)  from T_CSOPORT inner join T_OSZTALYCSOPORT on T_CSOPORT.ID = T_OSZTALYCSOPORT.ID
   INNER JOIN @intezmenyTable i ON T_OSZTALYCSOPORT.C_INTEZMENYID = i.id  AND T_OSZTALYCSOPORT.C_TANEVID = i.tanevId
  where (T_CSOPORT.C_TIPUSA is null OR T_CSOPORT.C_TIPUSA = 1031)
  AND T_CSOPORT.TOROLT='F' AND T_OSZTALYCSOPORT.TOROLT='F') NincsCsoportTipus,

  (select count(1)  from T_CSOPORT inner join T_OSZTALYCSOPORT on T_CSOPORT.ID = T_OSZTALYCSOPORT.ID
    INNER JOIN @intezmenyTable i ON T_OSZTALYCSOPORT.C_INTEZMENYID = i.id  AND T_OSZTALYCSOPORT.C_TANEVID = i.tanevId
  where (T_OSZTALYCSOPORT.C_EVFOLYAMTIPUSA is null OR T_OSZTALYCSOPORT.C_EVFOLYAMTIPUSA = 1296)
  AND T_CSOPORT.TOROLT='F' AND T_OSZTALYCSOPORT.TOROLT='F') NincsEvfolyam,

   (select count(1)  from 	(
	select t_csoport.id
	 from t_csoport
	 inner join t_osztalycsoport on t_csoport.id = t_osztalycsoport.id
	 INNER JOIN @intezmenyTable i ON T_OSZTALYCSOPORT.C_INTEZMENYID = i.id  AND T_OSZTALYCSOPORT.C_TANEVID = i.tanevId
	  left join T_TANULOCSOPORT on t_csoport.id = T_TANULOCSOPORT.C_OSZTALYCSOPORTID and
		 T_TANULOCSOPORT.TOROLT ='F' and t_tanulocsoport.C_BELEPESDATUM <= GETDATE() AND 
		 (T_TANULOCSOPORT.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT.C_KILEPESDATUM > GETDATE())
	 where t_tanulocsoport.id is null
	 and t_csoport.torolt ='F' and t_osztalycsoport.TOROLT='F' AND T_CSOPORT.C_TIPUSA != @utazoGyogypedagogusCsoportjaCsoportTipusa
	 group by t_csoport.ID ) Csoport
  ) NincsTervezettLetszam
  from T_CSOPORT
  inner join T_OSZTALYCSOPORT on T_CSOPORT.ID = T_OSZTALYCSOPORT.ID
 INNER JOIN @intezmenyTable i ON T_OSZTALYCSOPORT.C_INTEZMENYID = i.id  AND T_OSZTALYCSOPORT.C_TANEVID = i.tanevId
   AND T_CSOPORT.TOROLT='F'
   ) Csop

      select 
Ossz,
NincsTargyKategoria,
IIF(Ossz = 0, 0, cast(NincsTargyKategoria as float)/cast(Ossz as float) * 100) NincsTargyKategoriaSzazalek
From
(
select
 count(1) Ossz,
 (select count(1)  from T_TANTARGY 
 INNER JOIN @intezmenyTable i ON T_TANTARGY.C_INTEZMENYID = i.id  AND T_TANTARGY.C_TANEVID = i.tanevId
  where (T_TANTARGY.C_TARGYKATEGORIA is null OR T_TANTARGY.C_TARGYKATEGORIA = 1197)
  AND T_TANTARGY.TOROLT='F') NincsTargyKategoria
    
  from T_TANTARGY
  INNER JOIN @intezmenyTable i ON T_TANTARGY.C_INTEZMENYID = i.id  AND T_TANTARGY.C_TANEVID = i.tanevId
  WHERE T_TANTARGY.TOROLT='F'
  ) Targy

END
