﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('[dbo].[sp_ImportFelhasznaloBelepes]') IS NOT NULL
BEGIN
	DROP PROCEDURE [dbo].[sp_ImportFelhasznaloBelepes]
END
GO

-- =============================================
-- Description:	<Importáljuk a felhasználó belépéseket>
-- =============================================
CREATE PROCEDURE [dbo].[sp_ImportFelhasznaloBelepes]
	 @pIntezmenyId						INT
	,@pTanevId							INT
	,@pModifierId						INT
	,@pFelhasznaloBelepesImportXml		XML

AS
BEGIN

	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	BEGIN TRY
		SET XACT_ABORT ON
 
		DECLARE @TempFelhasznaloBelepes TABLE (
			 C_KOTELEZOVALTOZTATNI		CHAR(1)			NULL
			,C_MEGHIUSULTBELEPESEK		INT				NULL
			,C_UTOLSOBELEPES			DATETIME		NULL
			,C_JELSZO					NVARCHAR(64)	NULL
			,C_JELSZOVALTOZTATASIDEJE	DATETIME		NULL
			,C_SO						NVARCHAR(64)	NULL
			,C_BEJELENTKEZESINEV		NVARCHAR(255)	NOT NULL
			,C_NEPTUNNAPLOJELSZO		NVARCHAR(64)	NULL
			,C_GUID						NVARCHAR(36)	NOT NULL
			,C_FELHASZNALOID			INT				NOT NULL
			,C_GONDVISELOID				INT				NULL
			,C_INTEZMENYID				INT				NOT NULL
			,C_TANEVID					INT				NOT NULL
			,TOROLT						CHAR(1)			NOT NULL
			,SERIAL						INT				NOT NULL
			,LASTCHANGED				DATETIME		NOT NULL
			,CREATED					DATETIME		NOT NULL
			,MODIFIER					INT				NULL
			,CREATOR					INT				NULL
			,NNID						INT				NULL
			,ELOZOTANEVIREKORDID		INT				NULL
		)

		INSERT INTO 
			@TempFelhasznaloBelepes
		SELECT 
			 'T'																	C_KOTELEZOVALTOZTATNI
			,0																		C_MEGHIUSULTBELEPESEK
			,NULL																	C_UTOLSOBELEPES
			,sor.value('(Jelszo)[1]', 'nvarchar(64)')								C_JELSZO
			,NULL																	C_JELSZOVALTOZTATASIDEJE
			,sor.value('(Salt)[1]', 'nvarchar(64)')									C_SO
			,sor.value('(Felhasznalonev)[1]', 'nvarchar(255)')						C_BEJELENTKEZESINEV
			,NULL																	C_NEPTUNNAPLOJELSZO
			,NEWID()																C_GUID
			,sor.value('number((FelhasznaloId)[1])', 'int')							C_FELHASZNALOID
			,sor.value('number((GondviseloId)[1][not(@xsi:nil = "true")])', 'int')	C_GONDVISELOID
			,@pIntezmenyId															C_INTEZMENYID
			,@pTanevId																C_TANEVID
			,'F'																	TOROLT
			,0																		SERIAL
			,GETDATE()																LASTCHANGED
			,GETDATE()																CREATED
			,@pModifierId															MODIFIER
			,@pModifierId															CREATOR
			,NULL																	NNID
			,NULL																	ELOZOTANEVIREKORDID

  		FROM @pFelhasznaloBelepesImportXml.nodes('/FelhasznaloBelepesImport/FelhasznaloBelepesList/FelhasznaloBelepes') AS sorok(sor)  

		BEGIN TRANSACTION
		
		UPDATE 
			T_FELHASZNALOBELEPES_OSSZES
		SET
			 T_FELHASZNALOBELEPES_OSSZES.TOROLT = 'T'
  			,T_FELHASZNALOBELEPES_OSSZES.SERIAL = T_FELHASZNALOBELEPES_OSSZES.SERIAL + 1
  			,T_FELHASZNALOBELEPES_OSSZES.LASTCHANGED = GETDATE()
  			,T_FELHASZNALOBELEPES_OSSZES.MODIFIER = @pModifierId
		FROM 
			T_FELHASZNALOBELEPES_OSSZES
		INNER JOIN 
			@TempFelhasznaloBelepes tempTable ON 
					tempTable.C_FELHASZNALOID = T_FELHASZNALOBELEPES_OSSZES.C_FELHASZNALOID 
				AND ((T_FELHASZNALOBELEPES_OSSZES.C_GONDVISELOID IS NOT NULL AND tempTable.C_GONDVISELOID IS NOT NULL AND T_FELHASZNALOBELEPES_OSSZES.C_GONDVISELOID = tempTable.C_GONDVISELOID) 
					OR (T_FELHASZNALOBELEPES_OSSZES.C_GONDVISELOID IS NULL AND tempTable.C_GONDVISELOID IS NULL))
		WHERE
				T_FELHASZNALOBELEPES_OSSZES.C_INTEZMENYID = @pIntezmenyId 
			AND T_FELHASZNALOBELEPES_OSSZES.C_TANEVID = @pTanevId
			AND T_FELHASZNALOBELEPES_OSSZES.TOROLT = 'F'

		INSERT INTO 
			T_FELHASZNALOBELEPES
		SELECT
			 C_KOTELEZOVALTOZTATNI		C_KOTELEZOVALTOZTATNI
			,C_MEGHIUSULTBELEPESEK		C_MEGHIUSULTBELEPESEK
			,C_UTOLSOBELEPES			C_UTOLSOBELEPES
			,C_JELSZO					C_JELSZO
			,C_JELSZOVALTOZTATASIDEJE	C_JELSZOVALTOZTATASIDEJE
			,C_SO						C_SO
			,C_BEJELENTKEZESINEV		C_BEJELENTKEZESINEV
			,C_NEPTUNNAPLOJELSZO		C_NEPTUNNAPLOJELSZO
			,C_GUID						C_GUID
			,'F'						C_ELFOGADOTTGDPRNYILATKOZAT
			, NULL						C_GDPRELFOGADASDATUMA
			,C_FELHASZNALOID			C_FELHASZNALOID
			,C_GONDVISELOID				C_GONDVISELOID
			,C_INTEZMENYID				C_INTEZMENYID
			,C_TANEVID					C_TANEVID
			,TOROLT						TOROLT
			,SERIAL						SERIAL
			,LASTCHANGED				LASTCHANGED
			,CREATED					CREATED
			,MODIFIER					MODIFIER
			,CREATOR					CREATOR
			,NNID						NNID
			,ELOZOTANEVIREKORDID		ELOZOTANEVIREKORDID

		FROM 
			@TempFelhasznaloBelepes

		COMMIT TRANSACTION
	END TRY

	BEGIN CATCH
		IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0 
			ROLLBACK TRANSACTION;
		THROW
	END CATCH

END


GO

