kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dev/uspGenerateKIRSZIRFELADATELLATASIHELY.sql
2024-03-13 00:33:46 +01:00

158 lines
No EOL
5.7 KiB
Transact-SQL
Raw Blame History

DROP PROCEDURE IF EXISTS [dev].[uspGenerateKIRSZIRFELADATELLATASIHELY]
GO
CREATE PROCEDURE [dev].[uspGenerateKIRSZIRFELADATELLATASIHELY]
@TanevNev nvarchar(9) = NULL
AS
BEGIN
DECLARE @datetime datetime = CONCAT(LEFT(@TanevNev, 4),'-10-01')
DROP TABLE IF EXISTS #KIRSZIRFELADATELLATASIHELY
CREATE TABLE #KIRSZIRFELADATELLATASIHELY (
ID int NOT NULL IDENTITY(1,1),
C_FELADATELLATASIHELYID int NOT NULL,
C_MUKODESIHELYNEV nvarchar(255) NOT NULL,
C_MUKODESIHELYID int,
C_OKTATASINEVELESIFELADATNEV nvarchar(500) NOT NULL,
C_OKTATASINEVELESIFELADATTIPUS int,
C_DATUM datetime NOT NULL,
C_FELADATKATEGORIAID int NOT NULL,
C_INTEZMENYID int NOT NULL,
C_TANEVID int NOT NULL,
TOROLT char(1) NOT NULL DEFAULT 'F',
SERIAL int DEFAULT 0 NOT NULL,
LASTCHANGED datetime DEFAULT GETDATE() NOT NULL,
CREATED datetime DEFAULT GETDATE() NOT NULL,
MODIFIER int NULL,
CREATOR int NULL,
ELOZOTANEVIREKORDID int NULL
)
INSERT INTO #KIRSZIRFELADATELLATASIHELY (
C_FELADATELLATASIHELYID
,C_MUKODESIHELYNEV
,C_MUKODESIHELYID
,C_OKTATASINEVELESIFELADATNEV
,C_OKTATASINEVELESIFELADATTIPUS
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
,ELOZOTANEVIREKORDID
,C_DATUM
,C_FELADATKATEGORIAID
) SELECT
fh.ID AS C_FELADATELLATASIHELYID -- * int
,mh.C_NEV AS C_MUKODESIHELYNEV -- * nvarchar(255)
,fh.C_MUKODESIHELYID AS C_MUKODESIHELYID
,d.C_NAME AS C_OKTATASINEVELESIFELADATNEV -- * nvarchar(500)
,fh.C_OKTATASINEVELESIFELADATTIPUS AS C_OKTATASINEVELESIFELADATTIPUS
,fh.C_INTEZMENYID AS C_INTEZMENYID -- * int
,fh.C_TANEVID AS C_TANEVID -- * int
,fh.TOROLT AS TOROLT -- * char(1)
,0 AS SERIAL -- * int
,GETDATE() AS LASTCHANGED -- * datetime
,GETDATE() AS CREATED -- * datetime
,NULL AS MODIFIER -- int
,NULL AS CREATOR -- int
,NULL AS ELOZOTANEVIREKORDID -- int
,@datetime AS C_DATUM -- * datetime
,onf.C_FELADATKATEGORIAID AS C_FELADATKATEGORIAID -- * int
FROM T_FELADATELLATASIHELY fh
INNER JOIN T_MUKODESIHELY mh ON mh.ID = fh.C_MUKODESIHELYID
INNER JOIN T_DICTIONARYITEMBASE d ON d.ID = fh.C_OKTATASINEVELESIFELADATTIPUS AND d.C_TANEVID = fh.C_TANEVID
INNER JOIN T_OKTATASINEVELESIFELADAT onf ON onf.ID = d.ID AND onf.C_ALTANEVID = d.C_TANEVID
INNER JOIN T_TANEV tv ON tv.ID = fh.C_TANEVID AND tv.C_NEV = @TanevNev
INNER JOIN T_INTEZMENYADATOK ia on ia.C_TANEVID = fh.C_TANEVID and ia.TOROLT = 'F' and ia.C_ISSZAKKEPZO = 'F'
WHERE NOT EXISTS (SELECT 1 FROM T_KIRSZIRFELADATELLATASIHELY kszfh WHERE kszfh.C_FELADATELLATASIHELYID = fh.ID)
DECLARE @sql nvarchar(max) = ''
-- Feladatell<6C>t<EFBFBD>si hely adatainak vissza<7A>ll<6C>t<EFBFBD>sa
SELECT @sql += sqlCmd FROM(
SELECT DISTINCT 'UPDATE #KIRSZIRFELADATELLATASIHELY ' +
CASE
WHEN eh.C_REASON='New' THEN 'SET TOROLT = ''T'''
WHEN eh.C_REASON='Modified' THEN 'SET ' + eh.C_PROPERTYNAME + ' = '+ISNULL(''''+eh.C_ORIGINALVALUE+'''','NULL ')
END +
' WHERE ID = ' + CAST(eh.C_ENTITYID AS varchar) +';' + CHAR(13) + CHAR(10) sqlCmd, eh.C_ALTERATIONDATE
FROM V_ENTITYHISTORY eh
INNER JOIN #KIRSZIRFELADATELLATASIHELY fh ON fh.C_FELADATELLATASIHELYID = eh.C_ENTITYID
WHERE eh.C_ENTITYNAME = 'T_FELADATELLATASIHELY'
AND eh.C_ALTERATIONDATE >= @datetime + 1
AND eh.C_PROPERTYNAME IN ('C_MUKODESIHELYID', 'TOROLT', 'C_OKTATASINEVELESIFELADATTIPUS')
) x WHERE x.sqlCmd IS NOT NULL
ORDER BY x.C_ALTERATIONDATE DESC
-- T_MUKODESIHELY nev<65>nek vissza<7A>ll<6C>t<EFBFBD>sa
SELECT @sql += sqlCmd FROM(
SELECT DISTINCT 'UPDATE #KIRSZIRFELADATELLATASIHELY ' +
CASE
WHEN eh.C_REASON='New' THEN 'SET TOROLT = ''T'''
WHEN eh.C_REASON='Modified' THEN 'SET C_MUKODESIHELYNEV = ' + ISNULL(''''+eh.C_ORIGINALVALUE+'''','NULL')
END +
' WHERE C_MUKODESIHELYID = ' + CAST(eh.C_ENTITYID AS varchar) +';' + CHAR(13) + CHAR(10) sqlCmd, eh.C_ALTERATIONDATE
FROM V_ENTITYHISTORY eh
INNER JOIN #KIRSZIRFELADATELLATASIHELY fh ON fh.C_MUKODESIHELYID = eh.C_ENTITYID
WHERE eh.C_ENTITYNAME = 'T_MUKODESIHELY'
AND eh.C_ALTERATIONDATE >= @datetime + 1
AND eh.C_PROPERTYNAME = 'C_NEV'
) x WHERE x.sqlCmd IS NOT NULL
ORDER BY x.C_ALTERATIONDATE DESC
-- C_OKTATASINEVELESIFELADATTIPUS nev<65>nek vissza<7A>ll<6C>t<EFBFBD>sa
SELECT @sql += sqlCmd FROM(
SELECT DISTINCT 'UPDATE #KIRSZIRFELADATELLATASIHELY ' +
CASE
WHEN eh.C_REASON='New' THEN 'SET TOROLT = ''T'''
WHEN eh.C_REASON='Modified' THEN 'SET C_OKTATASINEVELESIFELADATNEV = ' + ISNULL(''''+eh.C_ORIGINALVALUE+'''','NULL')
END+
' WHERE C_OKTATASINEVELESIFELADATTIPUS = ' + CAST(eh.C_ENTITYID AS varchar) + ' AND C_TANEVID = ' + CAST(eh.C_TANEVID AS varchar) + ';' + CHAR(13) + CHAR(10) sqlCmd, eh.C_ALTERATIONDATE
FROM V_ENTITYHISTORY eh
INNER JOIN #KIRSZIRFELADATELLATASIHELY fh ON fh.C_OKTATASINEVELESIFELADATTIPUS = eh.C_ENTITYID AND fh.C_TANEVID = eh.C_TANEVID
WHERE eh.C_ENTITYNAME = 'T_DICTIONARYITEMBASE'
AND eh.C_ALTERATIONDATE >= @datetime + 1
AND eh.C_PROPERTYNAME = 'C_NEV'
) x WHERE x.sqlCmd IS NOT NULL
ORDER BY x.C_ALTERATIONDATE DESC
EXEC sp_executesql @sql
INSERT INTO T_KIRSZIRFELADATELLATASIHELY (
C_FELADATELLATASIHELYID
,C_MUKODESIHELYNEV
,C_OKTATASINEVELESIFELADATNEV
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
,ELOZOTANEVIREKORDID
,C_DATUM
,C_FELADATKATEGORIAID
) SELECT
C_FELADATELLATASIHELYID
,C_MUKODESIHELYNEV
,C_OKTATASINEVELESIFELADATNEV
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
,ELOZOTANEVIREKORDID
,C_DATUM
,C_FELADATKATEGORIAID
FROM #KIRSZIRFELADATELLATASIHELY
END
GO