﻿IF OBJECT_ID('[dbo].[sp_DeleteAllTTF]', 'P') IS NOT NULL BEGIN
  DROP PROCEDURE [dbo].[sp_DeleteAllTTF]
END
GO

CREATE PROCEDURE [dbo].[sp_DeleteAllTTF] 
  @feladatellatasiHelyId int = null,
  @tanevId int
AS
BEGIN
	SET NOCOUNT ON;
  
  IF @feladatellatasiHelyId 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 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_OSSZES
    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 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 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 = @feladatellatasiHelyId and C_TANEVID = @tanevId  
        )
		    AND f.C_TANEVID = @tanevId
    )   
    DELETE FROM T_FOGLALKOZAS_OSSZES
    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 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 = @feladatellatasiHelyId 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_OSSZES 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_OSSZES 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_OSSZES 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_OSSZES ocs
  WHERE NOT EXISTS (SELECT 1 FROM T_OSZTALYCSOPORT_FALIUJSAGBEJE WHERE ocs.ID = C_OSZTALYCSOPORTID)
    AND NOT EXISTS (SELECT 1 FROM T_OSZTALYCSOPORT_TANEVRENDJE 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

GO


