﻿DROP PROCEDURE IF EXISTS sp_FollowUpFeladatellatasiHely
GO

CREATE PROCEDURE sp_FollowUpFeladatellatasiHely
  @intezmenyId int,
  @aktTanevId int,
  @kovetkezoTanevId int,
  @feladatellatasiHelyId int
AS
BEGIN

DECLARE
   @kovetkezoFeladatellatasiHelyId int
  ,@kovOktatasiNevelesiFeladat int
  ,@kovMukodesiHelyId int

  SELECT @kovOktatasiNevelesiFeladat=okt.ID FROM T_OKTATASINEVELESIFELADAT_OSSZES okt
    INNER JOIN T_FELADATELLATASIHELY_OSSZES fh ON fh.C_OKTATASINEVELESIFELADATTIPUS=okt.ELOZOTANEVIREKORDID AND fh.ID=@feladatellatasiHelyId  AND fh.TOROLT='F'
  WHERE C_ALTANEVID=@kovetkezoTanevId AND okt.TOROLT='F' 

  SELECT @kovMukodesiHelyId=mh.ID FROM T_FELADATELLATASIHELY_OSSZES fh
    INNER JOIN T_MUKODESIHELY_OSSZES mh ON mh.ELOZOTANEVIREKORDID=fh.C_MUKODESIHELYID AND mh.TOROLT='F'
  WHERE fh.ID=@feladatellatasiHelyId AND fh.TOROLT='F'

  IF EXISTS(SELECT 1 FROM T_FELADATELLATASIHELY_OSSZES WHERE TOROLT='F' AND C_TANEVID=@kovetkezoTanevId AND C_MUKODESIHELYID=@kovMukodesiHelyId AND C_OKTATASINEVELESIFELADATTIPUS=@kovOktatasiNevelesiFeladat AND ISNULL(ELOZOTANEVIREKORDID,0)<>@feladatellatasiHelyId)
  BEGIN
    UPDATE T_FELADATELLATASIHELY_OSSZES SET ELOZOTANEVIREKORDID = NULL WHERE ELOZOTANEVIREKORDID=@feladatellatasiHelyId
    UPDATE T_FELADATELLATASIHELY_OSSZES SET ELOZOTANEVIREKORDID = @feladatellatasiHelyId WHERE TOROLT='F' AND C_TANEVID=@kovetkezoTanevId AND C_MUKODESIHELYID=@kovMukodesiHelyId AND C_OKTATASINEVELESIFELADATTIPUS=@kovOktatasiNevelesiFeladat AND ISNULL(ELOZOTANEVIREKORDID,0)<>@feladatellatasiHelyId
  END

  SELECT @kovetkezoFeladatellatasiHelyId = ID FROM T_FELADATELLATASIHELY_OSSZES WHERE ELOZOTANEVIREKORDID = @feladatellatasiHelyId
  IF (SELECT TOROLT FROM T_FELADATELLATASIHELY_OSSZES WHERE ID = @feladatellatasiHelyId) = 'T' OR (SELECT TOROLT FROM T_FELADATELLATASIHELY_OSSZES WHERE ID = @kovetkezoFeladatellatasiHelyId) = 'T' BEGIN
	RETURN
  END

IF (@kovetkezoFeladatellatasiHelyId IS NULL)
BEGIN
	INSERT INTO T_FELADATELLATASIHELY_OSSZES (
       C_OKTATASINEVELESIFELADATTIPUS
      ,C_ENGEDELYEZETTOSSZLETSZAM
      ,C_FELADATELLATASIHELYKOD
      ,C_ENGEDELYEZETTOSZTALY
      ,C_MUKODESIHELYID
      ,C_INTEZMENYID
      ,C_TANEVID
      ,SERIAL
      ,LASTCHANGED
      ,CREATED
      ,MODIFIER
      ,CREATOR
	  ,ELOZOTANEVIREKORDID
    ) SELECT 
	   okt.ID
      ,t.C_ENGEDELYEZETTOSSZLETSZAM AS C_ENGEDELYEZETTOSSZLETSZAM
      ,t.C_FELADATELLATASIHELYKOD AS C_FELADATELLATASIHELYKOD
      ,t.C_ENGEDELYEZETTOSZTALY AS C_ENGEDELYEZETTOSZTALY
      ,m.ID
      ,t.C_INTEZMENYID   AS C_INTEZMENYID
      ,@kovetkezoTanevId   AS C_TANEVID  
      ,0 AS SERIAL             
      ,t.LASTCHANGED AS LASTCHANGED
      ,t.LASTCHANGED AS CREATED
      ,t.MODIFIER AS MODIFIER
      ,t.MODIFIER AS CREATOR
	  ,t.ID AS ELOZOTANEVIREKORDID
    FROM T_FELADATELLATASIHELY_OSSZES t 
		INNER JOIN T_MUKODESIHELY_OSSZES m ON m.ELOZOTANEVIREKORDID=t.C_MUKODESIHELYID AND m.TOROLT='F'
		INNER JOIN T_OKTATASINEVELESIFELADAT_OSSZES okt ON okt.ELOZOTANEVIREKORDID=t.C_OKTATASINEVELESIFELADATTIPUS AND okt.TOROLT='F' AND okt.C_ALTANEVID=@kovetkezoTanevId
	WHERE t.TOROLT='F' AND t.ID=@feladatellatasiHelyId
END
ELSE
BEGIN
	UPDATE kovetkezo SET
       kovetkezo.C_OKTATASINEVELESIFELADATTIPUS = okt.ID
      ,kovetkezo.C_ENGEDELYEZETTOSSZLETSZAM = aktiv.C_ENGEDELYEZETTOSSZLETSZAM
      ,kovetkezo.C_ENGEDELYEZETTOSZTALY = aktiv.C_ENGEDELYEZETTOSZTALY
      ,kovetkezo.C_FELADATELLATASIHELYKOD = aktiv.C_FELADATELLATASIHELYKOD
	  ,kovetkezo.MODIFIER = aktiv.MODIFIER
	  ,kovetkezo.LASTCHANGED = aktiv.LASTCHANGED
	  ,kovetkezo.SERIAL += 1
	FROM T_FELADATELLATASIHELY_OSSZES kovetkezo
		INNER JOIN T_FELADATELLATASIHELY_OSSZES aktiv ON aktiv.ID = @feladatellatasiHelyId AND aktiv.ID=kovetkezo.ELOZOTANEVIREKORDID AND aktiv.ID = @feladatellatasiHelyId
		INNER JOIN T_OKTATASINEVELESIFELADAT_OSSZES okt ON okt.ELOZOTANEVIREKORDID=aktiv.C_OKTATASINEVELESIFELADATTIPUS AND okt.TOROLT='F' AND okt.C_ALTANEVID=@kovetkezoTanevId
	END
END
GO