﻿--Migration
CREATE TABLE #JavitandoAdatok (
   EredetiTanitasioraId int
  ,JavitottTanitasioraId int
  ,DktFeladatId int
)

--------------------------------------
-- Még javítható adatok gyűjtése
--------------------------------------
INSERT INTO #JavitandoAdatok
SELECT
   t.ID EredetiTanitasioraId
  ,hf.C_TANITASIORAID JavitottTanitasioraId
  ,hibasTanitasiorak.javitandoFeladatId DktFeladatId
FROM T_TANITASIORA_OSSZES t
LEFT JOIN T_DKT_FELADAT_OSSZES hf on t.C_TANTARGYID = hf.C_TANTARGYID and t.C_OSZTALYCSOPORTID = hf.C_OSZTALYCSOPORTID
                                AND (t.C_TANARID = hf.C_ALKALMAZOTTID OR t.C_HELYETTESITOTANARID = hf.C_ALKALMAZOTTID)
                                AND hf.C_DATUM = t.C_DATUM
                                AND (hf.C_ORASZAM = t.C_ORASZAM OR CONVERT(datetime, CONVERT(varchar(8), hf.C_IDOPONT, 8)) = CONVERT(datetime, CONVERT(varchar(8), t.C_ORAKEZDETE, 8)))
                                AND t.C_TANEVID = hf.C_TANEVID
                                AND t.C_INTEZMENYID = hf.C_INTEZMENYID
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = hf.C_ROGZITOALKALMAZOTTID AND fh.TOROLT = 'F' AND fh.C_TANEVID = t.C_TANEVID AND fh.C_INTEZMENYID = t.C_INTEZMENYID
INNER JOIN T_TANTARGY_OSSZES tt ON tt.ID = hf.C_TANTARGYID AND tt.TOROLT = 'F' AND tt.C_TANEVID = t.C_TANEVID AND tt.C_INTEZMENYID = t.C_INTEZMENYID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = hf.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F' AND ocs.C_TANEVID = t.C_TANEVID AND ocs.C_INTEZMENYID = t.C_INTEZMENYID
CROSS APPLY
(
  SELECT tanitasiora.id, feladat.ID javitandoFeladatId 
  FROM T_DKT_FELADAT_OSSZES feladat
  INNER JOIN T_TANITASIORA_OSSZES tanitasiora ON tanitasiora.ID = feladat.C_TANITASIORAID
  WHERE feladat.C_TANITASIORAID IS NOT NULL
    AND tanitasiora.TOROLT = 'T'
    AND tanitasiora.id = t.id
) hibasTanitasiorak 
INNER JOIN T_TANITASIORA_OSSZES t2 on t2.ID = hf.C_TANITASIORAID AND t2.C_TANEVID = t.C_TANEVID AND t2.C_INTEZMENYID = t.C_INTEZMENYID
WHERE hf.TOROLT = 'F' 
  AND hf.C_FELADATTIPUSID = 0
  AND t2.TOROLT = 'F'

--------------------------------------
-- Még javítható adatok javítása
--------------------------------------
UPDATE feladat
  SET feladat.C_TANITASIORAID = javitandoAdatok.JavitottTanitasioraId
    ,feladat.MODIFIER = 0
    ,feladat.LASTCHANGED = GETDATE()
    ,feladat.SERIAL += 1
FROM #JavitandoAdatok javitandoAdatok
INNER JOIN T_DKT_FELADAT_OSSZES feladat ON feladat.ID = javitandoAdatok.DktFeladatId AND feladat.C_TANITASIORAID = javitandoAdatok.EredetiTanitasioraId

DROP TABLE #JavitandoAdatok

--------------------------------------
-- Már nem javítható adatok NULL-ozása
--------------------------------------
UPDATE feladat
  SET feladat.C_TANITASIORAID = NULL
    ,feladat.MODIFIER = 0
    ,feladat.LASTCHANGED = GETDATE()
    ,feladat.SERIAL += 1
FROM T_DKT_FELADAT_OSSZES feladat
INNER JOIN T_TANITASIORA_OSSZES tanitasiora ON tanitasiora.ID = feladat.C_TANITASIORAID AND feladat.C_TANEVID = tanitasiora.C_TANEVID AND feladat.C_INTEZMENYID = tanitasiora.C_INTEZMENYID
WHERE feladat.C_TANITASIORAID IS NOT NULL
  AND tanitasiora.TOROLT = 'T'