kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspOratervImport.sql
2024-03-13 00:33:46 +01:00

234 lines
6.3 KiB
Transact-SQL

-- =============================================
-- Description: <Óraterv import>
-- =============================================
DROP PROCEDURE IF EXISTS uspOratervImport
GO
CREATE PROCEDURE uspOratervImport
@pIntezmenyId int
,@pTanevId int
,@pUserId int
,@pImportJson nvarchar(MAX)
AS BEGIN
SET NOCOUNT ON;
DECLARE
@tableNameList nvarchar(2000) = 'T_ORATERV_OSSZES'
,@actualJson nvarchar(MAX) = ''
,@lastChangedDateTime datetime = GETDATE()
--NOTE: A törlés azért false, mert a óraterv 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: Tantárgy temp tábla incializálása
CREATE TABLE #TantargyTempTable (
ID int
,C_GYAKORLATI char
,C_NEV nvarchar(510)
,C_ROVIDNEV nvarchar(50)
,C_TARGYKATEGORIA int
,C_ALTANTARGYKENTNYOMTATVANYBAN char
,C_NEVNYOMTATVANYBAN nvarchar(510)
,C_TANORANKIVULI char
,C_FOTARGYE char
,C_FOTARGYID 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
#TantargyTempTable
SELECT
tt.ID
,tt.C_GYAKORLATI
,tt.C_NEV
,tt.C_ROVIDNEV
,tt.C_TARGYKATEGORIA
,tt.C_ALTANTARGYKENTNYOMTATVANYBAN
,tt.C_NEVNYOMTATVANYBAN
,tt.C_TANORANKIVULI
,tt.C_FOTARGYE
,tt.C_FOTARGYID
,tt.C_INTEZMENYID
,tt.C_TANEVID
,tt.TOROLT
,tt.SERIAL
,tt.LASTCHANGED
,tt.CREATED
,tt.MODIFIER
,tt.CREATOR
,tt.ELOZOTANEVIREKORDID
,tt.NNID
,tt.Operation
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_TANTARGY_OSSZES')
WITH (
ID int '$.ID'
,C_GYAKORLATI char '$.C_GYAKORLATI'
,C_NEV nvarchar(510) '$.C_NEV'
,C_ROVIDNEV nvarchar(50) '$.C_ROVIDNEV'
,C_TARGYKATEGORIA int '$.C_TARGYKATEGORIA'
,C_ALTANTARGYKENTNYOMTATVANYBAN char(1) '$.C_ALTANTARGYKENTNYOMTATVANYBAN'
,C_NEVNYOMTATVANYBAN nvarchar(510) '$.C_NEVNYOMTATVANYBAN'
,C_TANORANKIVULI char '$.C_TANORANKIVULI'
,C_FOTARGYE char '$.C_FOTARGYE'
,C_FOTARGYID int '$.C_FOTARGYID'
,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'
) tt
--Tantárgyak beszúrása
SET @actualJson = ' { "ImportJson":{ "T_TANTARGY_OSSZES":' + (
SELECT
tt.ID
,tt.C_GYAKORLATI
,tt.C_NEV
,tt.C_ROVIDNEV
,tt.C_TARGYKATEGORIA
,tt.C_ALTANTARGYKENTNYOMTATVANYBAN
,tt.C_NEVNYOMTATVANYBAN
,tt.C_TANORANKIVULI
,tt.C_FOTARGYE
,tt.C_FOTARGYID
,tt.C_INTEZMENYID
,tt.C_TANEVID
,tt.TOROLT
,tt.SERIAL
,tt.LASTCHANGED
,tt.CREATED
,tt.MODIFIER
,tt.CREATOR
,tt.ELOZOTANEVIREKORDID
,tt.NNID
,tt.Operation
FROM #TantargyTempTable AS tt
FOR JSON PATH,INCLUDE_NULL_VALUES
)
SET @actualJson = @actualJson + ' } }'
EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 0
--NOTE: OratervTantargy temp tábla incializálása
CREATE TABLE #OratervTantargyTempTable (
ID int
,C_EVESORASZAM numeric(10, 2)
,C_ORATERVID int
,C_TANTARGYID 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
#OratervTantargyTempTable
SELECT
ott.ID
,ott.C_EVESORASZAM
,ot.ID
,tt.ID
,ott.C_INTEZMENYID
,ott.C_TANEVID
,ott.TOROLT
,ott.SERIAL
,ott.LASTCHANGED
,ott.CREATED
,ott.MODIFIER
,ott.CREATOR
,ott.ELOZOTANEVIREKORDID
,ott.NNID
,ott.Operation
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_ORATERVTARGY_OSSZES')
WITH (
ID int '$.ID'
,C_EVESORASZAM numeric(10, 2) '$.C_EVESORASZAM'
,C_ORATERVID int '$.C_ORATERVID'
,C_TANTARGYID int '$.C_TANTARGYID'
,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'
,OratervNev nvarchar(510) '$.OratervNev'
,TantargyNev nvarchar(510) '$.TantargyNev'
) ott
LEFT JOIN T_ORATERV_OSSZES ot ON
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ot.C_NEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(ott.OratervNev)
AND ot.C_TANEVID = ott.C_TANEVID
AND ot.TOROLT = 'F'
LEFT JOIN T_TANTARGY_OSSZES tt ON
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(tt.C_NEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(ott.TantargyNev)
AND tt.C_TANEVID = ott.C_TANEVID
AND tt.TOROLT = 'F'
-- OratervTantargy beszúrása
SET @actualJson = ' { "ImportJson":{ "T_ORATERVTARGY_OSSZES":' + (
SELECT
ott.ID
,ott.C_EVESORASZAM
,ott.C_ORATERVID
,ott.C_TANTARGYID
,ott.C_INTEZMENYID
,ott.C_TANEVID
,ott.TOROLT
,ott.SERIAL
,ott.LASTCHANGED
,ott.CREATED
,ott.MODIFIER
,ott.CREATOR
,ott.ELOZOTANEVIREKORDID
,ott.NNID
,ott.Operation
FROM #OratervTantargyTempTable AS ott
FOR JSON PATH,INCLUDE_NULL_VALUES
)
SET @actualJson = @actualJson + ' } }'
select * from #OratervTantargyTempTable
EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 0
END
GO