kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190523190922_AL_1030R_2/uspTanuloKifirImport.sql
2024-03-13 00:33:46 +01:00

339 lines
14 KiB
Transact-SQL

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