376 lines
13 KiB
Transact-SQL
376 lines
13 KiB
Transact-SQL
-- =============================================
|
|
-- Description: <>
|
|
-- =============================================
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
IF OBJECT_ID('[dbo].[sp_TantargyfelosztasImport]') IS NOT NULL
|
|
BEGIN
|
|
DROP PROCEDURE [dbo].[sp_TantargyfelosztasImport]
|
|
END
|
|
GO
|
|
|
|
CREATE PROCEDURE [dbo].[sp_TantargyfelosztasImport]
|
|
@pImportJson NVARCHAR(MAX)
|
|
,@pIsTorles BIT
|
|
,@pUserId INT
|
|
,@pTanevId INT
|
|
,@pIntezmenyId INT
|
|
|
|
AS
|
|
BEGIN
|
|
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE
|
|
@tableNameList nvarchar(2000) = 'T_TANTARGY_OSSZES,T_OSZTALYCSOPORT_OSSZES'
|
|
,@actualJson NVARCHAR(MAX) = ''
|
|
|
|
,@lastChangedDateTime DATETIME = GETDATE()
|
|
,@modifierId INT = @pUserId
|
|
|
|
--Ha Törölnünk is kell akkor azzal kezdünk!
|
|
IF (@pIsTorles = 1)
|
|
BEGIN
|
|
--Foglalkozás kapcsolatainak törlése
|
|
UPDATE
|
|
OrarendiOra
|
|
SET
|
|
OrarendiOra.C_FOGLALKOZASID = NULL
|
|
,OrarendiOra.SERIAL = OrarendiOra.SERIAL + 1
|
|
,OrarendiOra.LASTCHANGED = @lastChangedDateTime
|
|
,OrarendiOra.MODIFIER = @modifierId
|
|
FROM
|
|
T_ORARENDIORA_OSSZES OrarendiOra
|
|
WHERE
|
|
OrarendiOra.C_INTEZMENYID = @pIntezmenyId
|
|
AND OrarendiOra.C_TANEVID = @pTanevId
|
|
AND OrarendiOra.TOROLT = 'F'
|
|
AND EXISTS
|
|
(SELECT TOP 1
|
|
ID
|
|
FROM
|
|
T_FOGLALKOZAS_OSSZES Foglalkozas
|
|
WHERE
|
|
Foglalkozas.ID = OrarendiOra.C_FOGLALKOZASID
|
|
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
|
|
AND Foglalkozas.C_TANEVID = @pTanevId
|
|
AND Foglalkozas.TOROLT = 'F'
|
|
AND Foglalkozas.C_IMPORTALT = 'T'
|
|
)
|
|
|
|
UPDATE
|
|
TanitasiOra
|
|
SET
|
|
TanitasiOra.C_FOGLALKOZASID = NULL
|
|
,TanitasiOra.SERIAL = TanitasiOra.SERIAL + 1
|
|
,TanitasiOra.LASTCHANGED = @lastChangedDateTime
|
|
,TanitasiOra.MODIFIER = @modifierId
|
|
FROM
|
|
T_TANITASIORA_OSSZES TanitasiOra
|
|
WHERE
|
|
TanitasiOra.C_INTEZMENYID = @pIntezmenyId
|
|
AND TanitasiOra.C_TANEVID = @pTanevId
|
|
AND TanitasiOra.TOROLT = 'F'
|
|
AND EXISTS
|
|
(SELECT TOP 1
|
|
ID
|
|
FROM
|
|
T_FOGLALKOZAS_OSSZES Foglalkozas
|
|
WHERE
|
|
Foglalkozas.ID = TanitasiOra.C_FOGLALKOZASID
|
|
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
|
|
AND Foglalkozas.C_TANEVID = @pTanevId
|
|
AND Foglalkozas.TOROLT = 'F'
|
|
AND Foglalkozas.C_IMPORTALT = 'T'
|
|
)
|
|
|
|
UPDATE
|
|
TanuloMulasztasStatisztika
|
|
SET
|
|
TanuloMulasztasStatisztika.C_TARGYMULASZTASSTATISZTIKAIID = NULL
|
|
,TanuloMulasztasStatisztika.SERIAL = TanuloMulasztasStatisztika.SERIAL + 1
|
|
,TanuloMulasztaSstatisztika.LASTCHANGED = @lastChangedDateTime
|
|
,TanuloMulasztasStatisztika.MODIFIER = @modifierId
|
|
FROM
|
|
T_TANULOTARGYMULASZTASSTATISZT_OSSZES TanuloMulasztasStatisztika
|
|
WHERE
|
|
TanuloMulasztasStatisztika.C_INTEZMENYID = @pIntezmenyId
|
|
AND TanuloMulasztasStatisztika.C_TANEVID = @pTanevId
|
|
AND TanuloMulasztasStatisztika.TOROLT = 'F'
|
|
AND EXISTS
|
|
(SELECT TOP 1
|
|
ID
|
|
FROM
|
|
T_FOGLALKOZAS_OSSZES Foglalkozas
|
|
WHERE
|
|
Foglalkozas.ID = TanuloMulasztasStatisztika.C_TARGYMULASZTASSTATISZTIKAIID
|
|
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
|
|
AND Foglalkozas.C_TANEVID = @pTanevId
|
|
AND Foglalkozas.TOROLT = 'F'
|
|
AND Foglalkozas.C_IMPORTALT = 'T'
|
|
)
|
|
|
|
DELETE
|
|
TeremFoglalkozas
|
|
FROM
|
|
T_TEREM_FOGLALKOZAS TeremFoglalkozas
|
|
WHERE
|
|
EXISTS
|
|
(SELECT TOP 1
|
|
ID
|
|
FROM
|
|
T_FOGLALKOZAS_OSSZES Foglalkozas
|
|
WHERE
|
|
Foglalkozas.ID = TeremFoglalkozas.C_FOGLALKOZASID
|
|
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
|
|
AND Foglalkozas.C_TANEVID = @pTanevId
|
|
AND Foglalkozas.TOROLT = 'F'
|
|
AND Foglalkozas.C_IMPORTALT = 'T'
|
|
)
|
|
|
|
|
|
--Foglalkozások törlése
|
|
UPDATE
|
|
Foglalkozas
|
|
SET
|
|
Foglalkozas.TOROLT = 'T'
|
|
,Foglalkozas.SERIAL = Foglalkozas.SERIAL + 1
|
|
,Foglalkozas.LASTCHANGED = @lastChangedDateTime
|
|
,Foglalkozas.MODIFIER = @modifierId
|
|
FROM
|
|
T_FOGLALKOZAS_OSSZES Foglalkozas
|
|
WHERE
|
|
Foglalkozas.C_TANEVID = @pTanevId
|
|
AND Foglalkozas.C_INTEZMENYID = @pIntezmenyId
|
|
AND Foglalkozas.TOROLT = 'F'
|
|
AND Foglalkozas.C_IMPORTALT = 'T'
|
|
END
|
|
|
|
--NOTE: A törlés itt azért false, mert a T_TANTARGY_OSSZES és a T_OSZTALYCSOPORT_OSSZES view-ból nem törlünk importnál
|
|
EXECUTE [dbo].[sp_DynamicImportJsonSplit] @pImportJson = @pImportJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 0, @pTableNameList = @tableNameList
|
|
|
|
--Osztályok beszúrása
|
|
SET @actualJson = ' { "ImportJson":{ "T_OSZTALY_OSSZES":' +
|
|
(SELECT
|
|
Osztaly.OsztalyCsoportId ID
|
|
,Osztaly. C_KEPZESIFORMA
|
|
,Osztaly. C_TECHNIKAIOSZTALY
|
|
,Osztaly. C_GYOGYPEDAGOGIAI
|
|
,Osztaly. C_KETTANNYELVU
|
|
,Osztaly. C_LOGOPEDIAI
|
|
,Osztaly. C_NEMZETISEGI
|
|
,Osztaly. C_NYELVIELOKESZITO
|
|
,Osztaly. C_SPORT
|
|
,Osztaly. C_ALINTEZMENYID
|
|
,Osztaly. C_ALTANEVID
|
|
,Osztaly. TOROLT
|
|
,Osztaly. SERIAL
|
|
,Osztaly. LASTCHANGED
|
|
,Osztaly. CREATED
|
|
,Osztaly. MODIFIER
|
|
,Osztaly. CREATOR
|
|
,Osztaly. ELOZOTANEVIREKORDID
|
|
,Osztaly. NNID
|
|
FROM
|
|
(SELECT
|
|
OsztalyJsonData.*
|
|
,OsztalyCsoport.ID OsztalyCsoportId
|
|
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_OSZTALY_OSSZES')
|
|
WITH (
|
|
ID INT '$.ID'
|
|
,C_KEPZESIFORMA INT '$.C_KEPZESIFORMA'
|
|
,C_TECHNIKAIOSZTALY CHAR(1) '$.C_TECHNIKAIOSZTALY'
|
|
,C_GYOGYPEDAGOGIAI CHAR(1) '$.C_GYOGYPEDAGOGIAI'
|
|
,C_KETTANNYELVU CHAR(1) '$.C_KETTANNYELVU'
|
|
,C_LOGOPEDIAI CHAR(1) '$.C_LOGOPEDIAI'
|
|
,C_NEMZETISEGI CHAR(1) '$.C_NEMZETISEGI'
|
|
,C_NYELVIELOKESZITO CHAR(1) '$.C_NYELVIELOKESZITO'
|
|
,C_SPORT CHAR(1) '$.C_SPORT'
|
|
,C_ALINTEZMENYID INT '$.C_INTEZMENYID'
|
|
,C_ALTANEVID 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'
|
|
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
|
|
) OsztalyJsonData
|
|
LEFT JOIN
|
|
T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON
|
|
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(OsztalyCsoport.C_NEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(OsztalyJsonData.OsztalyCsoportNev)
|
|
AND OsztalyCsoport.C_TANEVID = @pTanevId
|
|
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
|
|
AND OsztalyCsoport.TOROLT = 'F'
|
|
AND OsztalyJsonData.ID IS NULL
|
|
) AS Osztaly
|
|
FOR JSON PATH,INCLUDE_NULL_VALUES)
|
|
|
|
SET @actualJson = @actualJson + ' } }'
|
|
|
|
--NOTE: A törlés itt azért false, mert a T_OSZTALY_OSSZES view-ból nem törlünk importnál
|
|
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 1
|
|
|
|
--Csoportok beszúrása
|
|
SET @actualJson = ' { "ImportJson":{ "T_CSOPORT_OSSZES":' +
|
|
(SELECT
|
|
Csoport.OsztalyCsoportId ID
|
|
,Csoport. C_TIPUSA
|
|
,Csoport.OsztalybontasId C_OSZTALYBONTASID
|
|
,Csoport. C_ALINTEZMENYID
|
|
,Csoport. C_ALTANEVID
|
|
,Csoport. TOROLT
|
|
,Csoport. SERIAL
|
|
,Csoport. LASTCHANGED
|
|
,Csoport. CREATED
|
|
,Csoport. MODIFIER
|
|
,Csoport. CREATOR
|
|
,Csoport. NNID
|
|
,Csoport. ELOZOTANEVIREKORDID
|
|
FROM
|
|
(SELECT
|
|
CsoportJsonData.*
|
|
,OsztalyCsoport.ID OsztalyCsoportId
|
|
,Osztalybontas.ID OsztalybontasId
|
|
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_CSOPORT_OSSZES')
|
|
WITH (
|
|
ID INT '$.ID'
|
|
,C_TIPUSA INT '$.C_TIPUSA'
|
|
,C_OSZTALYBONTASID INT '$.C_OSZTALYBONTASID'
|
|
,C_ALINTEZMENYID INT '$.C_INTEZMENYID'
|
|
,C_ALTANEVID INT '$.C_TANEVID'
|
|
,TOROLT CHAR(1) '$.TOROLT'
|
|
,SERIAL INT '$.SERIAL'
|
|
,LASTCHANGED DATETIME '$.LASTCHANGED'
|
|
,CREATED DATETIME '$.CREATED'
|
|
,MODIFIER INT '$.MODIFIER'
|
|
,CREATOR INT '$.CREATOR'
|
|
,NNID INT '$.NNID'
|
|
,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID'
|
|
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
|
|
,OsztalybontasNev NVARCHAR(255) '$.OsztalybontasNev'
|
|
) CsoportJsonData
|
|
LEFT JOIN
|
|
T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON
|
|
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(OsztalyCsoport.C_NEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(CsoportJsonData.OsztalyCsoportNev)
|
|
AND OsztalyCsoport.C_TANEVID = @pTanevId
|
|
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
|
|
AND OsztalyCsoport.TOROLT = 'F'
|
|
AND CsoportJsonData.ID IS NULL
|
|
LEFT JOIN
|
|
T_OSZTALYCSOPORT_OSSZES Osztalybontas ON
|
|
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(Osztalybontas.C_NEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(CsoportJsonData.OsztalybontasNev)
|
|
AND Osztalybontas.C_TANEVID = @pTanevId
|
|
AND Osztalybontas.C_INTEZMENYID = @pIntezmenyId
|
|
AND Osztalybontas.TOROLT = 'F'
|
|
AND CsoportJsonData.ID IS NULL
|
|
) AS Csoport
|
|
FOR JSON PATH,INCLUDE_NULL_VALUES)
|
|
|
|
SET @actualJson = @actualJson + ' } }'
|
|
|
|
--NOTE: A törlés itt azért false, mert a T_CSOPORT_OSSZES view-ból nem törlünk importnál
|
|
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId ,@pInsertAlways = 1
|
|
|
|
--Foglalkozások beszúrása
|
|
SET @actualJson = ' { "ImportJson":{ "T_FOGLALKOZAS_OSSZES":' +
|
|
(SELECT
|
|
Foglalkozas. ID
|
|
,Foglalkozas. C_FOGLALKOZASTIPUSA
|
|
,Foglalkozas. C_ORASZAM
|
|
,Foglalkozas. C_NEV
|
|
,Foglalkozas. C_ERTEKELESKELL
|
|
,Foglalkozas. C_MULASZTASKELL
|
|
,Foglalkozas. C_TANARFELVEHETI
|
|
,Foglalkozas.TantargyId C_TANTARGYID
|
|
,Foglalkozas.OsztalyCsoportId C_OSZTALYCSOPORTID
|
|
,Foglalkozas.TanarId C_TANARID
|
|
,Foglalkozas. C_INTEZMENYID
|
|
,Foglalkozas. C_TANEVID
|
|
,Foglalkozas. C_IMPORTALT
|
|
,Foglalkozas. TOROLT
|
|
,Foglalkozas. SERIAL
|
|
,Foglalkozas. LASTCHANGED
|
|
,Foglalkozas. CREATED
|
|
,Foglalkozas. MODIFIER
|
|
,Foglalkozas. CREATOR
|
|
,Foglalkozas. ELOZOTANEVIREKORDID
|
|
,Foglalkozas. NNID
|
|
FROM
|
|
(SELECT
|
|
FoglalkozasJsonData.*
|
|
,OsztalyCsoport.ID OsztalyCsoportId
|
|
,Felhasznalo.ID TanarId
|
|
,Tantargy.ID TantargyId
|
|
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_FOGLALKOZAS_OSSZES')
|
|
WITH (
|
|
ID INT '$.ID'
|
|
,C_FOGLALKOZASTIPUSA INT '$.C_FOGLALKOZASTIPUSA'
|
|
,C_ORASZAM NUMERIC(10,2) '$.C_ORASZAM'
|
|
,C_NEV NVARCHAR(255) '$.C_NEV'
|
|
,C_ERTEKELESKELL CHAR(1) '$.C_ERTEKELESKELL'
|
|
,C_MULASZTASKELL CHAR(1) '$.C_MULASZTASKELL'
|
|
,C_TANARFELVEHETI CHAR(1) '$.C_TANARFELVEHETI'
|
|
,C_TANTARGYID INT '$.C_TANTARGYID'
|
|
,C_OSZTALYCSOPORTID INT '$.C_OSZTALYCSOPORTID'
|
|
,C_TANARID INT '$.C_TANARID'
|
|
,C_INTEZMENYID INT '$.C_INTEZMENYID'
|
|
,C_TANEVID INT '$.C_TANEVID'
|
|
,C_IMPORTALT CHAR(1) '$.C_IMPORTALT'
|
|
,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'
|
|
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
|
|
,TanarNev NVARCHAR(255) '$.TanarNev'
|
|
,TanarSzuletesiIdo NVARCHAR(255) '$.TanarSzuletesiIdo'
|
|
,TantargyNev NVARCHAR(255) '$.TantargyNev'
|
|
) FoglalkozasJsonData
|
|
LEFT JOIN
|
|
T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON
|
|
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(OsztalyCsoport.C_NEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(FoglalkozasJsonData.OsztalyCsoportNev)
|
|
AND OsztalyCsoport.C_TANEVID = @pTanevId
|
|
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
|
|
AND OsztalyCsoport.TOROLT = 'F'
|
|
LEFT JOIN
|
|
T_FELHASZNALO_OSSZES Felhasznalo ON
|
|
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(Felhasznalo.C_NYOMTATASINEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(FoglalkozasJsonData.TanarNev)
|
|
AND (FoglalkozasJsonData.TanarSzuletesiIdo IS NULL
|
|
OR Felhasznalo.C_SZULETESIDATUM = FoglalkozasJsonData.TanarSzuletesiIdo)
|
|
AND Felhasznalo.C_TANEVID = @pTanevId
|
|
AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId
|
|
AND Felhasznalo.TOROLT = 'F'
|
|
INNER JOIN
|
|
T_ALKALMAZOTT_OSSZES Alkalmazott ON
|
|
Alkalmazott.ID = Felhasznalo.ID
|
|
AND Alkalmazott.C_ALTANEVID = @pTanevId
|
|
AND Alkalmazott.C_ALINTEZMENYID = @pIntezmenyId
|
|
AND Alkalmazott.TOROLT = 'F'
|
|
LEFT JOIN
|
|
T_TANTARGY_OSSZES Tantargy ON
|
|
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(LOWER(Tantargy.C_NEV),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(FoglalkozasJsonData.TantargyNev)
|
|
AND Tantargy.C_TANEVID = @pTanevId
|
|
AND Tantargy.C_INTEZMENYID = @pIntezmenyId
|
|
AND Tantargy.TOROLT = 'F'
|
|
) AS Foglalkozas
|
|
FOR JSON PATH,INCLUDE_NULL_VALUES)
|
|
|
|
SET @actualJson = @actualJson + ' } }'
|
|
|
|
--NOTE: A törlés itt azért false, mert a T_FOGLALKOZAS_OSSZES view-ból korábban elvégeztük a törlést, mivel az osztálycsoport és a tantárgy törlések miatt, nem találná.
|
|
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pUserId = @pUserId, @pInsertAlways = 0
|
|
|
|
END
|
|
|
|
|
|
GO
|
|
|