-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
IF OBJECT_ID('sp_DeleteAllTTF', 'P') IS NOT NULL BEGIN
  DROP PROCEDURE sp_DeleteAllTTF
END
GO

CREATE PROCEDURE [sp_DeleteAllTTF] 
  @feladatellatasiHely int = null,
  @tanevID int
AS
BEGIN
	SET NOCOUNT ON;
  
  IF @feladatellatasiHely IS NULL BEGIN
    DELETE FROM T_FOGLALKOZASOK_TANAROK
    WHERE C_FOGLALKOZASOKID IN (
      SELECT ID FROM T_FOGLALKOZAS_OSSZES f
      WHERE NOT EXISTS (SELECT 1 FROM T_ORARENDIORA_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TANITASIORA_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TEREM_FOGLALKOZAS_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TANULOTARGYMULASZTASSTATISZT_OSSZES WHERE f.ID = C_TARGYMULASZTASSTATISZTIKAIID)
        AND f.C_IMPORTALT = 'T'
		AND f.C_TANEVID = @tanevID
    )   

    DELETE FROM T_FOGLALKOZAS
    WHERE ID IN (
      SELECT ID FROM T_FOGLALKOZAS_OSSZES f
      WHERE NOT EXISTS (SELECT 1 FROM T_ORARENDIORA_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TANITASIORA_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TEREM_FOGLALKOZAS_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TANULOTARGYMULASZTASSTATISZT_OSSZES WHERE f.ID = C_TARGYMULASZTASSTATISZTIKAIID)
        AND f.C_IMPORTALT = 'T'
		AND f.C_TANEVID = @tanevID
      )
  END
  ELSE BEGIN -- Csak a megadott feladatellátási helyen töröl
    DELETE FROM T_FOGLALKOZASOK_TANAROK
    WHERE C_FOGLALKOZASOKID IN (
      SELECT ID FROM T_FOGLALKOZAS_OSSZES f
      WHERE NOT EXISTS (SELECT 1 FROM T_ORARENDIORA_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TANITASIORA_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TEREM_FOGLALKOZAS_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TANULOTARGYMULASZTASSTATISZT_OSSZES WHERE f.ID = C_TARGYMULASZTASSTATISZTIKAIID)
        AND f.C_IMPORTALT = 'T'
        AND f.C_OSZTALYCSOPORTID IN (
          SELECT ID FROM T_OSZTALYCSOPORT_OSSZES WHERE C_FELADATELLATASIHELYID = @feladatellatasiHely and C_TANEVID = @tanevID  
        )
		AND f.C_TANEVID = @tanevID
    )   

    DELETE FROM T_FOGLALKOZAS
    WHERE ID IN (
      SELECT ID FROM T_FOGLALKOZAS_OSSZES f
      WHERE NOT EXISTS (SELECT 1 FROM T_ORARENDIORA_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TANITASIORA_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TEREM_FOGLALKOZAS_OSSZES WHERE f.ID = C_FOGLALKOZASID)
        AND NOT EXISTS (SELECT 1 FROM T_TANULOTARGYMULASZTASSTATISZT_OSSZES WHERE f.ID = C_TARGYMULASZTASSTATISZTIKAIID)
        AND f.C_IMPORTALT = 'T'
        AND f.C_OSZTALYCSOPORTID IN (
          SELECT ID FROM T_OSZTALYCSOPORT_OSSZES WHERE C_FELADATELLATASIHELYID = @feladatellatasiHely and C_TANEVID = @tanevID  
        )
		AND f.C_TANEVID = @tanevID
      )
  END -- ENDIF
  
 /* 
  * Innentől nem kell figyelni a feladatellátási helyet, 
  * mert a NOT EXISTS (SELECT 1 FROM T_FOGLALKOZAS szerepel mindenütt
  */
  DELETE t
  FROM T_TANTARGY t
  WHERE NOT EXISTS (SELECT 1 FROM T_ORATERVTARGY_OSSZES WHERE C_TANTARGYID = t.ID)
    AND NOT EXISTS (SELECT 1 FROM T_TANARITANTARGY_OSSZES WHERE C_TANTARGYID = t.ID)
    AND NOT EXISTS (SELECT 1 FROM T_TANITASIORA_OSSZES WHERE C_TANTARGYID = t.ID)
    AND NOT EXISTS (SELECT 1 FROM T_TANMENET_OSSZES WHERE C_TANTARGYID = t.ID)
    AND NOT EXISTS (SELECT 1 FROM T_TANULOERTEKELES_OSSZES WHERE C_TANTARGYID = t.ID)
    AND NOT EXISTS (SELECT 1 FROM T_TANULOESEMENY_OSSZES WHERE C_TANTARGYID = t.ID)
    AND NOT EXISTS (SELECT 1 FROM T_TANULOMENTESSEG_OSSZES WHERE C_TANTARGYID = t.ID)
    AND NOT EXISTS (SELECT 1 FROM T_TANTARGY_OSSZES WHERE C_FOTARGYID = t.ID)
    AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZAS_OSSZES WHERE C_TANTARGYID = t.ID)
    AND C_IMPORTALT = 'T'
	AND C_TANEVID = @tanevID

	DELETE cso 
	FROM T_CSOPORTOK_OSZTALYOK cso
	WHERE (EXISTS (SELECT 1 FROM T_OSZTALYCSOPORT_OSSZES ocs WHERE C_IMPORTALT = 'T' AND cso.C_CSOPORTOKID = ocs.ID AND ocs.TOROLT='F' )
	AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZAS_OSSZES WHERE C_OSZTALYCSOPORTID = cso.C_CSOPORTOKID))
	OR
	(EXISTS (SELECT 1 FROM T_OSZTALYCSOPORT_OSSZES ocs WHERE C_IMPORTALT = 'T' AND cso.C_OSZTALYOKID = ocs.ID AND ocs.TOROLT='F' )
	AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZAS_OSSZES WHERE C_OSZTALYCSOPORTID = cso.C_OSZTALYOKID))

  DELETE cs
  FROM T_CSOPORT cs
  WHERE EXISTS (SELECT 1 FROM T_OSZTALYCSOPORT_OSSZES WHERE C_IMPORTALT = 'T' AND cs.ID = ID)
		AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZAS_OSSZES WHERE C_OSZTALYCSOPORTID = cs.ID)
		AND NOT EXISTS (SELECT 1 FROM T_CSOPORTOK_OSZTALYOK WHERE C_CSOPORTOKID = cs.ID)
  
  DELETE o
  FROM T_OSZTALY o
  WHERE NOT EXISTS (SELECT 1 FROM T_NAPLOELLENORZES_OSSZES WHERE o.ID = C_OSZTALYID)
    AND EXISTS (SELECT 1 FROM T_OSZTALYCSOPORT_OSSZES WHERE C_IMPORTALT = 'T' AND o.ID = ID) 
    AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZAS_OSSZES WHERE C_OSZTALYCSOPORTID = o.ID)
    AND NOT EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE C_OSZTALYBONTASID = o.ID)
	AND NOT EXISTS (SELECT 1 FROM T_CSOPORTOK_OSZTALYOK WHERE C_OSZTALYOKID = o.ID)
	AND C_ALTANEVID = @tanevID
    
  DELETE ocs
  FROM T_OSZTALYCSOPORT ocs
  WHERE NOT EXISTS (SELECT 1 FROM T_OSZTALYCSOPORT_FALIUJSAGBEJE_OSSZES WHERE ocs.ID = C_OSZTALYCSOPORTID)
    AND NOT EXISTS (SELECT 1 FROM T_OSZTALYCSOPORT_TANEVRENDJE_OSSZES WHERE ocs.ID = C_OSZTALYCSOPORTID)
    AND NOT EXISTS (SELECT 1 FROM T_TANITASIORA_OSSZES WHERE ocs.ID = C_OSZTALYCSOPORTID)
    AND NOT EXISTS (SELECT 1 FROM T_TANMENET_OSSZES WHERE ocs.ID = C_OSZTALYCSOPORTID)
    AND NOT EXISTS (SELECT 1 FROM T_TANULOCSOPORT_OSSZES WHERE ocs.ID = C_OSZTALYCSOPORTID)
    AND NOT EXISTS (SELECT 1 FROM T_TANULOERTEKELES_OSSZES WHERE ocs.ID = C_OSZTALYCSOPORTID)
    AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZAS_OSSZES WHERE C_OSZTALYCSOPORTID = ocs.ID)
    AND NOT EXISTS (SELECT 1 FROM T_OSZTALY_OSSZES WHERE ID = ocs.ID)
    AND NOT EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE ID = ocs.ID)
    AND C_IMPORTALT = 'T'
	AND C_TANEVID = @tanevID
END
