init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
File diff suppressed because it is too large
Load diff
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
File diff suppressed because it is too large
Load diff
|
@ -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
|
||||
|
|
@ -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
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue