This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,5 @@
IF EXISTS (SELECT 1 FROM sys.service_message_types WHERE name = 'AuditMessage') BEGIN
ALTER MESSAGE TYPE [AuditMessage]
VALIDATION = NONE;
END
GO

View file

@ -0,0 +1,96 @@
DROP PROCEDURE IF EXISTS [auditlog].[usp_send]
GO
CREATE PROCEDURE [auditlog].[usp_send]
@fromService SYSNAME,
@toService SYSNAME,
@onContract SYSNAME,
@messageType SYSNAME,
@messageBody NVARCHAR(MAX)
WITH EXECUTE AS 'Kreta_tech_user'
AS
BEGIN
SET NOCOUNT ON;
DECLARE @dialogHandle UNIQUEIDENTIFIER;
DECLARE @sendCount BIGINT;
DECLARE @counter INT;
DECLARE @error INT;
SET @counter = 1;
BEGIN TRANSACTION;
-- message validation check, preventing poison message at the target service validation
-- target service validates WELL_FORMED_XML types, so it is best to prevent it at here
IF EXISTS (SELECT 1 FROM sys.[service_message_types] WHERE [name] = @messageType)
AND ((TRY_CONVERT(xml, @messageBody) IS NOT NULL OR ISJSON(@messageBody) = 1))
BEGIN
IF ISJSON(@messageBody) = 0 BEGIN
SET @messageBody = CAST(TRY_CONVERT(xml, @messageBody) AS nvarchar(max))
END
END
ELSE BEGIN
INSERT INTO [auditlog].[AuditServiceFailedItems] ([conversation_handle], [message_body])
VALUES ('00000000-0000-0000-0000-000000000000', @messageBody)
COMMIT TRANSACTION;
RAISERROR('XML or JSON validation failure before sending. Check [auditlog].[AuditServiceFailedItems] for failed message.', 16,1) WITH LOG;
END
-- Will need a loop to retry in case the dialog is
-- in a state that does not allow transmission
WHILE (1=1) BEGIN
-- Claim a dialog from the dialog pool.
-- A new one will be created if none are available.
EXEC [auditlog].[usp_get_dialog] @fromService, @toService, @onContract, @dialogHandle OUTPUT, @sendCount OUTPUT;
-- Attempt to SEND on the dialog
IF (@messageBody IS NOT NULL) BEGIN
-- If the @messageBody is not null it must be sent explicitly
SEND ON CONVERSATION @dialogHandle MESSAGE TYPE @messageType (@messageBody);
END
ELSE BEGIN
-- Messages with no body must *not* specify the body,
-- cannot send a NULL value argument
SEND ON CONVERSATION @dialogHandle MESSAGE TYPE @messageType;
END
SET @error = @@ERROR;
IF @error = 0 BEGIN
-- Successful send, increment count and exit the loop
SET @sendCount = @sendCount + 1;
BREAK;
END
SET @counter = @counter + 1;
IF @counter > 10 BEGIN
-- We failed 10 times in a row, something must be broken
RAISERROR('Failed to SEND on a conversation for more than 10 times. Error %i.', 16, 1, @error) WITH LOG;
BREAK;
END
-- Delete the associated dialog from the table and try again
EXEC [auditlog].[usp_delete_dialog] @dialogHandle;
SELECT @dialogHandle = NULL;
END
-- "Criterion" for dialog pool removal is send count > 1000.
-- Modify to suit application.
-- When deleting also inform the target to end the dialog.
IF @sendCount > 1000 BEGIN
EXEC [auditlog].[usp_delete_dialog] @dialogHandle ;
SEND ON CONVERSATION @dialogHandle MESSAGE TYPE [EndOfStream];
END
ELSE BEGIN
-- Free the dialog.
EXEC [auditlog].[usp_free_dialog] @dialogHandle, @sendCount;
END
COMMIT TRANSACTION;
END
GO

View file

@ -0,0 +1,102 @@
IF OBJECT_ID('dev.sp_Global_GenerateAsyncAuditTrigger') IS NOT NULL BEGIN
DROP PROCEDURE dev.sp_Global_GenerateAsyncAuditTrigger
END
GO
CREATE PROCEDURE dev.sp_Global_GenerateAsyncAuditTrigger
@tableName nvarchar(50)
,@disabled bit = 0
AS
BEGIN
DECLARE
@columnList nvarchar(max)
,@sql nvarchar(max)
,@isAlIntezmenyId bit = 0
SELECT @columnList = ISNULL(@columnList + ', ', '') + COLUMN_NAME + N' AS ''col.' + COLUMN_NAME + ''''
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @tableName
AND TABLE_SCHEMA = 'dbo'
AND DATA_TYPE NOT IN ('varbinary', 'binary')
AND COLUMN_NAME NOT IN ('SERIAL', 'LASTCHANGED', 'CREATED', 'ID', 'C_INTEZMENYID', 'C_ALINTEZMENYID', 'C_TANEVID', 'C_ALTANEVID', 'NNID', 'CREATED')
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @tableName AND TABLE_SCHEMA = 'dbo' AND COLUMN_NAME = 'C_ALINTEZMENYID') BEGIN
SET @isAlIntezmenyId = 1
END
SET @sql = '
DROP TRIGGER IF EXISTS tr_AsyncAudit' + UPPER(SUBSTRING(@tableName, 3, 100))
EXEC sys.sp_executesql @sql
SET @sql = '
CREATE TRIGGER tr_AsyncAudit' + UPPER(SUBSTRING(@tableName, 3, 100)) + '
ON ' + @tableName + '
WITH EXECUTE AS ''Kreta_tech_user''
FOR INSERT, UPDATE, DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @messageBody nvarchar(max)
DECLARE @TableId int
DECLARE @alterationTime datetime = GETDATE()
--get relevant information from inserted/deleted and convert to xml message
SET @messageBody = (
SELECT ''' + @tableName + ''' AS ''name'', GETDATE() AS ''alterationTime'',
JSON_QUERY (
(SELECT
ID AS ''ID''
,C_' + IIF(@isAlIntezmenyId = 0, '', 'AL') + 'INTEZMENYID AS ''C_INTEZMENYID''
,' + IIF(@tableName = 'T_TANEV', 'ID', IIF(@isAlIntezmenyId = 0, 'C_TANEVID', 'C_ALTANEVID')) + ' AS ''C_TANEVID''
,CREATOR AS ''CREATOR''
,MODIFIER AS ''MODIFIER''
,' + @columnList + '
FROM inserted
FOR JSON PATH, ROOT(''audit''), INCLUDE_NULL_VALUES), ''$.audit''
) AS ''inserted'',
JSON_QUERY (
(SELECT
ID AS ''ID''
,C_' + IIF(@isAlIntezmenyId = 0, '', 'AL') + 'INTEZMENYID AS ''C_INTEZMENYID''
,' + IIF(@tableName = 'T_TANEV', 'ID', IIF(@isAlIntezmenyId = 0, 'C_TANEVID', 'C_ALTANEVID')) + ' AS ''C_TANEVID''
,CREATOR AS ''CREATOR''
,MODIFIER AS ''MODIFIER''
,' + @columnList + '
FROM deleted
FOR JSON PATH, ROOT(''audit''), INCLUDE_NULL_VALUES), ''$.audit''
) AS ''deleted''
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER, INCLUDE_NULL_VALUES
)
IF (@messageBody IS NOT NULL) BEGIN
BEGIN TRY
EXEC [auditlog].[usp_send]
@fromService = ''AuditService'',
@toService = ''AuditService'',
@onContract = ''AuditContract'',
@messageType = ''AuditMessage'',
@messageBody = @messageBody
INSERT INTO auditlog.XmlAudit (MessageBody, InsertedAt)
VALUES (@messageBody, ISNULL(@alterationTime, GETDATE()))
END TRY
BEGIN CATCH
INSERT INTO auditlog.XmlAudit (MessageBody, InsertedAt)
VALUES (@messageBody, ISNULL(@alterationTime, GETDATE()))
END CATCH
END
END
'
EXEC sys.sp_executesql @sql
--select @sql
IF @disabled = 1 BEGIN
SET @sql = 'DISABLE TRIGGER tr_AsyncAudit' + UPPER(SUBSTRING(@tableName, 3, 100)) + ' ON ' + @tableName
EXEC sys.sp_executesql @sql
END
END
GO

View file

@ -0,0 +1,229 @@
DROP PROCEDURE IF EXISTS auditLog.usp_AuditProcessing
GO
CREATE PROCEDURE auditLog.usp_AuditProcessing
AS
BEGIN
DECLARE @messageType varchar(100)
,@dialog uniqueidentifier
,@messageBody nvarchar(max)
,@tableName nvarchar(80)
,@conversationHandle UNIQUEIDENTIFIER
,@messageTypeName sysname;
CREATE TABLE #linkTable (
id int
,objectId int
,intezmenyId int
,tanevId int
)
WHILE (1 = 1) BEGIN
BEGIN TRANSACTION;
WAITFOR
(RECEIVE TOP(1)
@conversationHandle = conversation_handle,
@messageBody = message_body,
@messageTypeName = message_type_name
FROM auditlog.AuditQueue
), TIMEOUT 1000;
IF (@@ROWCOUNT = 0)
BEGIN
ROLLBACK TRANSACTION;
BREAK;
END
BEGIN TRY
DECLARE
@action char(1)
,@alterationTime datetime
-- Handle the Message
IF @messageTypeName = N'AuditMessage' BEGIN
IF ISJSON(@messageBody) = 1 BEGIN
TRUNCATE TABLE #linkTable
SELECT
@tableName = name
,@alterationTime = alterationTime
FROM OPENJSON (@messageBody) WITH (
name nvarchar(50) '$.name'
,alterationTime datetime '$.alterationTime'
)
SET @action =
CASE
WHEN NOT EXISTS (SELECT 1 FROM OPENJSON (@messageBody, '$.deleted')) THEN 'I'
WHEN NOT EXISTS (SELECT 1 FROM OPENJSON (@messageBody, '$.inserted')) THEN 'D'
ELSE 'U'
END
IF @action = 'I' BEGIN -- INSERT
INSERT INTO dbo.T_ENTITYHISTORY (C_ALTERATIONDATE, C_ENTITYID, C_ENTITYNAME, C_REASON, C_FELHASZNALOID, C_INTEZMENYID, C_TANEVID)
OUTPUT INSERTED.ID, INSERTED.C_ENTITYID, INSERTED.C_INTEZMENYID, INSERTED.C_TANEVID INTO #LinkTable
SELECT
@alterationTime AS C_ALTERATIONDATE
,JSON_Value (c.value, '$.ID') AS C_ENTITYID
,@tableName AS C_ENTITYNAME
,'New' AS C_REASON
,JSON_Value (c.value, '$.CREATOR') as C_FELHASZNALOID
,JSON_Value (c.value, '$.C_INTEZMENYID') as C_INTEZMENYID
,JSON_Value (c.value, '$.C_TANEVID') as C_TANEVID
FROM OPENJSON (@messageBody, '$.inserted') as c
INSERT INTO dbo.T_ENTITYATTRIBUTEHISTORY (C_CURRENTVALUE, C_ORIGINALVALUE, C_PROPERTYNAME, C_ENTITYHISTORYID)
SELECT val, NULL, col, lk.id
FROM #linkTable lk
INNER JOIN (
SELECT
JSON_Value (c.value, '$.ID') as objectId
,JSON_Value (c.value, '$.C_INTEZMENYID') as intezmenyId
,JSON_Value (c.value, '$.C_TANEVID') as tanevId
,p.[key] AS col
,p.[Value] AS val
FROM OPENJSON (@messageBody, '$.inserted') as c
CROSS APPLY OPENJSON (c.value, '$.col') as p
) i ON i.objectId = lk.objectId AND i.intezmenyId = lk.intezmenyId AND i.tanevId = lk.tanevId
END
IF @action = 'D' BEGIN -- DELETED
INSERT INTO dbo.T_ENTITYHISTORY (C_ALTERATIONDATE, C_ENTITYID, C_ENTITYNAME, C_REASON, C_FELHASZNALOID, C_INTEZMENYID, C_TANEVID)
OUTPUT INSERTED.ID, INSERTED.C_ENTITYID, INSERTED.C_INTEZMENYID, INSERTED.C_TANEVID INTO #LinkTable
SELECT
@alterationTime AS C_ALTERATIONDATE
,JSON_Value (c.value, '$.ID') AS C_ENTITYID
,@tableName AS C_ENTITYNAME
,'Removed' AS C_REASON
,JSON_Value (c.value, '$.CREATOR') as C_FELHASZNALOID
,JSON_Value (c.value, '$.C_INTEZMENYID') as C_INTEZMENYID
,JSON_Value (c.value, '$.C_TANEVID') as C_TANEVID
FROM OPENJSON (@messageBody, '$.deleted') as c
INSERT INTO dbo.T_ENTITYATTRIBUTEHISTORY (C_CURRENTVALUE, C_ORIGINALVALUE, C_PROPERTYNAME, C_ENTITYHISTORYID)
SELECT NULL, val, col, lk.id
FROM #linkTable lk
INNER JOIN (
SELECT
JSON_Value (c.value, '$.ID') as objectId
,JSON_Value (c.value, '$.C_INTEZMENYID') as intezmenyId
,JSON_Value (c.value, '$.C_TANEVID') as tanevId
,p.[key] AS col
,p.[Value] AS val
FROM OPENJSON (@messageBody, '$.deleted') as c
CROSS APPLY OPENJSON (c.value, '$.col') as p
) d ON d.objectId = lk.objectId AND d.intezmenyId = lk.intezmenyId AND d.tanevId = lk.tanevId
END
IF @action = 'U' BEGIN -- UPDATE
INSERT INTO dbo.T_ENTITYHISTORY (C_ALTERATIONDATE, C_ENTITYID, C_ENTITYNAME, C_REASON, C_FELHASZNALOID, C_INTEZMENYID, C_TANEVID)
OUTPUT INSERTED.ID, INSERTED.C_ENTITYID, INSERTED.C_INTEZMENYID, INSERTED.C_TANEVID INTO #LinkTable
SELECT
@alterationTime AS C_ALTERATIONDATE
,JSON_Value (c.value, '$.ID') AS C_ENTITYID
,@tableName AS C_ENTITYNAME
,'Modified' AS C_REASON
,JSON_Value (c.value, '$.MODIFIER') as C_FELHASZNALOID
,JSON_Value (c.value, '$.C_INTEZMENYID') as C_INTEZMENYID
,JSON_Value (c.value, '$.C_TANEVID') as C_TANEVID
FROM OPENJSON (@messageBody, '$.inserted') as c
INSERT INTO dbo.T_ENTITYATTRIBUTEHISTORY (C_CURRENTVALUE, C_ORIGINALVALUE, C_PROPERTYNAME, C_ENTITYHISTORYID)
SELECT NULLIF(i.val, N'#NULL#'), NULLIF(d.val, N'#NULL#'), d.col, lk.id
FROM #LinkTable lk
INNER JOIN (
SELECT
JSON_Value (c.value, '$.ID') as objectId
,JSON_Value (c.value, '$.C_INTEZMENYID') as intezmenyId
,JSON_Value (c.value, '$.C_TANEVID') as tanevId
,JSON_Value (c.value, '$.CREATOR') as creator
,JSON_Value (c.value, '$.MODIFIER') as modifier
,p.[key] AS col
,ISNULL(p.[Value], N'#NULL#') AS val
FROM OPENJSON (@messageBody, '$.deleted') as c
CROSS APPLY OPENJSON (c.value, '$.col') as p
) d ON d.objectId = lk.objectId AND d.intezmenyId = lk.intezmenyId AND d.tanevId = lk.tanevId
INNER JOIN (
SELECT
JSON_Value (c.value, '$.ID') as objectId
,JSON_Value (c.value, '$.C_INTEZMENYID') as intezmenyId
,JSON_Value (c.value, '$.C_TANEVID') as tanevId
,JSON_Value (c.value, '$.CREATOR') as creator
,JSON_Value (c.value, '$.MODIFIER') as modifier
,p.[key] AS col
,ISNULL(p.[Value], N'#NULL#') AS val
FROM OPENJSON (@messageBody, '$.inserted') as c
CROSS APPLY OPENJSON (c.value, '$.col') as p
) i ON d.objectId = i.objectId AND d.intezmenyId = i.intezmenyId AND d.tanevId = i.tanevId AND d.col = i.col AND i.val <> d.val
END
END
END
ELSE IF @messageTypeName = 'EndOfStream' BEGIN
-- initiator is signaling end of message stream: end the dialog
END CONVERSATION @conversationHandle;
END
-- If end dialog message, end the dialog
ELSE IF @messageTypeName = N'http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog' BEGIN
END CONVERSATION @conversationHandle;
END
ELSE IF @messageTypeName = N'DEFAULT' BEGIN
END CONVERSATION @conversationHandle;
END
-- If error message, log and end conversation
ELSE IF @messageTypeName = N'http://schemas.microsoft.com/SQL/ServiceBroker/Error' BEGIN
DECLARE @error INT;
DECLARE @description NVARCHAR(4000);
-- Pull the error code and description from the doc
WITH XMLNAMESPACES ('http://schemas.microsoft.com/SQL/ServiceBroker/Error' AS ssb)
SELECT
@error = CAST(@messageBody AS xml).value('(//ssb:Error/ssb:Code)[1]', 'INT'),
@description = CAST(@messageBody AS xml).value('(//ssb:Error/ssb:Description)[1]', 'NVARCHAR(4000)');
--INSERT INTO [dbo].[ErrorLog] (ConversationHandle, message_body, message_type_name)
--SELECT @conversationHandle, CAST(@messageBody AS nvarchar(max)), @messageTypeName;
RAISERROR(N'Received error Code:%i Description:"%s"', 16, 1, @error, @description) WITH LOG;
-- Now that we handled the error logging cleanup
END CONVERSATION @conversationHandle;
END
-- If everything succeeded correctly commit the transaction
COMMIT TRANSACTION;
END TRY
-- If we have any error get caught we want to throw the error
-- and then rollback the transaction to put the message on the queue
BEGIN CATCH
IF (ERROR_NUMBER() = 1205)
BEGIN
ROLLBACK TRANSACTION;
EXEC [auditlog].[uspLogError];
CONTINUE;
END
ELSE
BEGIN
ROLLBACK TRANSACTION --ReceiveSavePoint;
EXEC [auditlog].[uspLogError];
INSERT INTO [auditlog].[AuditServiceFailedItems]
([conversation_handle], [message_body])
VALUES (@conversationHandle, @messageBody);
THROW;
END
END CATCH
END
END
GO

View file

@ -0,0 +1,54 @@
IF OBJECT_ID('dev.sp_Global_GenerateAsyncAuditTriggerAll') IS NOT NULL BEGIN
DROP PROCEDURE dev.sp_Global_GenerateAsyncAuditTriggerAll
END
GO
CREATE PROCEDURE dev.sp_Global_GenerateAsyncAuditTriggerAll
@disabled bit = 0
AS
BEGIN
DECLARE tableCursor CURSOR LOCAL FOR
SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('CREATOR', 'MODIFIER')
AND TABLE_NAME NOT IN (
'T_ENTITYHISTORY',
'T_ENTITYATTRIBUTEHISTORY',
'T_LOG',
'T_GLOBALLOCK',
'T_OLDALLATOGATOTTSAG',
'T_FELHASZNALOBELEPESTORTENET',
'T_EVFOLYAMTIPUS_OKTATASINEVELE',
'T_TELEPULES',
'T_TANTARGYNEVHEZKATEGORIA',
'T_SERVERSTATISTICS',
'T_MOBILDBINFO',
'T_LOGLEVELTYPE',
'T_GLOBALISBEALLITASOK',
'T_INTEZMENY',
'T_FENNTARTO',
'T_LOGEVENTTYPE'
)
AND TABLE_NAME IN (
SELECT t.name
FROM sys.tables t
INNER JOIN sys.schemas s ON s.schema_id = t.schema_id
WHERE s.name ='dbo'
)
DECLARE @tableName nvarchar(50)
OPEN tableCursor
FETCH NEXT FROM tableCursor INTO @tableName
WHILE @@FETCH_STATUS = 0 BEGIN
EXEC dev.sp_Global_GenerateAsyncAuditTrigger @tableName, @disabled
FETCH NEXT FROM tableCursor INTO @tableName
END
CLOSE tableCursor
DEALLOCATE tableCursor
END
GO

View file

@ -0,0 +1,16 @@
EXEC dev.sp_Global_GenerateAsyncAuditTriggerAll
GO
ALTER QUEUE auditLog.[AuditQueue]
WITH ACTIVATION
(
STATUS = ON,
PROCEDURE_NAME = auditLog.usp_AuditProcessing,
MAX_QUEUE_READERS = 10,
EXECUTE AS 'Kreta_tech_user'
);
GO
ALTER QUEUE auditlog.AuditQueue WITH STATUS = ON;
GO

View file

@ -0,0 +1,121 @@
--------------------
CREATE PROCEDURE [dbo].[sp_AddNewSchemaViews]
@IntezmenyId int,
@IntezmenyAzonosito nvarchar(30),
@TanevId int
AS
BEGIN
DECLARE @IntezmenyTemplate nvarchar(50) = 'KR_'+@IntezmenyAzonosito
DECLARE @Schema nvarchar(50) = @IntezmenyTemplate+'_Schema'
DECLARE @SchemaUser nvarchar(50) = @IntezmenyTemplate + '_user'
DECLARE @AktivTanev nvarchar(500)
DECLARE @Sql nvarchar(max)
/*============================================================================*/
/* View : T_JELSZOMODOSITASLINK */
/*============================================================================*/
/* Package: Kreta */
IF OBJECT_ID('['+@Schema+'].T_JELSZOMODOSITASLINK', 'V') IS NOT NULL BEGIN
SET @Sql = N'EXEC sp_refreshview ''['+@Schema+'].T_JELSZOMODOSITASLINK'''
EXEC sp_executesql @Sql
IF OBJECT_ID('['+@Schema+'].T_JELSZOMODOSITASLINK_OSSZES', 'V') IS NOT NULL BEGIN
SET @Sql = N'EXEC sp_refreshview ''['+@Schema+'].T_JELSZOMODOSITASLINK_OSSZES'''
EXEC sp_executesql @Sql
END
END
ELSE BEGIN
/* Ha nem létezik a view, akkor létrehozzuk */
IF (SELECT COUNT(1)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'T_JELSZOMODOSITASLINK' AND TABLE_SCHEMA = 'dbo' AND COLUMN_NAME = 'C_TANEVID'
) > 0
BEGIN
SET @AktivTanev = N' C_TANEVID = '+ CAST(@TanevId as nvarchar) +' AND '
END
ELSE
BEGIN
SET @AktivTanev = N''
END
IF (SELECT COUNT(1)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'T_JELSZOMODOSITASLINK' AND TABLE_SCHEMA = 'dbo' AND COLUMN_NAME = 'C_INTEZMENYID'
) > 0
BEGIN
/* T_JELSZOMODOSITASLINK */
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_JELSZOMODOSITASLINK
AS
SELECT *
FROM dbo.T_JELSZOMODOSITASLINK
WHERE '+@AktivTanev+' (TOROLT = ''F'') AND C_INTEZMENYID = '+CAST(@IntezmenyId as nvarchar)
EXECUTE sp_executesql @Sql
/* T_JELSZOMODOSITASLINK_OSSZES */
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_JELSZOMODOSITASLINK_OSSZES
AS
SELECT *
FROM dbo.T_JELSZOMODOSITASLINK
WHERE C_INTEZMENYID = '+CAST(@IntezmenyId as nvarchar)
EXECUTE sp_executesql @Sql
END
ELSE
BEGIN
/* T_JELSZOMODOSITASLINK */
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_JELSZOMODOSITASLINK
AS
SELECT *
FROM dbo.T_JELSZOMODOSITASLINK
WHERE '+@AktivTanev+' (TOROLT = ''F'')'
EXECUTE sp_executesql @Sql
/* T_JELSZOMODOSITASLINK_OSSZES */
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_JELSZOMODOSITASLINK_OSSZES
AS
SELECT *
FROM dbo.T_JELSZOMODOSITASLINK'
EXECUTE sp_executesql @Sql
END
END
END
GO
--------------------
DECLARE intezmenytanevekCursor CURSOR LOCAL FOR
SELECT T_INTEZMENY.ID, T_INTEZMENY.C_AZONOSITO, T_TANEV.ID
FROM T_INTEZMENY
INNER JOIN T_TANEV ON T_TANEV.C_INTEZMENYID = T_INTEZMENY.ID
WHERE T_TANEV.C_AKTIV = 'T' AND T_INTEZMENY.TOROLT = 'F'
ORDER BY T_INTEZMENY.ID
DECLARE @intezmenyId int, @intezmenyAzonosito nvarchar(30), @tanevId int
OPEN intezmenytanevekCursor
FETCH NEXT FROM intezmenytanevekCursor INTO @intezmenyId, @intezmenyAzonosito, @tanevId
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'INTÉZMÉNY ID: ' + CAST(@intezmenyId AS NVARCHAR(10)) + ', INTÉZMÉNY AZONOSÍTÓ: ' + CAST(@intezmenyAzonosito AS NVARCHAR(30)) + ', TANÉV ID: ' + CAST(@tanevId AS NVARCHAR(10))
EXEC sp_AddNewSchemaViews @IntezmenyId = @intezmenyId, @IntezmenyAzonosito = @intezmenyAzonosito, @TanevId = @tanevId
FETCH NEXT FROM intezmenytanevekCursor INTO @intezmenyId, @intezmenyAzonosito, @tanevId
END
CLOSE intezmenytanevekCursor
DEALLOCATE intezmenytanevekCursor
GO
--------------------
DROP PROCEDURE [dbo].[sp_AddNewSchemaViews]
GO

View file

@ -0,0 +1,28 @@
DROP FUNCTION IF EXISTS dbo.fnGetDokumentumGondviselok;
GO
CREATE FUNCTION fnGetDokumentumGondviselok (@osztalyCsoportId INT, @tanevId INT, @isCsokkentettGondviselo NVARCHAR(1), @isTorvenyesGondviselo NVARCHAR(1))
RETURNS @Result TABLE (
GondviseloId INT NOT NULL
,GondviseloNev NVARCHAR(MAX) NOT NULL
,TanuloId INT NOT NULL
,RokonsagifokId INT
) AS
BEGIN
INSERT INTO @Result (GondviseloId, GondviseloNev, TanuloId, RokonsagifokId)
SELECT DISTINCT
Gondviselo.ID GondviseloId
,Gondviselo.C_NEV GondviseloNev
,Gondviselo.C_TANULOID TanuloId
,Gondviselo.C_ROKONSAGFOKA RokonsagifokId
FROM T_GONDVISELO_OSSZES Gondviselo
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyCsoportId, 'T') OsztalyTanuloi ON OsztalyTanuloi.TanuloId = Gondviselo.C_TANULOID
WHERE
Gondviselo.TOROLT = 'F'
AND Gondviselo.C_ISTORVENYESKEPVISELO = @isTorvenyesGondviselo
AND (Gondviselo.C_ISCSOKKENTETTGONDVISELO IS NULL OR Gondviselo.C_ISCSOKKENTETTGONDVISELO = @isCsokkentettGondviselo)
AND Gondviselo.C_TANEVID = @tanevId
RETURN
END
GO

View file

@ -0,0 +1,173 @@
IF OBJECT_ID('[dbo].[sp_GetTanuloszerzodes]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetTanuloszerzodes]
END
GO
CREATE PROCEDURE [dbo].[sp_GetTanuloszerzodes]
@pIntezmenyId INT,
@pTanevId INT,
@pTanuloIdXML XML
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Tanulok TABLE(Id int PRIMARY KEY)
INSERT INTO @Tanulok(Id)
SELECT Data FROM fnConvertXmlIntListToTable(@pTanuloIdXML, 'a', 'b')
/*TANULO*/
SELECT DISTINCT
t.ID tanuloId
,f.C_NYILVANTARTASISZAM AS torzslapSzam
,f.C_OKTATASIAZONOSITO AS oktAzon
,f.C_TAJSZAM AS tajSzam
,f.C_ANYJANEVE AS anyjaNeve
,f.C_SZULETESIHELY AS szulHely
,dbo.fnGetDokumentumDatumFormatum(f.C_SZULETESIDATUM) AS szulIdo
,tt.C_NEV AS kepzes
,f.C_NYOMTATASINEV AS tanuloNeve
,f.C_SZULETESINEV AS szuletesiNev
,d.C_NAME AS allampolgarsaga
,ISNULL(Cim.C_OSSZETETTCIM, '') AS tanuloCimText
,ISNULL(Email.C_EMAILCIM, '') AS tanuloEmailCim
,ISNULL(Telefon.C_TELEFONSZAM, '') AS tanuloTelefonszam
,IIF(t.C_SZAKKEPESITESSZAMA IS NOT NULL, 'van, '
+ 'OKJ száma: ............., megnevezése: ', 'nincs') AS okj
FROM T_TANULO_OSSZES t
INNER JOIN @Tanulok Tanulok ON t.ID = Tanulok.Id
LEFT JOIN T_CIM_OSSZES Cim ON
Cim.C_FELHASZNALOID = t.ID
AND Cim.C_INTEZMENYID = @pIntezmenyId
AND Cim.C_TANEVID = @pTanevId
AND Cim.TOROLT = 'F'
AND Cim.C_ALAPERTELMEZETT = 'T'
AND Cim.C_GONDVISELOID IS NULL
LEFT JOIN
T_EMAIL_OSSZES Email ON
Email.C_FELHASZNALOID = t.ID
AND Email.C_INTEZMENYID = @pIntezmenyId
AND Email.C_TANEVID = @pTanevId
AND Email.TOROLT = 'F'
AND Email.C_ALAPERTELMEZETT = 'T'
LEFT JOIN
T_TELEFON_OSSZES Telefon ON
Telefon.C_FELHASZNALOID = t.ID
AND Telefon.C_INTEZMENYID = @pIntezmenyId
AND Telefon.C_TANEVID = @pTanevId
AND Telefon.TOROLT = 'F'
AND Telefon.C_ALAPERTELMEZETT= 'T'
INNER JOIN T_TANTERV_OSSZES tt ON
tt.ID = t.C_TANTERVID
AND tt.TOROLT ='F'
INNER JOIN T_FELHASZNALO_OSSZES f ON
f.ID = t.ID
AND f.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON
d.id=f.C_ALLAMPOLGARSAGA
AND d.C_TANEVID = f.C_TANEVID
AND d.C_INTEZMENYID = f.C_INTEZMENYID
/*GONDVISELO*/
SELECT
Tanulok.Id tanuloId
,Gondviselo.C_NEV GondviseloNeve
,ISNULL(Email.C_EMAILCIM, '') gondviseloEmailCim
,ISNULL(Telefon.C_TELEFONSZAM, '') gondviseloTelefonszam
,ISNULL(Cim.C_OSSZETETTCIM, '') gondviseloCimText
FROM @Tanulok Tanulok
INNER JOIN T_GONDVISELO_OSSZES Gondviselo ON
Gondviselo.C_TANULOID = Tanulok.Id
AND Gondviselo.C_INTEZMENYID = @pIntezmenyId
AND Gondviselo.C_TANEVID = @pTanevId
AND Gondviselo.TOROLT = 'F'
AND Gondviselo.C_ISTORVENYESKEPVISELO = 'T'
AND Gondviselo.C_ISCSOKKENTETTGONDVISELO = 'F'
INNER JOIN T_FELHASZNALOBELEPES_OSSZES Felhasznalo ON
Felhasznalo.C_GONDVISELOID = Gondviselo.ID
AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId
AND Felhasznalo.C_TANEVID = @pTanevId
AND Felhasznalo.TOROLT = 'F'
LEFT JOIN T_EMAIL_OSSZES Email ON
Email.C_GONDVISELOID = Gondviselo.ID
AND Email.C_INTEZMENYID = @pIntezmenyId
AND Email.C_TANEVID = @pTanevId
AND Email.TOROLT = 'F'
LEFT JOIN T_TELEFON_OSSZES Telefon ON
Telefon.C_GONDVISELOID = Gondviselo.ID
AND Telefon.C_INTEZMENYID = @pIntezmenyId
AND Telefon.C_TANEVID = @pTanevId
AND Telefon.TOROLT = 'F'
LEFT JOIN T_CIM_OSSZES Cim ON
Cim.C_GONDVISELOID = Gondviselo.ID
AND Cim.C_INTEZMENYID = @pIntezmenyId
AND Cim.C_TANEVID = @pTanevId
AND Cim.TOROLT = 'F'
/*INTEZMENYADATOK*/
SELECT DISTINCT
INTEZMENY.C_INTEZMENYID intezmenyId
,INTEZMENY.C_NEV Nev
,INTEZMENY.C_IGAZGATONEVE IgazgatoNev
,dbo.fnGetDokumentumIntezmenyCime (@pTanevId) IntezmenyCim
,INTEZMENY.C_TELEFONSZAM IntezmenyTelefonszam
,INTEZMENY.C_EMAILCIM IntezmenyEmail
,INTEZMENY.C_OMKOD OktAzon
,TANEV.C_NEV
INTO #IntemenyAdatok
FROM T_TANEV_OSSZES TANEV
INNER JOIN T_INTEZMENYADATOK_OSSZES INTEZMENY ON TANEV.ID = INTEZMENY.C_TANEVID
WHERE
TANEV.ID = @pTanevId
AND INTEZMENY.C_INTEZMENYID = @pIntezmenyId
/*TAGINTEZMENYADATOK*/
SELECT DISTINCT
TAGINTEZMENY.C_INTEZMENYID intezmenyId
,TAGINTEZMENY.C_NEV AS TagintezmenyNev
,TAGINTEZMENY.C_IRANYITOSZAM + ' ' + TAGINTEZMENY.C_VAROS + ', '
+ TAGINTEZMENY.C_KOZTERULETNEV + ' ' + TAGINTEZMENY.C_HAZSZAM
+ ISNULL(', ' + TAGINTEZMENY.C_EMELET + '. EMELET', '')
+ ISNULL(', ' + TAGINTEZMENY.C_AJTO + '. AJTÓ', '') AS TagintezmenyCim
INTO #TagintezmenyAdatok
FROM T_TANEV_OSSZES TANEV
INNER JOIN T_INTEZMENY_OSSZES INTEZEMNY ON TANEV.C_INTEZMENYID = INTEZEMNY.ID
INNER JOIN T_MUKODESIHELY_OSSZES TAGINTEZMENY ON TAGINTEZMENY.C_INTEZMENYID = INTEZEMNY.ID
WHERE
TANEV.ID = @pTanevId
AND TAGINTEZMENY.C_INTEZMENYID = @pIntezmenyId
/*==============INTÉZMÉNY/TAGINTÉZMÉNY==================*/
SELECT DISTINCT
*
FROM #IntemenyAdatok intezmeny
INNER JOIN #TagintezmenyAdatok tagintezmeny ON intezmeny.intezmenyId = tagintezmeny.intezmenyId
/*BESOROLAS*/
SELECT DISTINCT
TANCSOP.C_TANULOID tanuloId
,OKTATASINEVELESIFELADAT.C_NAME FeladatEllatasiHely
,MUNKAREND.C_NAME NappaliRend
,EVFOLYAM.C_NAME_1 Evfolyam
FROM T_TANULOCSOPORT_OSSZES TANCSOP
INNER JOIN @Tanulok Tanulok ON TANCSOP.C_TANULOID = Tanulok.Id
INNER JOIN T_OSZTALY_OSSZES OSZTALY ON OSZTALY.ID = TANCSOP.C_OSZTALYCSOPORTID
INNER JOIN T_OSZTALYCSOPORT_OSSZES OSZTALYCSOP ON OSZTALYCSOP.ID = OSZTALY.ID
INNER JOIN T_FELADATELLATASIHELY_OSSZES ON T_FELADATELLATASIHELY_OSSZES.ID = OSZTALYCSOP.C_FELADATELLATASIHELYID AND T_FELADATELLATASIHELY_OSSZES.C_TANEVID = OSZTALYCSOP.C_TANEVID AND T_FELADATELLATASIHELY_OSSZES.C_INTEZMENYID = @pIntezmenyId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES MUNKAREND ON OSZTALY.C_KEPZESIFORMA = MUNKAREND.ID AND MUNKAREND.C_TANEVID = OSZTALYCSOP.C_TANEVID AND MUNKAREND.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE_OSSZES AS OKTATASINEVELESIFELADAT ON T_FELADATELLATASIHELY_OSSZES.C_OKTATASINEVELESIFELADATTIPUS = OKTATASINEVELESIFELADAT.ID AND OKTATASINEVELESIFELADAT.C_TANEVID = T_FELADATELLATASIHELY_OSSZES.C_TANEVID AND OKTATASINEVELESIFELADAT.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE_OSSZES EVFOLYAM ON EVFOLYAM.ID = OSZTALYCSOP.C_EVFOLYAMTIPUSA
WHERE
OSZTALYCSOP.C_TANEVID = @pTanevId
AND OSZTALYCSOP.C_INTEZMENYID = @pIntezmenyId
AND TANCSOP.TOROLT = 'F'
AND TANCSOP.C_TANEVID = @pTanevId
END

View file

@ -0,0 +1,146 @@
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

View file

@ -0,0 +1,287 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_ImportTanulokGondviseloi]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_ImportTanulokGondviseloi]
END
GO
-- =============================================
-- Description: <Gondviselõk adatait importálja>
-- =============================================
CREATE PROCEDURE [dbo].[sp_ImportTanulokGondviseloi]
@pTanevId INT
,@pUserId INT
,@pIntezmenyId INT
,@GondviselokXML xml
AS
BEGIN
BEGIN TRY
SET NOCOUNT ON
SET XACT_ABORT ON
CREATE TABLE #GondviselokTemp (
Id int IDENTITY(1,1),
TanuloId int,
TanuloNeve nvarchar(250),
OktatasiAzonosito nvarchar(50),
TanuloOsztalya nvarchar(50),
GondviseloId int,
GondviseloNeve nvarchar(250),
GondviseloRokonsagifoka int,
GondviseloTelefonszama nvarchar(50),
GondviseloEmailcime nvarchar(50)
);
CREATE TABLE #Gondviselok (
Id int IDENTITY(1,1),
TanuloId int,
TanuloNeve nvarchar(250),
OktatasiAzonosito nvarchar(50),
TanuloOsztalya nvarchar(50),
GondviseloId int,
GondviseloNeve nvarchar(250),
GondviseloRokonsagifoka int,
GondviseloTelefonszama nvarchar(50),
GondviseloEmailcime nvarchar(50)
);
INSERT INTO #GondviselokTemp
SELECT
sor.value('(TanuloId)[1]', 'int') AS TanuloId,
sor.value('(TanuloNeve)[1]', 'nvarchar(200)') AS TanuloNeve,
sor.value('(OktatasiAzonosito)[1]', 'nvarchar(11)') AS OktatasiAzonosito,
sor.value('(TanuloOsztalya)[1]', 'nvarchar(50)') AS TanuloOsztalya,
sor.value('(GondviseloId)[1]', 'int') AS GondviseloId,
sor.value('(GondviseloNeve)[1]', 'nvarchar(200)') AS GondviseloNeve,
sor.value('(GondviseloRokonsagifoka)[1]', 'int') AS GondviseloRokonsagifoka,
sor.value('(GondviseloTelefonszama)[1]', 'nvarchar(100)') AS GondviseloTelefonszama,
sor.value('(GondviseloEmailcime)[1]', 'nvarchar(200)') AS GondviseloEmailcime
FROM @GondviselokXML.nodes('/GondviseloImport/GondviseloList/Gondviselo') AS sorok(sor)
DECLARE @linkTable TABLE (
insertedId int,
tempId nvarchar(32)
);
BEGIN TRANSACTION
UPDATE g SET
C_AKTIV ='T'
,C_GONDVISELESKEZDETE = NULL
,C_GONDVISELESVEGE = NULL
,C_GYERMEKETEGYEDULNEVELO = 'F'
,C_NEV = gondviselok.GondviseloNeve
,C_NYUGDIJAS = 'F'
,C_ROKONSAGFOKA = gondviselok.GondviseloRokonsagifoka
,C_ISEMAILERTESITES = 'F'
,C_TANULOID = gondviselok.TanuloId
,C_INTEZMENYID = @pIntezmenyId
,C_TANEVID = @pTanevId
,TOROLT = 'F'
,SERIAL = SERIAL+1
,MODIFIER = NULL
,CREATOR = @pUserId
,LASTCHANGED = GETDATE()
FROM T_GONDVISELO g
INNER JOIN #GondviselokTemp AS gondviselok ON gondviselok.GondviseloId = g.Id
INSERT INTO #Gondviselok (
TanuloId
,TanuloNeve
,OktatasiAzonosito
,TanuloOsztalya
,GondviseloId
,GondviseloNeve
,GondviseloRokonsagifoka
,GondviseloTelefonszama
,GondviseloEmailcime )
SELECT* FROM (SELECT DISTINCT
TanuloId
,TanuloNeve
,OktatasiAzonosito
,TanuloOsztalya
,GondviseloId
,GondviseloNeve
,GondviseloRokonsagifoka
,GondviseloTelefonszama
,GondviseloEmailcime
FROM #GondviselokTemp) AS g;
MERGE T_GONDVISELO_OSSZES trg
USING (SELECT * FROM #Gondviselok WHERE GondviseloId = 0) AS src
ON 1 = 2
WHEN NOT MATCHED THEN
INSERT (C_AKTIV
,C_GONDVISELESKEZDETE
,C_GONDVISELESVEGE
,C_GYERMEKETEGYEDULNEVELO
,C_NEV
,C_NYUGDIJAS
,C_ROKONSAGFOKA
,C_ISEMAILERTESITES
,C_ISCSOKKENTETTGONDVISELO
,C_TANULOID
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,MODIFIER
,CREATOR
,CREATED
,LASTCHANGED)
VALUES
(
'T'
,NULL
,NULL
,'F'
,src.GondviseloNeve
,'F'
,src.GondviseloRokonsagifoka
,'F'
,'F'
,src.TanuloId
,@pIntezmenyId
,@pTanevId
,'F'
,0
,@pUserid
,@pUserid
,GETDATE()
,GETDATE()
)
OUTPUT INSERTED.ID, src.Id
INTO @linkTable(insertedId,tempId);
UPDATE g SET g.GondviseloId = link.insertedId FROM #Gondviselok g
INNER JOIN @linkTable link ON link.tempId = g.Id
MERGE T_EMAIL_OSSZES trg
USING (
SELECT * FROM #Gondviselok WHERE GondviseloEmailcime IS NOT NULL) src ON src.GondviseloId = trg.C_GONDVISELOID AND trg.C_TANEVID = @pTanevId AND trg.TOROLT = 'F'
WHEN MATCHED THEN
UPDATE SET
trg.C_EMAILTIPUSA = 1024 --NA
,trg.C_EMAILCIM = src.GondviseloEmailcime
,trg.C_ALAPERTELMEZETT = 'T'
,trg.C_GONDVISELOID = src.GondviseloId
,trg.C_FELHASZNALOID = src.TanuloId
,trg.C_INTEZMENYID = @pIntezmenyId
,trg.C_TANEVID = @pTanevId
,trg.TOROLT = 'F'
,trg.SERIAL = trg.SERIAL+1
,trg.LASTCHANGED = GETDATE()
,trg.CREATED = GETDATE()
,trg.MODIFIER = @pUserId
,trg.CREATOR = @pUserId
WHEN NOT MATCHED THEN
INSERT (
C_EMAILTIPUSA
,C_EMAILCIM
,C_ALAPERTELMEZETT
,C_GONDVISELOID
,C_FELHASZNALOID
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
)
VALUES
(
1024 --NA
,src.GondviseloEmailcime
,'T'
,src.GondviseloID
,src.TanuloId
,@pIntezmenyId
,@pTanevId
,'F'
,0
,GETDATE()
,GETDATE()
,@pUserId
,@pUserId
);
MERGE T_TELEFON_OSSZES trg
USING (
SELECT * FROM #Gondviselok WHERE GondviseloTelefonszama IS NOT NULL) src ON src.GondviseloId = trg.C_GONDVISELOID AND trg.C_TANEVID = @pTanevId AND trg.TOROLT = 'F'
WHEN MATCHED THEN
UPDATE SET
trg.C_TELEFONTIPUSA = 1019 --Ismeretlen
,trg.C_TELEFONSZAM = src.GondviseloTelefonszama
,trg.C_ALAPERTELMEZETT = 'T'
,trg.C_GONDVISELOID = src.GondviseloId
,trg.C_FELHASZNALOID = src.TanuloId
,trg.C_INTEZMENYID = @pIntezmenyId
,trg.C_TANEVID = @pTanevId
,trg.TOROLT = 'F'
,trg.SERIAL = trg.SERIAL+1
,trg.LASTCHANGED = GETDATE()
,trg.CREATED = GETDATE()
,trg.MODIFIER = @pUserId
,trg.CREATOR = @pUserId
WHEN NOT MATCHED THEN
INSERT (
C_TELEFONTIPUSA
,C_TELEFONSZAM
,C_ALAPERTELMEZETT
,C_GONDVISELOID
,C_FELHASZNALOID
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
)
VALUES
(
1019 --Ismeretlen
,src.GondviseloTelefonszama
,'T'
,src.GondviseloId
,src.TanuloId
,@pIntezmenyId
,@pTanevId
,'F'
,0
,GETDATE()
,GETDATE()
,@pUserId
,@pUserId
);
COMMIT TRANSACTION
SELECT GondviseloId FROM #Gondviselok
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0
ROLLBACK TRANSACTION;
THROW
END CATCH
END
GO