609 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			609 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
-- =============================================
 | 
						|
-- Description:	<Tanulo KIFIR import>
 | 
						|
-- =============================================
 | 
						|
DROP PROCEDURE IF EXISTS [dbo].[uspTanuloKifirImport]
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE [dbo].[uspTanuloKifirImport]
 | 
						|
	 @pIntezmenyId					INT
 | 
						|
	,@pTanevId						INT
 | 
						|
	,@pUserId						INT
 | 
						|
	,@pImportJson					NVARCHAR(MAX)
 | 
						|
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
 | 
						|
	SET NOCOUNT ON;	
 | 
						|
 | 
						|
	DECLARE
 | 
						|
		 @tableNameList			NVARCHAR(2000)	= 'T_FELHASZNALO_OSSZES'
 | 
						|
		,@actualJson			NVARCHAR(MAX)	= ''
 | 
						|
 | 
						|
		,@lastChangedDateTime	DATETIME		= GETDATE()
 | 
						|
	  
 | 
						|
	--NOTE: A törlés azért false, mert a tanuló importálásoknál soha nem törlünk!
 | 
						|
	EXECUTE [dbo].[uspDynamicImportJsonSplit] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @pImportJson, @pIsTorles = 0, @pIsSubTable = 0, @pTableNameList = @tableNameList
 | 
						|
	
 | 
						|
	--NOTE: Tanulo temp tábla incializálása
 | 
						|
	CREATE TABLE #TanuloTempTable (
 | 
						|
		 ID								INT				
 | 
						|
		,C_TANTERVID					INT		
 | 
						|
		,C_ELOZOINTEZMENY				NVARCHAR(255)		
 | 
						|
		,C_ALLAMIGONDOZOTT				CHAR(1)	
 | 
						|
		,C_BEILLESZKEDESINEHEZSEG		CHAR(1)	
 | 
						|
		,C_BEJARO						CHAR(1)	
 | 
						|
		,C_EVISMETLO					CHAR(1)	
 | 
						|
		,C_JOGVISZONYATSZUNETELTETO		CHAR(1)	
 | 
						|
		,C_MAGANTANULO					CHAR(1)	
 | 
						|
		,C_POLGARISZERZODESES			CHAR(1)	
 | 
						|
		,C_SZAKMAIGYAKORLATON			CHAR(1)	
 | 
						|
		,C_SZOCIALISTAMOGATAS			CHAR(1)	
 | 
						|
		,C_TANDIJATFIZETO				CHAR(1)	
 | 
						|
		,C_TANKOTELEZETT				CHAR(1)	
 | 
						|
		,C_TANULOSZERZODESES			CHAR(1)	
 | 
						|
		,C_TERITESIDIJATFIZETO			CHAR(1)	
 | 
						|
		,C_TESTNEVELESTIPUSA			INT		
 | 
						|
		,C_VENDEG						CHAR(1)	
 | 
						|
		,C_BTMPROBLEMAS					CHAR(1)	
 | 
						|
		,C_DIAKSPORTKOROS				CHAR(1)	
 | 
						|
		,C_HALMOZOTTANFOGYATEKOS		CHAR(1)	
 | 
						|
		,C_HATRANYOSHELYZETU			INT		
 | 
						|
		,C_KOLLEGIUMIELLATASOS			CHAR(1)	
 | 
						|
		,C_SAJATOSNEVELESU				CHAR(1)	
 | 
						|
		,C_VESZELYEZTETETT				CHAR(1)	
 | 
						|
		,C_BEILLESZKEDESIPROBLEMAVALKUZ	CHAR(1)	
 | 
						|
		,C_MAGATARTASIPROBLEMAVALKUZD	CHAR(1)	
 | 
						|
		,C_TANULASIPROBLEMADISZGRAFIA	CHAR(1)	
 | 
						|
		,C_TANULASIPROBLEMAVALKUZD		CHAR(1)	
 | 
						|
		,C_TANULASIPROBLEMAVALKUZDDISZK	CHAR(1)	
 | 
						|
		,C_TANULASIPROBLEMAVALKUZDDISZL	CHAR(1)	
 | 
						|
		,C_KOZEPFOKUOKTATASBATIZENHATOD	CHAR(1)	
 | 
						|
		,C_MENEDEKJOGGALRENDELKEZO		CHAR(1)	
 | 
						|
		,C_EGYEBDONTO					CHAR(1)	
 | 
						|
		,C_MEGALLAPODASOS				CHAR(1)	
 | 
						|
		,C_OSZTV						CHAR(1)	
 | 
						|
		,C_SZETVAGAZAT					CHAR(1)	
 | 
						|
		,C_SZKTV						CHAR(1)	
 | 
						|
		,C_TECHNIKUSIEVFOLYAM			CHAR(1)	
 | 
						|
		,C_EGYUTTMUKODESES				CHAR(1)	
 | 
						|
		,C_ISKOLAIKERETEKKOZOTT			CHAR(1)	
 | 
						|
		,C_ISSZAKMAIGYAKORLATHIANY		CHAR(1)	
 | 
						|
		,C_ISKIFIRIMPORTALT				CHAR(1)	
 | 
						|
		,C_FELVETELTANEVEID				INT		
 | 
						|
			
 | 
						|
		,C_ALINTEZMENYID				INT		
 | 
						|
		,C_ALTANEVID					INT
 | 
						|
		,TOROLT							CHAR(1)			
 | 
						|
		,SERIAL							INT				
 | 
						|
		,LASTCHANGED					DATETIME		
 | 
						|
		,CREATED						DATETIME		
 | 
						|
		,MODIFIER						INT				
 | 
						|
		,CREATOR						INT				
 | 
						|
		,ELOZOTANEVIREKORDID			INT				
 | 
						|
		,NNID							INT				
 | 
						|
		,Operation						INT		
 | 
						|
	)	
 | 
						|
	
 | 
						|
	INSERT INTO
 | 
						|
		#TanuloTempTable
 | 
						|
	SELECT
 | 
						|
		 Felhasznalo.ID
 | 
						|
		,TanuloJsonData.C_TANTERVID		
 | 
						|
		,TanuloJsonData.C_ELOZOINTEZMENY						
 | 
						|
		,TanuloJsonData.C_ALLAMIGONDOZOTT				
 | 
						|
		,TanuloJsonData.C_BEILLESZKEDESINEHEZSEG		
 | 
						|
		,TanuloJsonData.C_BEJARO						
 | 
						|
		,TanuloJsonData.C_EVISMETLO						
 | 
						|
		,TanuloJsonData.C_JOGVISZONYATSZUNETELTETO		
 | 
						|
		,TanuloJsonData.C_MAGANTANULO					
 | 
						|
		,TanuloJsonData.C_POLGARISZERZODESES			
 | 
						|
		,TanuloJsonData.C_SZAKMAIGYAKORLATON			
 | 
						|
		,TanuloJsonData.C_SZOCIALISTAMOGATAS			
 | 
						|
		,TanuloJsonData.C_TANDIJATFIZETO				
 | 
						|
		,TanuloJsonData.C_TANKOTELEZETT					
 | 
						|
		,TanuloJsonData.C_TANULOSZERZODESES				
 | 
						|
		,TanuloJsonData.C_TERITESIDIJATFIZETO			
 | 
						|
		,TanuloJsonData.C_TESTNEVELESTIPUSA				
 | 
						|
		,TanuloJsonData.C_VENDEG						
 | 
						|
		,TanuloJsonData.C_BTMPROBLEMAS					
 | 
						|
		,TanuloJsonData.C_DIAKSPORTKOROS				
 | 
						|
		,TanuloJsonData.C_HALMOZOTTANFOGYATEKOS		
 | 
						|
		,TanuloJsonData.C_HATRANYOSHELYZETU				
 | 
						|
		,TanuloJsonData.C_KOLLEGIUMIELLATASOS			
 | 
						|
		,TanuloJsonData.C_SAJATOSNEVELESU				
 | 
						|
		,TanuloJsonData.C_VESZELYEZTETETT				
 | 
						|
		,TanuloJsonData.C_BEILLESZKEDESIPROBLEMAVALKUZ	
 | 
						|
		,TanuloJsonData.C_MAGATARTASIPROBLEMAVALKUZD	
 | 
						|
		,TanuloJsonData.C_TANULASIPROBLEMADISZGRAFIA	
 | 
						|
		,TanuloJsonData.C_TANULASIPROBLEMAVALKUZD		
 | 
						|
		,TanuloJsonData.C_TANULASIPROBLEMAVALKUZDDISZK	
 | 
						|
		,TanuloJsonData.C_TANULASIPROBLEMAVALKUZDDISZL	
 | 
						|
		,TanuloJsonData.C_KOZEPFOKUOKTATASBATIZENHATOD	
 | 
						|
		,TanuloJsonData.C_MENEDEKJOGGALRENDELKEZO		
 | 
						|
		,TanuloJsonData.C_EGYEBDONTO					
 | 
						|
		,TanuloJsonData.C_MEGALLAPODASOS				
 | 
						|
		,TanuloJsonData.C_OSZTV							
 | 
						|
		,TanuloJsonData.C_SZETVAGAZAT					
 | 
						|
		,TanuloJsonData.C_SZKTV							
 | 
						|
		,TanuloJsonData.C_TECHNIKUSIEVFOLYAM			
 | 
						|
		,TanuloJsonData.C_EGYUTTMUKODESES				
 | 
						|
		,TanuloJsonData.C_ISKOLAIKERETEKKOZOTT			
 | 
						|
		,TanuloJsonData.C_ISSZAKMAIGYAKORLATHIANY		
 | 
						|
		,TanuloJsonData.C_ISKIFIRIMPORTALT				
 | 
						|
		,TanuloJsonData.C_FELVETELTANEVEID				
 | 
						|
		
 | 
						|
		,TanuloJsonData.C_ALINTEZMENYID			
 | 
						|
		,TanuloJsonData.C_ALTANEVID				
 | 
						|
		,TanuloJsonData.TOROLT					
 | 
						|
		,TanuloJsonData.SERIAL					
 | 
						|
		,TanuloJsonData.LASTCHANGED			
 | 
						|
		,TanuloJsonData.CREATED				
 | 
						|
		,TanuloJsonData.MODIFIER				
 | 
						|
		,TanuloJsonData.CREATOR				
 | 
						|
		,TanuloJsonData.ELOZOTANEVIREKORDID	
 | 
						|
		,TanuloJsonData.NNID					
 | 
						|
		,TanuloJsonData.Operation					
 | 
						|
	FROM OPENJSON(@pImportJson,  N'lax $.ImportJson.T_TANULO_OSSZES')
 | 
						|
		WITH (
 | 
						|
			 ID								INT				'$.ID'
 | 
						|
			,C_TANTERVID					INT				'$.C_TANTERVID'
 | 
						|
			,C_ELOZOINTEZMENY				NVARCHAR(255)	'$.C_ELOZOINTEZMENY'
 | 
						|
			,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_HATRANYOSHELYZETU			INT				'$.C_HATRANYOSHELYZETU'
 | 
						|
			,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'
 | 
						|
			,Operation						INT				'$.Operation'
 | 
						|
					
 | 
						|
			,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'
 | 
						|
	
 | 
						|
	--NOTE: Cim temp tábla incializálása
 | 
						|
	CREATE TABLE #CimTempTable (
 | 
						|
		 ID						INT				
 | 
						|
		,C_CIMTIPUSA			INT				
 | 
						|
		,C_IRANYITOSZAM			NVARCHAR(20)	
 | 
						|
		,C_VAROS				NVARCHAR(50)	
 | 
						|
		,C_KOZTERULET			NVARCHAR(40)	
 | 
						|
		,C_KOZTERULETJELLEGE	INT				
 | 
						|
		,C_HAZSZAM				NVARCHAR(30)	
 | 
						|
		,C_ORSZAG				INT				
 | 
						|
		,C_ALAPERTELMEZETT		CHAR(1)			
 | 
						|
		,C_EMELET				NVARCHAR(40)	
 | 
						|
		,C_AJTO					NVARCHAR(30)	
 | 
						|
		,C_FELHASZNALOID		INT
 | 
						|
										
 | 
						|
		,C_INTEZMENYID			INT				
 | 
						|
		,C_TANEVID				INT				
 | 
						|
		,TOROLT					CHAR(1)			
 | 
						|
		,SERIAL					INT				
 | 
						|
		,LASTCHANGED			DATETIME		
 | 
						|
		,CREATED				DATETIME		
 | 
						|
		,MODIFIER				INT				
 | 
						|
		,CREATOR				INT				
 | 
						|
		,ELOZOTANEVIREKORDID	INT				
 | 
						|
		,NNID					INT				
 | 
						|
		,Operation				INT		
 | 
						|
	)	
 | 
						|
	
 | 
						|
	INSERT INTO
 | 
						|
		#CimTempTable
 | 
						|
	SELECT
 | 
						|
		 CimJsonData.ID			
 | 
						|
		,CimJsonData.C_CIMTIPUSA			
 | 
						|
		,CimJsonData.C_IRANYITOSZAM			
 | 
						|
		,CimJsonData.C_VAROS				
 | 
						|
		,CimJsonData.C_KOZTERULET			
 | 
						|
		,CimJsonData.C_KOZTERULETJELLEGE	
 | 
						|
		,CimJsonData.C_KOZTERULETJELLEGENEV	
 | 
						|
		,CimJsonData.C_HAZSZAM				
 | 
						|
		,CimJsonData.C_ORSZAG				
 | 
						|
		,CimJsonData.C_ALAPERTELMEZETT		
 | 
						|
		,CimJsonData.C_EMELET				
 | 
						|
		,CimJsonData.C_AJTO					
 | 
						|
		,Felhasznalo.ID
 | 
						|
		
 | 
						|
		,CimJsonData.C_INTEZMENYID			
 | 
						|
		,CimJsonData.C_TANEVID				
 | 
						|
		,CimJsonData.TOROLT					
 | 
						|
		,CimJsonData.SERIAL					
 | 
						|
		,CimJsonData.LASTCHANGED			
 | 
						|
		,CimJsonData.CREATED				
 | 
						|
		,CimJsonData.MODIFIER				
 | 
						|
		,CimJsonData.CREATOR				
 | 
						|
		,CimJsonData.ELOZOTANEVIREKORDID	
 | 
						|
		,CimJsonData.NNID					
 | 
						|
		,CimJsonData.Operation					
 | 
						|
	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_KOZTERULETJELLEGENEV	NVARCHAR(100)	'$.C_KOZTERULETJELLEGENEV'
 | 
						|
			,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'			
 | 
						|
			,Operation				INT				'$.Operation'
 | 
						|
			
 | 
						|
			,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'
 | 
						|
	
 | 
						|
	--NOTE: Email temp tábla incializálása
 | 
						|
	CREATE TABLE #EmailTempTable (
 | 
						|
		 ID						INT				
 | 
						|
		,C_EMAILTIPUSA			INT				
 | 
						|
		,C_EMAILCIM				NVARCHAR(200)	
 | 
						|
		,C_ALAPERTELMEZETT		CHAR(1)			
 | 
						|
		,C_ISPUBLIC				CHAR(1)
 | 
						|
		,C_FELHASZNALOID		INT
 | 
						|
										
 | 
						|
		,C_INTEZMENYID			INT				
 | 
						|
		,C_TANEVID				INT				
 | 
						|
		,TOROLT					CHAR(1)			
 | 
						|
		,SERIAL					INT				
 | 
						|
		,LASTCHANGED			DATETIME		
 | 
						|
		,CREATED				DATETIME		
 | 
						|
		,MODIFIER				INT				
 | 
						|
		,CREATOR				INT				
 | 
						|
		,ELOZOTANEVIREKORDID	INT				
 | 
						|
		,NNID					INT				
 | 
						|
		,Operation				INT		
 | 
						|
	)	
 | 
						|
	
 | 
						|
	INSERT INTO
 | 
						|
		#EmailTempTable
 | 
						|
	SELECT
 | 
						|
		 EmailJsonData.ID			
 | 
						|
		,EmailJsonData.C_EMAILTIPUSA			
 | 
						|
		,EmailJsonData.C_EMAILCIM			
 | 
						|
		,EmailJsonData.C_ALAPERTELMEZETT				
 | 
						|
		,EmailJsonData.C_ISPUBLIC				
 | 
						|
		,Felhasznalo.ID
 | 
						|
		
 | 
						|
		,EmailJsonData.C_INTEZMENYID			
 | 
						|
		,EmailJsonData.C_TANEVID				
 | 
						|
		,EmailJsonData.TOROLT					
 | 
						|
		,EmailJsonData.SERIAL					
 | 
						|
		,EmailJsonData.LASTCHANGED			
 | 
						|
		,EmailJsonData.CREATED				
 | 
						|
		,EmailJsonData.MODIFIER				
 | 
						|
		,EmailJsonData.CREATOR				
 | 
						|
		,EmailJsonData.ELOZOTANEVIREKORDID	
 | 
						|
		,EmailJsonData.NNID					
 | 
						|
		,EmailJsonData.Operation
 | 
						|
	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'			
 | 
						|
			,Operation				INT				'$.Operation'
 | 
						|
			
 | 
						|
			,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
 | 
						|
	
 | 
						|
	--NOTE: Ha van bejövő cím állandó lakcím típusú a json-ben, akkor az ehhez a címhez tartozó felhasználó összes címének C_ALAPERTELMEZETT mezőjét false-ra állítjuk és a bejövő lesz a egyedül true!
 | 
						|
	UPDATE 
 | 
						|
		Cim
 | 
						|
	SET 
 | 
						|
		 Cim.C_ALAPERTELMEZETT					= 'F'
 | 
						|
		,Cim.SERIAL								= Cim.SERIAL + 1
 | 
						|
		,Cim.LASTCHANGED						= @lastChangedDateTime
 | 
						|
		,Cim.MODIFIER							= @pUserId
 | 
						|
	FROM 
 | 
						|
		T_FELHASZNALO_OSSZES Felhasznalo
 | 
						|
	INNER JOIN
 | 
						|
		 #CimTempTable ON
 | 
						|
				#CimTempTable.C_INTEZMENYID		= Felhasznalo.C_INTEZMENYID
 | 
						|
			AND	#CimTempTable.C_TANEVID			= Felhasznalo.C_TANEVID
 | 
						|
			AND #CimTempTable.TOROLT			= 'F'
 | 
						|
			AND #CimTempTable.C_FELHASZNALOID	= Felhasznalo.ID
 | 
						|
	INNER JOIN
 | 
						|
		 T_CIM_OSSZES Cim ON
 | 
						|
				Cim.C_INTEZMENYID				= Felhasznalo.C_INTEZMENYID
 | 
						|
			AND	Cim.C_TANEVID					= Felhasznalo.C_TANEVID
 | 
						|
			AND Cim.TOROLT						= 'F'		
 | 
						|
			AND Cim.C_FELHASZNALOID				= Felhasznalo.ID
 | 
						|
			AND Cim.C_ALAPERTELMEZETT			= 'T'
 | 
						|
	WHERE 
 | 
						|
			Felhasznalo.C_INTEZMENYID			= @pIntezmenyId
 | 
						|
		AND	Felhasznalo.C_TANEVID				= @pTanevId
 | 
						|
		AND Felhasznalo.TOROLT					= 'F'
 | 
						|
	
 | 
						|
	--NOTE: Ha van bejövő email a json-ben, akkor az ehhez a email-hez tartozó felhasználó összes email-jének C_ALAPERTELMEZETT mezőjét false-ra állítjuk és a bejövő lesz a egyedül true!
 | 
						|
	UPDATE 
 | 
						|
		Email
 | 
						|
	SET 
 | 
						|
		 Email.C_ALAPERTELMEZETT				= 'F'
 | 
						|
		,Email.SERIAL							= Email.SERIAL + 1
 | 
						|
		,Email.LASTCHANGED						= @lastChangedDateTime
 | 
						|
		,Email.MODIFIER							= @pUserId
 | 
						|
	FROM 
 | 
						|
		T_FELHASZNALO_OSSZES Felhasznalo
 | 
						|
	INNER JOIN
 | 
						|
		 #EmailTempTable ON
 | 
						|
				#EmailTempTable.C_INTEZMENYID	= Felhasznalo.C_INTEZMENYID
 | 
						|
			AND	#EmailTempTable.C_TANEVID		= Felhasznalo.C_TANEVID
 | 
						|
			AND #EmailTempTable.TOROLT			= 'F'
 | 
						|
			AND #EmailTempTable.C_FELHASZNALOID	= Felhasznalo.ID
 | 
						|
	INNER JOIN
 | 
						|
		 T_EMAIL_OSSZES Email ON
 | 
						|
				Email.C_INTEZMENYID				= Felhasznalo.C_INTEZMENYID
 | 
						|
			AND	Email.C_TANEVID					= Felhasznalo.C_TANEVID
 | 
						|
			AND Email.TOROLT					= 'F'		
 | 
						|
			AND Email.C_FELHASZNALOID			= Felhasznalo.ID
 | 
						|
			AND Email.C_ALAPERTELMEZETT			= 'T'
 | 
						|
	WHERE 
 | 
						|
			Felhasznalo.C_INTEZMENYID			= @pIntezmenyId
 | 
						|
		AND	Felhasznalo.C_TANEVID				= @pTanevId
 | 
						|
		AND Felhasznalo.TOROLT					= 'F'
 | 
						|
 | 
						|
	--Tanulók beszúrása
 | 
						|
	SET @actualJson = ' { "ImportJson":{ "T_TANULO_OSSZES":' + (
 | 
						|
		SELECT
 | 
						|
			 Tanulo.ID
 | 
						|
			,Tanulo.C_TANTERVID			
 | 
						|
			,Tanulo.C_ELOZOINTEZMENY			
 | 
						|
			,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_HATRANYOSHELYZETU
 | 
						|
			,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
 | 
						|
			,Tanulo.Operation
 | 
						|
		FROM
 | 
						|
			#TanuloTempTable AS Tanulo
 | 
						|
		FOR JSON PATH,INCLUDE_NULL_VALUES
 | 
						|
	)
 | 
						|
 | 
						|
	SET @actualJson = @actualJson + ' } }'
 | 
						|
	
 | 
						|
	--NOTE: A törlés azért false, mert a tanuló importálásoknál soha nem törlünk!
 | 
						|
	EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 1
 | 
						|
	DROP TABLE IF EXISTS #TanuloTempTable
 | 
						|
 | 
						|
	--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_KOZTERULETJELLEGENEV
 | 
						|
			,Cim.C_HAZSZAM
 | 
						|
			,Cim.C_ORSZAG
 | 
						|
			,Cim.C_ALAPERTELMEZETT
 | 
						|
			,Cim.C_EMELET
 | 
						|
			,Cim.C_AJTO
 | 
						|
			,Cim.C_FELHASZNALOID
 | 
						|
 | 
						|
			,Cim.C_INTEZMENYID
 | 
						|
			,Cim.C_TANEVID
 | 
						|
			,Cim.TOROLT
 | 
						|
			,Cim.SERIAL
 | 
						|
			,Cim.LASTCHANGED
 | 
						|
			,Cim.CREATED
 | 
						|
			,Cim.MODIFIER
 | 
						|
			,Cim.CREATOR
 | 
						|
			,Cim.ELOZOTANEVIREKORDID
 | 
						|
			,Cim.NNID
 | 
						|
			,Cim.Operation
 | 
						|
		FROM 
 | 
						|
			#CimTempTable AS Cim
 | 
						|
		FOR JSON PATH,INCLUDE_NULL_VALUES
 | 
						|
	)
 | 
						|
 | 
						|
	SET @actualJson = @actualJson + ' } }'
 | 
						|
	
 | 
						|
	--NOTE: A törlés azért false, mert a tanuló importálásoknál soha nem törlünk!
 | 
						|
	EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 0
 | 
						|
	DROP TABLE IF EXISTS #CimTempTable
 | 
						|
 | 
						|
	--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.C_FELHASZNALOID
 | 
						|
			
 | 
						|
			,Email.C_INTEZMENYID
 | 
						|
			,Email.C_TANEVID
 | 
						|
			,Email.TOROLT
 | 
						|
			,Email.SERIAL
 | 
						|
			,Email.LASTCHANGED
 | 
						|
			,Email.CREATED
 | 
						|
			,Email.MODIFIER
 | 
						|
			,Email.CREATOR
 | 
						|
			,Email.ELOZOTANEVIREKORDID
 | 
						|
			,Email.NNID
 | 
						|
			,Email.Operation
 | 
						|
		FROM 
 | 
						|
			#EmailTempTable AS Email
 | 
						|
		FOR JSON PATH,INCLUDE_NULL_VALUES
 | 
						|
	)
 | 
						|
 | 
						|
	SET @actualJson = @actualJson + ' } }'
 | 
						|
	
 | 
						|
	--NOTE: A törlés azért false, mert a tanuló importálásoknál soha nem törlünk!
 | 
						|
	EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 0
 | 
						|
	DROP TABLE IF EXISTS #EmailTempTable
 | 
						|
 | 
						|
END
 | 
						|
 | 
						|
 | 
						|
GO
 | 
						|
 |