kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20180425231120_KRETA_2723/sp_TantargyfelosztasImport.sql
2024-03-13 00:33:46 +01:00

288 lines
9.5 KiB
Transact-SQL

-- =============================================
-- Description: <>
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_TantargyfelosztasImport]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_TantargyfelosztasImport]
END
GO
CREATE PROCEDURE [dbo].[sp_TantargyfelosztasImport]
@pImportJson NVARCHAR(MAX)
,@pIsTorles BIT
,@pTanevId INT
,@pIntezmenyId INT
,@pUserId INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@tableNameList nvarchar(2000) = 'T_TANTARGY,T_OSZTALYCSOPORT'
,@actualJson NVARCHAR(MAX) = ''
EXECUTE [dbo].[sp_DynamicImportJsonSplit] @pImportJson = @pImportJson , @pIsTorles = @pIsTorles ,@pTableNameList = @tableNameList, @pInsertAlways = 0
IF (@pIsTorles = 1)
BEGIN
UPDATE
Osztaly
SET
Osztaly.TOROLT = 'T'
,Osztaly.SERIAL = Osztaly.SERIAL + 1
,Osztaly.LASTCHANGED = GETDATE()
,Osztaly.MODIFIER = @pUserId
FROM
T_OSZTALY Osztaly
INNER JOIN
T_OSZTALYCSOPORT OsztalyCsoport ON
OsztalyCsoport.ID = Osztaly.ID
AND OsztalyCsoport.C_TANEVID = @pTanevId
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
AND OsztalyCsoport.TOROLT = 'F'
AND OsztalyCsoport.C_IMPORTALT = 'T'
WHERE
Osztaly.TOROLT = 'F'
END
--Osztályok beszúrása
SET @actualJson = ' { "ImportJson":{ "T_OSZTALY":' +
(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
FROM
(SELECT
OsztalyJsonData.*
,OsztalyCsoport.ID OsztalyCsoportId
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_OSZTALY')
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'
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
) OsztalyJsonData
LEFT JOIN
T_OSZTALYCSOPORT OsztalyCsoport ON
OsztalyCsoport.C_NEV = OsztalyJsonData.OsztalyCsoportNev
AND OsztalyCsoport.C_TANEVID = @pTanevId
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
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 itt azért false, mert a T_OSZTALY táblának külön kell megírni a törlést, mivel a sp_DynamicImport vizsgál importált flag-et és az altábláknak ninc.
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pInsertAlways = 1
IF (@pIsTorles = 1)
BEGIN
UPDATE
Csoport
SET
Csoport.TOROLT = 'T'
,Csoport.SERIAL = Csoport.SERIAL + 1
,Csoport.LASTCHANGED = GETDATE()
,Csoport.MODIFIER = @pUserId
FROM
T_CSOPORT Csoport
INNER JOIN
T_OSZTALYCSOPORT OsztalyCsoport ON
OsztalyCsoport.ID = Csoport.ID
AND OsztalyCsoport.C_TANEVID = @pTanevId
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
AND OsztalyCsoport.TOROLT = 'F'
AND OsztalyCsoport.C_IMPORTALT = 'T'
WHERE
Csoport.TOROLT = 'F'
END
--Csoportok beszúrása
SET @actualJson = ' { "ImportJson":{ "T_CSOPORT":' +
(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. NNID
,Csoport. ELOZOTANEVIREKORDID
FROM
(SELECT
CsoportJsonData.*
,OsztalyCsoport.ID OsztalyCsoportId
,Osztalybontas.ID OsztalybontasId
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_CSOPORT')
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'
,NNID INT '$.NNID'
,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID'
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
,OsztalybontasNev NVARCHAR(255) '$.OsztalybontasNev'
) CsoportJsonData
LEFT JOIN
T_OSZTALYCSOPORT OsztalyCsoport ON
OsztalyCsoport.C_NEV = CsoportJsonData.OsztalyCsoportNev
AND OsztalyCsoport.C_TANEVID = @pTanevId
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
AND OsztalyCsoport.TOROLT = 'F'
AND CsoportJsonData.ID IS NULL
LEFT JOIN
T_OSZTALYCSOPORT Osztalybontas ON
Osztalybontas.C_NEV = CsoportJsonData.OsztalybontasNev
AND Osztalybontas.C_TANEVID = @pTanevId
AND Osztalybontas.C_INTEZMENYID = @pIntezmenyId
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 itt azért false, mert a T_CSOPORT táblának külön kell megírni a törlést, mivel a sp_DynamicImport vizsgál importált flag-et és az altábláknak ninc.
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0 ,@pInsertAlways = 1
--Foglalkozások beszúrása
SET @actualJson = ' { "ImportJson":{ "T_FOGLALKOZAS":' +
(SELECT
Foglalkozas. ID
,Foglalkozas. C_FOGLALKOZASTIPUSA
,Foglalkozas. C_ORASZAM
,Foglalkozas. C_NEV
,Foglalkozas. C_ERTEKELESKELL
,Foglalkozas. C_MULASZTASKELL
,Foglalkozas. C_TANARFELVEHETI
,Foglalkozas.TantargyId C_TANTARGYID
,Foglalkozas.OsztalyCsoportId C_OSZTALYCSOPORTID
,Foglalkozas.TanarId C_TANARID
,Foglalkozas. C_INTEZMENYID
,Foglalkozas. C_TANEVID
,Foglalkozas. C_IMPORTALT
,Foglalkozas. TOROLT
,Foglalkozas. SERIAL
,Foglalkozas. LASTCHANGED
,Foglalkozas. CREATED
,Foglalkozas. MODIFIER
,Foglalkozas. CREATOR
,Foglalkozas. ELOZOTANEVIREKORDID
,Foglalkozas. NNID
FROM
(SELECT
FoglalkozasJsonData.*
,OsztalyCsoport.ID OsztalyCsoportId
,Felhasznalo.ID TanarId
,Tantargy.ID TantargyId
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_FOGLALKOZAS')
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_TANTARGYID INT '$.C_TANTARGYID'
,C_OSZTALYCSOPORTID INT '$.C_OSZTALYCSOPORTID'
,C_TANARID INT '$.C_TANARID'
,C_INTEZMENYID INT '$.C_INTEZMENYID'
,C_TANEVID INT '$.C_TANEVID'
,C_IMPORTALT CHAR(1) '$.C_IMPORTALT'
,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'
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
,TanarNev NVARCHAR(255) '$.TanarNev'
,TantargyNev NVARCHAR(255) '$.TantargyNev'
) FoglalkozasJsonData
LEFT JOIN
T_OSZTALYCSOPORT OsztalyCsoport ON
OsztalyCsoport.C_NEV = FoglalkozasJsonData.OsztalyCsoportNev
AND OsztalyCsoport.C_TANEVID = @pTanevId
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
AND OsztalyCsoport.TOROLT = 'F'
LEFT JOIN
T_FELHASZNALO Felhasznalo ON
Felhasznalo.C_NYOMTATASINEV = FoglalkozasJsonData.TanarNev
AND Felhasznalo.C_TANEVID = @pTanevId
AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId
AND Felhasznalo.TOROLT = 'F'
LEFT JOIN
T_TANTARGY Tantargy ON
Tantargy.C_NEV = FoglalkozasJsonData.TantargyNev
AND Tantargy.C_TANEVID = @pTanevId
AND Tantargy.C_INTEZMENYID = @pIntezmenyId
AND Tantargy.TOROLT = 'F'
) AS Foglalkozas
FOR JSON PATH,INCLUDE_NULL_VALUES)
SET @actualJson = @actualJson + ' } }'
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = @pIsTorles, @pInsertAlways = 0
END
GO