-- ============================================= -- 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