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,277 @@
-- =============================================
-- Description: <Dinamikus import>
-- =============================================
DROP PROCEDURE IF EXISTS [dbo].[sp_DynamicImport]
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)
CREATE TABLE #entityIds
(
ID INT
)
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 + ')
OUTPUT INSERTED.ID
INTO #entityIds
SELECT '
+ @columnListForInsert + '
FROM
OPENJSON(@pImportJson, ' + @openJsonPath + ')
WITH '
+ @openJsonWithCommand
--TODO szikoraz: Nem a @pInsertAlways elnevezés, mert ez csak az altábláknál működik és csak akkor ha mind új elem. Update-nl elszáll. JAVÍTANI!!!
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 ' + '
OUTPUT DELETED.ID
INTO #entityIds
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
IF @tableNameFromJson IN ('T_TEREM_OSSZES','T_ESZKOZ_OSSZES') BEGIN
DECLARE @entityId int
,@entityTanevId int
,@intezmenyId int
,@kovTanevId int
DECLARE @sql nvarchar(400)='SELECT TOP 1 @entityTanevId=C_TANEVID FROM '+@tableNameFromJson+' WHERE ID = '+(SELECT TOP 1 CAST(ID AS varchar(9)) FROM #entityIds)
EXEC sp_executesql @sql,N'@entityTanevId int output',@entityTanevId=@entityTanevId output
SELECT @intezmenyId=C_INTEZMENYID FROM T_TANEV WHERE ID = @entityTanevId
SELECT @kovTanevId=ID FROM T_TANEV_OSSZES WHERE C_INTEZMENYID=@intezmenyId AND C_KOVETKEZO='T' AND TOROLT='F'
IF @entityTanevId <> @kovTanevId AND @kovTanevId IS NOT NULL
BEGIN
DECLARE entityCur CURSOR FOR
SELECT ID FROM #entityIds
OPEN entityCUr
FETCH NEXT FROM entityCUr
INTO @entityId
WHILE @@FETCH_STATUS=0
BEGIN
IF @tableNameFromJson='T_TEREM_OSSZES' BEGIN
EXEC sp_FollowUpTerem
@intezmenyId = @intezmenyId
,@aktTanevId = @entityTanevId
,@kovetkezoTanevId = @kovTanevId
,@teremId = @entityId
END
ELSE IF @tableNameFromJson = 'T_ESZKOZ_OSSZES' BEGIN
EXEC sp_FollowUpEszkoz
@intezmenyId = @intezmenyId
,@aktTanevId = @entityTanevId
,@kovetkezoTanevId = @kovTanevId
,@eszkozId = @entityId
END
FETCH NEXT FROM entityCur INTO @entityId
END
CLOSE entityCur
DEALLOCATE entityCur
END
END
END
END
END
GO

View File

@@ -0,0 +1,339 @@
-- =============================================
-- Description: <>
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS [dbo].[uspTanuloKifirImport]
GO
CREATE PROCEDURE [dbo].[uspTanuloKifirImport]
@pImportJson NVARCHAR(MAX)
,@pIsTorles BIT
,@pUserId INT
,@pTanevId INT
,@pIntezmenyId INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@tableNameList NVARCHAR(2000) = 'T_FELHASZNALO_OSSZES'
,@actualJson NVARCHAR(MAX) = ''
,@lastChangedDateTime DATETIME = GETDATE()
,@modifierId INT = @pUserId
--Ha törölnünk vagy módosítanunk is kell akkor azzal kezdünk!
IF (@pIsTorles = 1)
BEGIN
--TODO szikoraz:
PRINT 'need to implement!!!'
END
EXECUTE [dbo].[sp_DynamicImportJsonSplit] @pImportJson = @pImportJson , @pIsTorles = @pIsTorles, @pUserId = @pUserId, @pInsertAlways = 0, @pTableNameList = @tableNameList
--Tanulók beszúrása
SET @actualJson = ' { "ImportJson":{ "T_TANULO_OSSZES":' +
(SELECT
Tanulo.FelhasznaloId ID
,Tanulo. C_TANTERVID
,Tanulo. C_ALLAMIGONDOZOTT
,Tanulo. C_BEILLESZKEDESINEHEZSEG
,Tanulo. C_BEJARO
,Tanulo. C_EVISMETLO
,Tanulo. C_JOGVISZONYATSZUNETELTETO
,Tanulo. C_MAGANTANULO
,Tanulo. C_POLGARISZERZODESES
,Tanulo. C_SZAKMAIGYAKORLATON
,Tanulo. C_SZOCIALISTAMOGATAS
,Tanulo. C_TANDIJATFIZETO
,Tanulo. C_TANKOTELEZETT
,Tanulo. C_TANULOSZERZODESES
,Tanulo. C_TERITESIDIJATFIZETO
,Tanulo. C_TESTNEVELESTIPUSA
,Tanulo. C_VENDEG
,Tanulo. C_BTMPROBLEMAS
,Tanulo. C_DIAKSPORTKOROS
,Tanulo. C_HALMOZOTTANFOGYATEKOS
,Tanulo. C_KOLLEGIUMIELLATASOS
,Tanulo. C_SAJATOSNEVELESU
,Tanulo. C_VESZELYEZTETETT
,Tanulo. C_BEILLESZKEDESIPROBLEMAVALKUZ
,Tanulo. C_MAGATARTASIPROBLEMAVALKUZD
,Tanulo. C_TANULASIPROBLEMADISZGRAFIA
,Tanulo. C_TANULASIPROBLEMAVALKUZD
,Tanulo. C_TANULASIPROBLEMAVALKUZDDISZK
,Tanulo. C_TANULASIPROBLEMAVALKUZDDISZL
,Tanulo. C_KOZEPFOKUOKTATASBATIZENHATOD
,Tanulo. C_MENEDEKJOGGALRENDELKEZO
,Tanulo. C_EGYEBDONTO
,Tanulo. C_MEGALLAPODASOS
,Tanulo. C_OSZTV
,Tanulo. C_SZETVAGAZAT
,Tanulo. C_SZKTV
,Tanulo. C_TECHNIKUSIEVFOLYAM
,Tanulo. C_EGYUTTMUKODESES
,Tanulo. C_ISKOLAIKERETEKKOZOTT
,Tanulo. C_ISSZAKMAIGYAKORLATHIANY
,Tanulo. C_ISKIFIRIMPORTALT
,Tanulo. C_FELVETELTANEVEID
,Tanulo. C_ALINTEZMENYID
,Tanulo. C_ALTANEVID
,Tanulo. TOROLT
,Tanulo. SERIAL
,Tanulo. LASTCHANGED
,Tanulo. CREATED
,Tanulo. MODIFIER
,Tanulo. CREATOR
,Tanulo. ELOZOTANEVIREKORDID
,Tanulo. NNID
FROM
(SELECT
TanuloJsonData.*
,Felhasznalo.ID FelhasznaloId
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_TANULO_OSSZES')
WITH (
ID INT '$.ID'
,C_TANTERVID INT '$.C_TANTERVID'
,C_ALLAMIGONDOZOTT CHAR(1) '$.C_ALLAMIGONDOZOTT'
,C_BEILLESZKEDESINEHEZSEG CHAR(1) '$.C_BEILLESZKEDESINEHEZSEG'
,C_BEJARO CHAR(1) '$.C_BEJARO'
,C_EVISMETLO CHAR(1) '$.C_EVISMETLO'
,C_JOGVISZONYATSZUNETELTETO CHAR(1) '$.C_JOGVISZONYATSZUNETELTETO'
,C_MAGANTANULO CHAR(1) '$.C_MAGANTANULO'
,C_POLGARISZERZODESES CHAR(1) '$.C_POLGARISZERZODESES'
,C_SZAKMAIGYAKORLATON CHAR(1) '$.C_SZAKMAIGYAKORLATON'
,C_SZOCIALISTAMOGATAS CHAR(1) '$.C_SZOCIALISTAMOGATAS'
,C_TANDIJATFIZETO CHAR(1) '$.C_TANDIJATFIZETO'
,C_TANKOTELEZETT CHAR(1) '$.C_TANKOTELEZETT'
,C_TANULOSZERZODESES CHAR(1) '$.C_TANULOSZERZODESES'
,C_TERITESIDIJATFIZETO CHAR(1) '$.C_TERITESIDIJATFIZETO'
,C_TESTNEVELESTIPUSA INT '$.C_TESTNEVELESTIPUSA'
,C_VENDEG CHAR(1) '$.C_VENDEG'
,C_BTMPROBLEMAS CHAR(1) '$.C_BTMPROBLEMAS'
,C_DIAKSPORTKOROS CHAR(1) '$.C_DIAKSPORTKOROS'
,C_HALMOZOTTANFOGYATEKOS CHAR(1) '$.C_HALMOZOTTANFOGYATEKOS'
,C_KOLLEGIUMIELLATASOS CHAR(1) '$.C_KOLLEGIUMIELLATASOS'
,C_SAJATOSNEVELESU CHAR(1) '$.C_SAJATOSNEVELESU'
,C_VESZELYEZTETETT CHAR(1) '$.C_VESZELYEZTETETT'
,C_BEILLESZKEDESIPROBLEMAVALKUZ CHAR(1) '$.C_BEILLESZKEDESIPROBLEMAVALKUZ'
,C_MAGATARTASIPROBLEMAVALKUZD CHAR(1) '$.C_MAGATARTASIPROBLEMAVALKUZD'
,C_TANULASIPROBLEMADISZGRAFIA CHAR(1) '$.C_TANULASIPROBLEMADISZGRAFIA'
,C_TANULASIPROBLEMAVALKUZD CHAR(1) '$.C_TANULASIPROBLEMAVALKUZD'
,C_TANULASIPROBLEMAVALKUZDDISZK CHAR(1) '$.C_TANULASIPROBLEMAVALKUZDDISZK'
,C_TANULASIPROBLEMAVALKUZDDISZL CHAR(1) '$.C_TANULASIPROBLEMAVALKUZDDISZL'
,C_KOZEPFOKUOKTATASBATIZENHATOD CHAR(1) '$.C_KOZEPFOKUOKTATASBATIZENHATOD'
,C_MENEDEKJOGGALRENDELKEZO CHAR(1) '$.C_MENEDEKJOGGALRENDELKEZO'
,C_EGYEBDONTO CHAR(1) '$.C_EGYEBDONTO'
,C_MEGALLAPODASOS CHAR(1) '$.C_MEGALLAPODASOS'
,C_OSZTV CHAR(1) '$.C_OSZTV'
,C_SZETVAGAZAT CHAR(1) '$.C_SZETVAGAZAT'
,C_SZKTV CHAR(1) '$.C_SZKTV'
,C_TECHNIKUSIEVFOLYAM CHAR(1) '$.C_TECHNIKUSIEVFOLYAM'
,C_EGYUTTMUKODESES CHAR(1) '$.C_EGYUTTMUKODESES'
,C_ISKOLAIKERETEKKOZOTT CHAR(1) '$.C_ISKOLAIKERETEKKOZOTT'
,C_ISSZAKMAIGYAKORLATHIANY CHAR(1) '$.C_ISSZAKMAIGYAKORLATHIANY'
,C_ISKIFIRIMPORTALT CHAR(1) '$.C_ISKIFIRIMPORTALT'
,C_FELVETELTANEVEID INT '$.C_FELVETELTANEVEID'
,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'
,Vezeteknev NVARCHAR(255) '$.Vezeteknev'
,Keresztnev NVARCHAR(255) '$.Keresztnev'
,SzuletesiHely NVARCHAR(50) '$.SzuletesiHely'
,SzuletesiIdo DATETIME '$.SzuletesiIdo'
,OktatasiAzonosito NVARCHAR(20) '$.OktatasiAzonosito'
) TanuloJsonData
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_VEZETEKNEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(TanuloJsonData.Vezeteknev)
AND LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_UTONEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(TanuloJsonData.Keresztnev)
AND LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_SZULETESIHELY),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(TanuloJsonData.SzuletesiHely)
AND Felhasznalo.C_SZULETESIDATUM = TanuloJsonData.SzuletesiIdo
AND Felhasznalo.C_OKTATASIAZONOSITO = TanuloJsonData.OktatasiAzonosito
AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId
AND Felhasznalo.C_TANEVID = @pTanevId
AND Felhasznalo.TOROLT = 'F'
AND TanuloJsonData.ID IS NULL
) AS Tanulo
FOR JSON PATH,INCLUDE_NULL_VALUES)
SET @actualJson = @actualJson + ' } }'
--NOTE: A törlés itt azért false, mert a T_TANULO_OSSZES view-ból korábban elvégeztük a törlést.
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 1
--Címek beszúrása
SET @actualJson = ' { "ImportJson":{ "T_CIM_OSSZES":' +
(SELECT
Cim. ID
,Cim. C_CIMTIPUSA
,Cim. C_IRANYITOSZAM
,Cim. C_VAROS
,Cim. C_KOZTERULET
,Cim. C_KOZTERULETJELLEGE
,Cim. C_HAZSZAM
,Cim. C_ORSZAG
,Cim. C_ALAPERTELMEZETT
,Cim. C_EMELET
,Cim. C_AJTO
,Cim.FelhasznaloId C_FELHASZNALOID
,Cim. C_INTEZMENYID
,Cim. C_TANEVID
,Cim. TOROLT
,Cim. SERIAL
,Cim. LASTCHANGED
,Cim. CREATED
,Cim. MODIFIER
,Cim. CREATOR
,Cim. ELOZOTANEVIREKORDID
,Cim. NNID
FROM
(SELECT
CimJsonData.*
,Felhasznalo.ID FelhasznaloId
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_CIM_OSSZES')
WITH (
ID INT '$.ID'
,C_CIMTIPUSA INT '$.C_CIMTIPUSA'
,C_IRANYITOSZAM NVARCHAR(20) '$.C_IRANYITOSZAM'
,C_VAROS NVARCHAR(50) '$.C_VAROS'
,C_KOZTERULET NVARCHAR(40) '$.C_KOZTERULET'
,C_KOZTERULETJELLEGE INT '$.C_KOZTERULETJELLEGE'
,C_HAZSZAM NVARCHAR(30) '$.C_HAZSZAM'
,C_ORSZAG INT '$.C_ORSZAG'
,C_ALAPERTELMEZETT CHAR(1) '$.C_ALAPERTELMEZETT'
,C_EMELET NVARCHAR(40) '$.C_EMELET'
,C_AJTO NVARCHAR(30) '$.C_AJTO'
,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'
,Vezeteknev NVARCHAR(255) '$.Vezeteknev'
,Keresztnev NVARCHAR(255) '$.Keresztnev'
,SzuletesiHely NVARCHAR(50) '$.SzuletesiHely'
,SzuletesiIdo DATETIME '$.SzuletesiIdo'
,OktatasiAzonosito NVARCHAR(20) '$.OktatasiAzonosito'
) CimJsonData
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_VEZETEKNEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(CimJsonData.Vezeteknev)
AND LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_UTONEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(CimJsonData.Keresztnev)
AND LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_SZULETESIHELY),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(CimJsonData.SzuletesiHely)
AND Felhasznalo.C_SZULETESIDATUM = CimJsonData.SzuletesiIdo
AND Felhasznalo.C_OKTATASIAZONOSITO = CimJsonData.OktatasiAzonosito
AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId
AND Felhasznalo.C_TANEVID = @pTanevId
AND Felhasznalo.TOROLT = 'F'
) AS Cim
FOR JSON PATH,INCLUDE_NULL_VALUES)
SET @actualJson = @actualJson + ' } }'
--NOTE: A törlés itt azért false, mert a T_CIM_OSSZES view-ból korábban elvégeztük a törlést.
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 0
--Emailek beszúrása
SET @actualJson = ' { "ImportJson":{ "T_EMAIL_OSSZES":' +
(SELECT
Email. ID
,Email. C_EMAILTIPUSA
,Email. C_EMAILCIM
,Email. C_ALAPERTELMEZETT
,Email. C_ISPUBLIC
,Email.FelhasznaloId C_FELHASZNALOID
,Email. C_INTEZMENYID
,Email. C_TANEVID
,Email. TOROLT
,Email. SERIAL
,Email. LASTCHANGED
,Email. CREATED
,Email. MODIFIER
,Email. CREATOR
,Email. ELOZOTANEVIREKORDID
,Email. NNID
FROM
(SELECT
EmailJsonData.*
,Felhasznalo.ID FelhasznaloId
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_EMAIL_OSSZES')
WITH (
ID INT '$.ID'
,C_EMAILTIPUSA INT '$.C_EMAILTIPUSA'
,C_EMAILCIM NVARCHAR(200) '$.C_EMAILCIM'
,C_ALAPERTELMEZETT CHAR(1) '$.C_ALAPERTELMEZETT'
,C_ISPUBLIC CHAR(1) '$.C_ISPUBLIC'
,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'
,Vezeteknev NVARCHAR(255) '$.Vezeteknev'
,Keresztnev NVARCHAR(255) '$.Keresztnev'
,SzuletesiHely NVARCHAR(50) '$.SzuletesiHely'
,SzuletesiIdo DATETIME '$.SzuletesiIdo'
,OktatasiAzonosito NVARCHAR(20) '$.OktatasiAzonosito'
) EmailJsonData
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_VEZETEKNEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(EmailJsonData.Vezeteknev)
AND LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_UTONEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(EmailJsonData.Keresztnev)
AND LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_SZULETESIHELY),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(EmailJsonData.SzuletesiHely)
AND Felhasznalo.C_SZULETESIDATUM = EmailJsonData.SzuletesiIdo
AND Felhasznalo.C_OKTATASIAZONOSITO = EmailJsonData.OktatasiAzonosito
AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId
AND Felhasznalo.C_TANEVID = @pTanevId
AND Felhasznalo.TOROLT = 'F'
) AS Email
FOR JSON PATH,INCLUDE_NULL_VALUES)
SET @actualJson = @actualJson + ' } }'
--NOTE: A törlés itt azért false, mert a T_EMAIL_OSSZES view-ból korábban elvégeztük a törlést.
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 0
END
GO