-- ============================================= -- Description: -- ============================================= DROP PROCEDURE IF EXISTS [dbo].[uspTantargyfelosztasImport] GO CREATE PROCEDURE [dbo].[uspTantargyfelosztasImport] @pIntezmenyId INT ,@pTanevId INT ,@pUserId INT ,@pImportJson NVARCHAR(MAX) ,@pIsTorles BIT AS BEGIN SET NOCOUNT ON; DECLARE @tableNameList NVARCHAR(2000) = 'T_TANTARGY_OSSZES,T_OSZTALYCSOPORT_OSSZES' ,@actualJson NVARCHAR(MAX) = '' ,@lastChangedDateTime DATETIME = GETDATE() --Ha törlés van, akkor a kapcsolódások törlésével kell kezdenünk! IF (@pIsTorles = 1) BEGIN --Foglalkozás kapcsolatainak törlése UPDATE OrarendiOra SET OrarendiOra.C_FOGLALKOZASID = NULL ,OrarendiOra.SERIAL = OrarendiOra.SERIAL + 1 ,OrarendiOra.LASTCHANGED = @lastChangedDateTime ,OrarendiOra.MODIFIER = @pUserId FROM T_ORARENDIORA_OSSZES OrarendiOra WHERE OrarendiOra.C_INTEZMENYID = @pIntezmenyId AND OrarendiOra.C_TANEVID = @pTanevId AND OrarendiOra.TOROLT = 'F' AND EXISTS (SELECT TOP 1 ID FROM T_FOGLALKOZAS_OSSZES Foglalkozas WHERE Foglalkozas.ID = OrarendiOra.C_FOGLALKOZASID AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId AND Foglalkozas.C_TANEVID = @pTanevId AND Foglalkozas.TOROLT = 'F' AND Foglalkozas.C_IMPORTALT = 'T' ) UPDATE TanitasiOra SET TanitasiOra.C_FOGLALKOZASID = NULL ,TanitasiOra.SERIAL = TanitasiOra.SERIAL + 1 ,TanitasiOra.LASTCHANGED = @lastChangedDateTime ,TanitasiOra.MODIFIER = @pUserId FROM T_TANITASIORA_OSSZES TanitasiOra WHERE TanitasiOra.C_INTEZMENYID = @pIntezmenyId AND TanitasiOra.C_TANEVID = @pTanevId AND TanitasiOra.TOROLT = 'F' AND EXISTS (SELECT TOP 1 ID FROM T_FOGLALKOZAS_OSSZES Foglalkozas WHERE Foglalkozas.ID = TanitasiOra.C_FOGLALKOZASID AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId AND Foglalkozas.C_TANEVID = @pTanevId AND Foglalkozas.TOROLT = 'F' AND Foglalkozas.C_IMPORTALT = 'T' ) UPDATE TanuloMulasztasStatisztika SET TanuloMulasztasStatisztika.C_TARGYMULASZTASSTATISZTIKAIID = NULL ,TanuloMulasztasStatisztika.SERIAL = TanuloMulasztasStatisztika.SERIAL + 1 ,TanuloMulasztaSstatisztika.LASTCHANGED = @lastChangedDateTime ,TanuloMulasztasStatisztika.MODIFIER = @pUserId FROM T_TANULOTARGYMULASZTASSTATISZT_OSSZES TanuloMulasztasStatisztika WHERE TanuloMulasztasStatisztika.C_INTEZMENYID = @pIntezmenyId AND TanuloMulasztasStatisztika.C_TANEVID = @pTanevId AND TanuloMulasztasStatisztika.TOROLT = 'F' AND EXISTS (SELECT TOP 1 ID FROM T_FOGLALKOZAS_OSSZES Foglalkozas WHERE Foglalkozas.ID = TanuloMulasztasStatisztika.C_TARGYMULASZTASSTATISZTIKAIID AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId AND Foglalkozas.C_TANEVID = @pTanevId AND Foglalkozas.TOROLT = 'F' AND Foglalkozas.C_IMPORTALT = 'T' ) DELETE TeremFoglalkozas FROM T_TEREM_FOGLALKOZAS TeremFoglalkozas WHERE EXISTS (SELECT TOP 1 ID FROM T_FOGLALKOZAS_OSSZES Foglalkozas WHERE Foglalkozas.ID = TeremFoglalkozas.C_FOGLALKOZASID AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId AND Foglalkozas.C_TANEVID = @pTanevId AND Foglalkozas.TOROLT = 'F' AND Foglalkozas.C_IMPORTALT = 'T' ) END --NOTE: A törlés azért false, mert a T_TANTARGY_OSSZES és a T_OSZTALYCSOPORT_OSSZES view-ból nem törlünk importnál! EXECUTE [dbo].[uspDynamicImportJsonSplit] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @pImportJson, @pIsTorles = 0, @pIsSubTable = 0, @pTableNameList = @tableNameList --Osztályok beszúrása SET @actualJson = ' { "ImportJson":{ "T_OSZTALY_OSSZES":' + (SELECT Osztaly.OsztalyCsoportId ID ,Osztaly. C_KEPZESIFORMA ,Osztaly. C_TECHNIKAIOSZTALY ,Osztaly. C_GYOGYPEDAGOGIAI ,Osztaly. C_KETTANNYELVU ,Osztaly. C_LOGOPEDIAI ,Osztaly. C_NEMZETISEGI ,Osztaly. C_NYELVIELOKESZITO ,Osztaly. C_SPORT ,Osztaly. C_ALINTEZMENYID ,Osztaly. C_ALTANEVID ,Osztaly. TOROLT ,Osztaly. SERIAL ,Osztaly. LASTCHANGED ,Osztaly. CREATED ,Osztaly. MODIFIER ,Osztaly. CREATOR ,Osztaly. ELOZOTANEVIREKORDID ,Osztaly. NNID ,Osztaly. Operation FROM (SELECT OsztalyJsonData.* ,OsztalyCsoport.ID OsztalyCsoportId FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_OSZTALY_OSSZES') WITH ( ID INT '$.ID' ,C_KEPZESIFORMA INT '$.C_KEPZESIFORMA' ,C_TECHNIKAIOSZTALY CHAR(1) '$.C_TECHNIKAIOSZTALY' ,C_GYOGYPEDAGOGIAI CHAR(1) '$.C_GYOGYPEDAGOGIAI' ,C_KETTANNYELVU CHAR(1) '$.C_KETTANNYELVU' ,C_LOGOPEDIAI CHAR(1) '$.C_LOGOPEDIAI' ,C_NEMZETISEGI CHAR(1) '$.C_NEMZETISEGI' ,C_NYELVIELOKESZITO CHAR(1) '$.C_NYELVIELOKESZITO' ,C_SPORT CHAR(1) '$.C_SPORT' ,C_ALINTEZMENYID INT '$.C_INTEZMENYID' ,C_ALTANEVID INT '$.C_TANEVID' ,TOROLT CHAR(1) '$.TOROLT' ,SERIAL INT '$.SERIAL' ,LASTCHANGED DATETIME '$.LASTCHANGED' ,CREATED DATETIME '$.CREATED' ,MODIFIER INT '$.MODIFIER' ,CREATOR INT '$.CREATOR' ,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID' ,NNID INT '$.NNID' ,Operation INT '$.Operation' ,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev' ) OsztalyJsonData LEFT JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON --NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk: -- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(OsztalyCsoport.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(OsztalyJsonData.OsztalyCsoportNev) AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId AND OsztalyCsoport.C_TANEVID = @pTanevId AND OsztalyCsoport.TOROLT = 'F' AND OsztalyJsonData.ID IS NULL ) AS Osztaly FOR JSON PATH,INCLUDE_NULL_VALUES) SET @actualJson = @actualJson + ' } }' --NOTE: A törlés azért false, mert a T_OSZTALY_OSSZES view-ból nem törlünk importnál! EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 1 --Csoportok beszúrása SET @actualJson = ' { "ImportJson":{ "T_CSOPORT_OSSZES":' + (SELECT Csoport.OsztalyCsoportId ID ,Csoport. C_TIPUSA ,Csoport.OsztalybontasId C_OSZTALYBONTASID ,Csoport. C_ALINTEZMENYID ,Csoport. C_ALTANEVID ,Csoport. TOROLT ,Csoport. SERIAL ,Csoport. LASTCHANGED ,Csoport. CREATED ,Csoport. MODIFIER ,Csoport. CREATOR ,Csoport. ELOZOTANEVIREKORDID ,Csoport. NNID ,Csoport. Operation FROM (SELECT CsoportJsonData.* ,OsztalyCsoport.ID OsztalyCsoportId ,Osztalybontas.ID OsztalybontasId FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_CSOPORT_OSSZES') WITH ( ID INT '$.ID' ,C_TIPUSA INT '$.C_TIPUSA' ,C_OSZTALYBONTASID INT '$.C_OSZTALYBONTASID' ,C_ALINTEZMENYID INT '$.C_INTEZMENYID' ,C_ALTANEVID INT '$.C_TANEVID' ,TOROLT CHAR(1) '$.TOROLT' ,SERIAL INT '$.SERIAL' ,LASTCHANGED DATETIME '$.LASTCHANGED' ,CREATED DATETIME '$.CREATED' ,MODIFIER INT '$.MODIFIER' ,CREATOR INT '$.CREATOR' ,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID' ,NNID INT '$.NNID' ,Operation INT '$.Operation' ,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev' ,OsztalybontasNev NVARCHAR(255) '$.OsztalybontasNev' ) CsoportJsonData LEFT JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON --NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk: -- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(OsztalyCsoport.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(CsoportJsonData.OsztalyCsoportNev) AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId AND OsztalyCsoport.C_TANEVID = @pTanevId AND OsztalyCsoport.TOROLT = 'F' AND CsoportJsonData.ID IS NULL LEFT JOIN T_OSZTALYCSOPORT_OSSZES Osztalybontas ON --NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk: -- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Osztalybontas.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(CsoportJsonData.OsztalybontasNev) AND Osztalybontas.C_INTEZMENYID = @pIntezmenyId AND Osztalybontas.C_TANEVID = @pTanevId AND Osztalybontas.TOROLT = 'F' AND CsoportJsonData.ID IS NULL ) AS Csoport FOR JSON PATH,INCLUDE_NULL_VALUES) SET @actualJson = @actualJson + ' } }' --NOTE: A törlés azért false, mert a T_CSOPORT_OSSZES view-ból nem törlünk importnál! EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 1 --Foglalkozások beszúrása SET @actualJson = ' { "ImportJson":{ "T_FOGLALKOZAS_OSSZES":' + (SELECT Foglalkozas. ID ,Foglalkozas. C_FOGLALKOZASTIPUSA ,Foglalkozas. C_ORASZAM ,Foglalkozas. C_NEV ,Foglalkozas. C_ERTEKELESKELL ,Foglalkozas. C_MULASZTASKELL ,Foglalkozas. C_TANARFELVEHETI ,Foglalkozas.OsztalyCsoportId C_OSZTALYCSOPORTID ,Foglalkozas.TantargyId C_TANTARGYID ,Foglalkozas.TanarId C_TANARID ,Foglalkozas. C_IMPORTALT ,Foglalkozas. C_INTEZMENYID ,Foglalkozas. C_TANEVID ,Foglalkozas. TOROLT ,Foglalkozas. SERIAL ,Foglalkozas. LASTCHANGED ,Foglalkozas. CREATED ,Foglalkozas. MODIFIER ,Foglalkozas. CREATOR ,Foglalkozas. ELOZOTANEVIREKORDID ,Foglalkozas. NNID ,Foglalkozas. Operation FROM (SELECT FoglalkozasJsonData.* ,OsztalyCsoport.ID OsztalyCsoportId ,Felhasznalo.ID TanarId ,Tantargy.ID TantargyId FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_FOGLALKOZAS_OSSZES') WITH ( ID INT '$.ID' ,C_FOGLALKOZASTIPUSA INT '$.C_FOGLALKOZASTIPUSA' ,C_ORASZAM NUMERIC(10,2) '$.C_ORASZAM' ,C_NEV NVARCHAR(255) '$.C_NEV' ,C_ERTEKELESKELL CHAR(1) '$.C_ERTEKELESKELL' ,C_MULASZTASKELL CHAR(1) '$.C_MULASZTASKELL' ,C_TANARFELVEHETI CHAR(1) '$.C_TANARFELVEHETI' ,C_IMPORTALT CHAR(1) '$.C_IMPORTALT' ,C_INTEZMENYID INT '$.C_INTEZMENYID' ,C_TANEVID INT '$.C_TANEVID' ,TOROLT CHAR(1) '$.TOROLT' ,SERIAL INT '$.SERIAL' ,LASTCHANGED DATETIME '$.LASTCHANGED' ,CREATED DATETIME '$.CREATED' ,MODIFIER INT '$.MODIFIER' ,CREATOR INT '$.CREATOR' ,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID' ,NNID INT '$.NNID' ,Operation INT '$.Operation' ,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev' ,TanarNev NVARCHAR(255) '$.TanarNev' ,TanarSzuletesiIdo NVARCHAR(255) '$.TanarSzuletesiIdo' ,TantargyNev NVARCHAR(255) '$.TantargyNev' ) FoglalkozasJsonData LEFT JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON --NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk: -- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(OsztalyCsoport.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(FoglalkozasJsonData.OsztalyCsoportNev) AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId AND OsztalyCsoport.C_TANEVID = @pTanevId AND OsztalyCsoport.TOROLT = 'F' LEFT JOIN T_TANTARGY_OSSZES Tantargy ON --NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk: -- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Tantargy.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(FoglalkozasJsonData.TantargyNev) AND Tantargy.C_INTEZMENYID = @pIntezmenyId AND Tantargy.C_TANEVID = @pTanevId AND Tantargy.TOROLT = 'F' LEFT JOIN T_FELHASZNALO_OSSZES Felhasznalo ON --NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk: -- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_NYOMTATASINEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(FoglalkozasJsonData.TanarNev) AND (FoglalkozasJsonData.TanarSzuletesiIdo IS NULL OR Felhasznalo.C_SZULETESIDATUM = FoglalkozasJsonData.TanarSzuletesiIdo) AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId AND Felhasznalo.C_TANEVID = @pTanevId AND Felhasznalo.TOROLT = 'F' INNER JOIN T_ALKALMAZOTT_OSSZES Alkalmazott ON Alkalmazott.ID = Felhasznalo.ID AND Alkalmazott.C_ALINTEZMENYID = @pIntezmenyId AND Alkalmazott.C_ALTANEVID = @pTanevId AND Alkalmazott.TOROLT = 'F' ) AS Foglalkozas FOR JSON PATH,INCLUDE_NULL_VALUES) SET @actualJson = @actualJson + ' } }' EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = @pIsTorles, @pIsSubTable = 0 END GO