This commit is contained in:
2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View File

@@ -0,0 +1,243 @@
-- =============================================
-- Description: <Dinamikus import>
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_DynamicImport]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_DynamicImport]
END
GO
CREATE PROCEDURE [dbo].[sp_DynamicImport]
@pImportJson NVARCHAR(MAX)
,@pIsTorles BIT
,@pUserId INT
,@pInsertAlways BIT = 0
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE
@sqlCommand NVARCHAR(MAX) = ''
,@lastChangedDateTime DATETIME = GETDATE()
,@modifierId INT = @pUserId
,@openJsonWithCommand NVARCHAR(MAX)
,@rootElementJsonWithCommand NVARCHAR(300)
,@columnNameFromJsonCommand NVARCHAR(300)
,@columnListForInsert NVARCHAR(MAX)
,@columnListForUpdate NVARCHAR(MAX)
,@sqlInsertCommand NVARCHAR(MAX)
,@sqlUpdateCommand NVARCHAR(MAX)
,@sqlDeleteCommand NVARCHAR(MAX)
,@rootElement NVARCHAR(100)
,@tableNameFromJson NVARCHAR(50)
,@columnCount INT
,@openJsonPath NVARCHAR(300)
DECLARE @TableName TABLE
(
TableName NVARCHAR(50)
)
DECLARE @ColumnTable TABLE
(
ColumnName NVARCHAR(50)
)
DECLARE @ColumnDataTable TABLE
(
ColumnName NVARCHAR(50)
,ColumnType NVARCHAR(50)
,MaxLengthValue NVARCHAR(50)
,NumericPrecision NVARCHAR(50)
,NumericScale NVARCHAR(50)
,IsNullable NVARCHAR(50)
)
-- A Json Root elemének kiszedése változóba @rootElement
SELECT
@rootElement = [key]
FROM
OPENJSON(@pImportJson, N'strict $')
--Az importálandó táblanevének kiszedése JSON-ből (rootelem utáni elem) @tableNameFromJson
SET @rootElementJsonWithCommand =
'SELECT
@tableNameFromJson = [key]
FROM
OPENJSON(@pImportJson, N''lax $.' + @rootElement + ''')
SELECT
@tableNameFromJson '
INSERT INTO @TableName
EXEC sp_executesql @rootElementJsonWithCommand, N'@pImportJson NVARCHAR(MAX), @tableNameFromJson NVARCHAR(50)', @pImportJson, @tableNameFromJson
SELECT @tableNameFromJson = (SELECT TOP 1 TableName FROM @TableName)
--NOTE: Megvizsgáljuk, hogy létezik-e a tábla neve a Json-ben
IF (@tableNameFromJson IS NOT NULL)
BEGIN
--Ha Törölnünk is kell akkor azzal kezdünk!
IF @pIsTorles = 1
BEGIN
--DELETE összeállítása (Igazából update mert csak töröltre állít)
SET @sqlDeleteCommand =
'UPDATE '
+ @tableNameFromJson + '
SET '
+ @tableNameFromJson + '.TOROLT = ''T'', '
+ @tableNameFromJson + '.SERIAL = ' + @tableNameFromJson + '.SERIAL + 1, '
+ @tableNameFromJson + '.LASTCHANGED = ''' + CONVERT(NVARCHAR(32), @lastChangedDateTime, 126) + ''', '
+ @tableNameFromJson + '.MODIFIER = ''' + CONVERT(NVARCHAR(32), @modifierId) + '''
WHERE '
+ @tableNameFromJson + '.TOROLT = ''F''
AND ' + @tableNameFromJson + '.C_IMPORTALT = ''T'' '
SET @sqlCommand = @sqlDeleteCommand + @sqlCommand
END
--Oszlopok nevei a Json-ben
SET @columnNameFromJsonCommand =
'SELECT
[key] ColumnNameList
INTO
#ColumnList
FROM
OPENJSON(@pImportJson, N''lax $.' + @rootElement + '.' + @tableNameFromJson + '[0]'')
SELECT * FROM #ColumnList'
INSERT INTO @ColumnTable
EXEC sp_executesql @columnNameFromJsonCommand, N'@pImportJson NVARCHAR(MAX)', @pImportJson
SELECT @columnCount = (SELECT COUNT(*) FROM @ColumnTable)
--NOTE: Megvizsgáljuk, hogy van-e oszlop a Json-ben
IF (@columnCount <> 0)
BEGIN
INSERT INTO
@ColumnDataTable
SELECT
COLUMN_NAME
,DATA_TYPE
,CHARACTER_MAXIMUM_LENGTH
,NUMERIC_PRECISION
,NUMERIC_SCALE
,IS_NULLABLE
FROM
INFORMATION_SCHEMA.columns
WHERE
TABLE_NAME = @tableNameFromJson
AND TABLE_SCHEMA = 'dbo'
AND COLUMN_NAME IN (SELECT ColumnName FROM @ColumnTable)
SELECT @openJsonWithCommand =
ISNULL(@openJsonWithCommand + CHAR(13) + CHAR(10) + CHAR(9) + ',', CHAR(9) + SPACE(1) + '')
+ '[' + ColumnName + '] ' + ColumnType
+ CASE
WHEN ColumnType IN ('DECIMAL', 'NUMERIC')
THEN ISNULL('(' + CONVERT(VARCHAR(2), NumericPrecision) + ', ' + CONVERT(VARCHAR(2), NumericScale) + ') ', ' ')
WHEN ColumnType IN ('NVARCHAR', 'VARCHAR', 'NCHAR', 'CHAR')
THEN ISNULL('(' + CONVERT(VARCHAR(4), IIF(MaxLengthValue = -1, 'MAX', MaxLengthValue)) + ') ', ' ')
ELSE
' '
END
+ '''$.' + ColumnName + ''''
FROM @ColumnDataTable
SET @openJsonWithCommand = '(' + CHAR(13) + CHAR(10) + @openJsonWithCommand + CHAR(13) + CHAR(10) + ')'
--OSZLOPLISTA INSERTHEZ
SELECT
@columnListForInsert = ISNULL(@columnListForInsert + ', ', '') + '[' + columnDataTable.ColumnName + ']' --TODO andrejkovicse: Függvény a []-ra
FROM
@ColumnDataTable columnDataTable
WHERE
columnDataTable.ColumnName <> 'ID' OR @pInsertAlways = 1
--OSZLOPLISTA UPDATHEZ
SELECT
@columnListForUpdate = ISNULL(@columnListForUpdate + ', ', '') + '[' + @tableNameFromJson + '].' + '[' + columnDataTable.ColumnName + '] = [ImportData].' + '[' + columnDataTable.ColumnName + ']'
FROM
@ColumnDataTable columnDataTable
WHERE
columnDataTable.ColumnName NOT IN ('ID', 'SERIAL', 'CREATOR', 'CREATED', 'C_IMPORTALT')
-- OPENJSON path beállítása (ez megegyezik mindhárom műveletnél)
SET @openJsonPath = N'''strict $.' + @rootElement + '.' + @tableNameFromJson + ''''
--INSERT összeállítása
SET @sqlInsertCommand =
'INSERT INTO '
+ @tableNameFromJson + '(' + @columnListForInsert + ')
SELECT '
+ @columnListForInsert + '
FROM
OPENJSON(@pImportJson, ' + @openJsonPath + ')
WITH '
+ @openJsonWithCommand
IF(@pInsertAlways = 0)
BEGIN
SET @sqlInsertCommand = @sqlInsertCommand + '
WHERE
ID IS NULL '
END
IF(@pInsertAlways = 0)
BEGIN
--UPDATE összeállítása
SET @sqlUpdateCommand =
'UPDATE '
+ @tableNameFromJson + '
SET '
+ @columnListForUpdate + ', '
+ @tableNameFromJson + '.SERIAL = ' + @tableNameFromJson + '.SERIAL + 1 ' + '
FROM
(SELECT *
FROM
OPENJSON(@pImportJson, ' + @openJsonPath + ')
WITH '
+ @openJsonWithCommand + '
WHERE
ID IS NOT NULL) AS ImportData
WHERE ' +
@tableNameFromJson + '.ID = ImportData.ID '
END
IF(@sqlUpdateCommand IS NULL OR @sqlUpdateCommand = '')
BEGIN
SET @sqlCommand = @sqlCommand + @sqlInsertCommand
END
ELSE
BEGIN
SET @sqlCommand = @sqlCommand + @sqlInsertCommand + @sqlUpdateCommand
END
END
IF(@sqlCommand IS NOT NULL OR @sqlCommand <> '')
BEGIN
EXEC sp_executesql @sqlCommand, N'@pImportJson NVARCHAR(MAX)', @pImportJson
END
END
END
GO

View File

@@ -0,0 +1,83 @@
-- =============================================
-- Description: <Json daraboló a dinamikus importhoz>
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_DynamicImportJsonSplit]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_DynamicImportJsonSplit]
END
GO
CREATE PROCEDURE [dbo].[sp_DynamicImportJsonSplit]
@pImportJson NVARCHAR(MAX)
,@pIsTorles BIT
,@pUserId INT
,@pInsertAlways BIT
,@pTableNameList NVARCHAR(2000)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @OrderTable TABLE (
Number INT
,TableName NVARCHAR(50)
)
--Paraméterként kapott táblanevek beszúrása
INSERT INTO
@OrderTable
SELECT *
FROM (
SELECT
ROW_NUMBER() OVER(ORDER BY [value] DESC) Number
,VALUE TableName
FROM
STRING_SPLIT (@pTableNameList, ',')
WHERE
RTRIM(value) <> '') AS subSelect
DECLARE
@number INT = 1
,@tableName NVARCHAR(50)
,@actualJson NVARCHAR(MAX)
WHILE EXISTS(SELECT TableName FROM @OrderTable WHERE Number = @number)
BEGIN
SELECT
@tableName = TableName
FROM
@OrderTable
WHERE
Number = @number
IF EXISTS(SELECT [Key] FROM OPENJSON(@pImportJson, N'strict $.ImportJson') WHERE [Key] = @tableName)
BEGIN
--[dbo].[sp_DynamicImport] meghívása a JSON megfelelő részével
SET @actualJson = CONVERT(NVARCHAR(max), (
SELECT
[value]
FROM
OPENJSON(@pImportJson, N'strict $.ImportJson')
WHERE
[Key] = @tableName)
)
SET @actualJson = '{"ImportJson": {"' + @tableName + '":' + @actualJson + '} }'
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson, @pIsTorles = @pIsTorles, @pUserId = @pUserId, @pInsertAlways = @pInsertAlways
END
SET @number = @number + 1;
END
END
GO

View File

@@ -0,0 +1,367 @@
-- =============================================
-- 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
,@pUserId INT
,@pTanevId INT
,@pIntezmenyId INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@tableNameList nvarchar(2000) = 'T_TANTARGY,T_OSZTALYCSOPORT'
,@actualJson NVARCHAR(MAX) = ''
,@lastChangedDateTime DATETIME = GETDATE()
,@modifierId INT = @pUserId
--Ha Törölnünk is kell akkor azzal kezdü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 = @modifierId
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 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 = @modifierId
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 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 = @modifierId
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 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 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'
)
--Foglalkozások törlése
UPDATE
Foglalkozas
SET
Foglalkozas.TOROLT = 'T'
,Foglalkozas.SERIAL = Foglalkozas.SERIAL + 1
,Foglalkozas.LASTCHANGED = @lastChangedDateTime
,Foglalkozas.MODIFIER = @modifierId
FROM
T_FOGLALKOZAS Foglalkozas
WHERE
Foglalkozas.C_TANEVID = @pTanevId
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
AND Foglalkozas.TOROLT = 'F'
AND Foglalkozas.C_IMPORTALT = 'T'
END
--NOTE: A törlés itt azért false, mert a T_TANTARGY és a T_OSZTALYCSOPORT táblából nem törlünk importnál
EXECUTE [dbo].[sp_DynamicImportJsonSplit] @pImportJson = @pImportJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 0, @pTableNameList = @tableNameList
--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ából nem törlünk importnál
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 1
--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ából nem törlünk importnál
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId ,@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 + ' } }'
--NOTE: A törlés itt azért false, mert a T_FOGLALKOZAS táblából korábban elvégeztük a törlést, mivel az osztálycsoport és a tantárgy törlések miatt, nem találná.
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 0
END
GO