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,357 @@
DROP PROCEDURE IF EXISTS uspOrarendImport
GO
CREATE PROCEDURE uspOrarendImport
@pIntezmenyId int
,@pTanevId int
,@pUserId int
,@pImportJson nvarchar(max)
,@pIsTorles bit
,@pIsModositas bit
,@pIsNapirendImport bit
,@pOrarendiOraLezarasDateTime datetime = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@tableNameList nvarchar(2000) = 'T_TEREM_OSSZES'
,@actualJson nvarchar(max) = ''
,@lastChangedDateTime datetime = GETDATE()
--Ha törlés van, akkor a kapcsolódások törlésével kell kezdenünk!
IF (@pIsTorles = 1) BEGIN
--Órarendi óra kapcsolatainak törlése
UPDATE tao SET
tao.C_ORARENDIORAID = NULL
,tao.SERIAL = tao.SERIAL + 1
,tao.LASTCHANGED = @lastChangedDateTime
,tao.MODIFIER = @pUserId
FROM T_TANITASIORA_OSSZES tao
WHERE tao.C_INTEZMENYID = @pIntezmenyId
AND tao.C_TANEVID = @pTanevId
AND tao.TOROLT = 'F'
AND EXISTS (
SELECT TOP 1 ID
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.ID = tao.C_ORARENDIORAID
AND oo.C_INTEZMENYID = @pIntezmenyId
AND oo.C_TANEVID = @pTanevId
AND oo.TOROLT = 'F'
AND oo.C_IMPORTALT = 'T'
AND ((@pIsNapirendImport = 0 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'F')
OR (@pIsNapirendImport = 1 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'T'))
)
UPDATE hf SET
hf.C_ORARENDIORAID = NULL
,hf.SERIAL = hf.SERIAL + 1
,hf.LASTCHANGED = @lastChangedDateTime
,hf.MODIFIER = @pUserId
FROM T_HAZIFELADATOK_OSSZES hf
WHERE hf.C_INTEZMENYID = @pIntezmenyId
AND hf.C_TANEVID = @pTanevId
AND hf.TOROLT = 'F'
AND EXISTS (
SELECT TOP 1 ID
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.ID = hf.C_ORARENDIORAID
AND oo.C_INTEZMENYID = @pIntezmenyId
AND oo.C_TANEVID = @pTanevId
AND oo.TOROLT = 'F'
AND oo.C_IMPORTALT = 'T'
AND ((@pIsNapirendImport = 0 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'F')
OR (@pIsNapirendImport = 1 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'T'))
)
UPDATE oot SET
oot.C_ORARENDIORAID = NULL
,oot.SERIAL = oot.SERIAL + 1
,oot.LASTCHANGED = @lastChangedDateTime
,oot.MODIFIER = @pUserId
FROM T_ORARENDIORATULAJDONSAG oot
WHERE oot.C_INTEZMENYID = @pIntezmenyId
AND oot.C_TANEVID = @pTanevId
AND oot.TOROLT = 'F'
AND EXISTS (
SELECT TOP 1 ID
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.ID = oot.C_ORARENDIORAID
AND oo.C_INTEZMENYID = @pIntezmenyId
AND oo.C_TANEVID = @pTanevId
AND oo.TOROLT = 'F'
AND oo.C_IMPORTALT = 'T'
AND ((@pIsNapirendImport = 0 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'F')
OR (@pIsNapirendImport = 1 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'T'))
)
DELETE hi
FROM T_HELYETTESITESIIDOSZAK_OSSZES hi
WHERE EXISTS (
SELECT TOP 1 ID
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.ID = hi.C_HELYETTESITETTORARENDID
AND oo.C_INTEZMENYID = @pIntezmenyId
AND oo.C_TANEVID = @pTanevId
AND oo.TOROLT = 'F'
AND oo.C_IMPORTALT = 'T'
AND ((@pIsNapirendImport = 0 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'F')
OR (@pIsNapirendImport = 1 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'T'))
)
--Órarendi órák törlése
UPDATE oo SET
oo.TOROLT = 'T'
,oo.SERIAL = oo.SERIAL + 1
,oo.LASTCHANGED = @lastChangedDateTime
,oo.MODIFIER = @pUserId
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.C_INTEZMENYID = @pIntezmenyId
AND oo.C_TANEVID = @pTanevId
AND oo.TOROLT = 'F'
AND oo.C_IMPORTALT = 'T'
AND oo.C_ORAERVENYESSEGVEGE <> oo.C_ORAERVENYESSEGKEZDETE
AND ((@pIsNapirendImport = 0 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'F')
OR (@pIsNapirendImport = 1 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'T'))
END
--Ha módosítás van, akkor a már létező órarendi órák módosításával kell kezdenünk!
IF (@pIsModositas = 1) BEGIN
--Korábbi órarendi órák lezárása
UPDATE oo SET
oo.C_ORAERVENYESSEGVEGE = @pOrarendiOraLezarasDateTime
,oo.SERIAL = oo.SERIAL + 1
,oo.LASTCHANGED = @lastChangedDateTime
,oo.MODIFIER = @pUserId
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.C_INTEZMENYID = @pIntezmenyId
AND oo.C_TANEVID = @pTanevId
AND oo.TOROLT = 'F'
AND (oo.C_ORAERVENYESSEGVEGE IS NULL
OR oo.C_ORAERVENYESSEGVEGE > @pOrarendiOraLezarasDateTime)
AND oo.C_ORAERVENYESSEGVEGE <> oo.C_ORAERVENYESSEGKEZDETE
AND oo.C_ORAERVENYESSEGKEZDETE < @pOrarendiOraLezarasDateTime
AND ((@pIsNapirendImport = 0 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'F')
OR (@pIsNapirendImport = 1 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'T'))
--A korábban felvett, de későbbi időpontra importált órarendi órák törlése
UPDATE oo SET
oo.TOROLT = 'T'
,oo.SERIAL = oo.SERIAL + 1
,oo.LASTCHANGED = @lastChangedDateTime
,oo.MODIFIER = @pUserId
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.C_INTEZMENYID = @pIntezmenyId
AND oo.C_TANEVID = @pTanevId
AND oo.TOROLT = 'F'
AND oo.C_IMPORTALT = 'T'
AND oo.C_ORAERVENYESSEGVEGE <> oo.C_ORAERVENYESSEGKEZDETE
AND oo.C_ORAERVENYESSEGKEZDETE >= @pOrarendiOraLezarasDateTime
AND ((@pIsNapirendImport = 0 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'F')
OR (@pIsNapirendImport = 1 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'T'))
END
EXECUTE uspTantargyfelosztasImport @pIntezmenyId, @pTanevId, @pUserId, @pImportJson, @pIsTorles
--NOTE: A törlés azért false, mert a T_TEREM_OSSZES view-ból nem törlünk importnál!
EXECUTE uspDynamicImportJsonSplit @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @pImportJson, @pIsTorles = 0, @pIsSubTable = 0, @pTableNameList = @tableNameList
--NOTE: Órarendi óra temp tábla incializálása
CREATE TABLE #OrarendiOraTempTable (
ID int
,C_TANARID int
,C_TANTARGYID int
,C_OSZTALYCSOPORTID int
,C_TEREMID int
,C_FOGLALKOZASID int
,C_HETIREND int
,C_HETNAPJA int
,C_ORASZAM int
,C_ORAERVENYESSEGKEZDETE datetime
,C_ORAERVENYESSEGVEGE datetime
,C_TANORANKIVULIFOGLALKOZAs char(1)
,C_EGYEDINAP char(1)
,C_ISKEZZELFELVETTEGYEDINAp char(1)
,C_CSENGETESIRENDID int
,C_CSENGETESIRENDORAID int
,C_ORAKEZDETE datetime
,C_ORAVEGE datetime
,C_BONTOTT char(1)
,C_ORATULAJDONOSID int
,C_IMPORTALT char(1)
,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 #OrarendiOraTempTable
SELECT
oo.ID
,oo.C_TANARID
,tt.ID AS C_TANTARGYID
,ocs.ID AS C_OSZTALYCSOPORTID
,t.ID AS C_TEREMID
,fg.ID AS C_FOGLALKOZASID
,oo.C_HETIREND
,oo.C_HETNAPJA
,oo.C_ORASZAM
,oo.C_ORAERVENYESSEGKEZDETE
,oo.C_ORAERVENYESSEGVEGE
,oo.C_TANORANKIVULIFOGLALKOZAS
,oo.C_EGYEDINAP
,oo.C_ISKEZZELFELVETTEGYEDINAP
,oo.C_CSENGETESIRENDID
,oo.C_CSENGETESIRENDORAID
,oo.C_ORAKEZDETE
,oo.C_ORAVEGE
,oo.C_BONTOTT
,oo.C_ORATULAJDONOSID
,oo.C_IMPORTALT
,oo.C_INTEZMENYID
,oo.C_TANEVID
,oo.TOROLT
,oo.SERIAL
,oo.LASTCHANGED
,oo.CREATED
,oo.MODIFIER
,oo.CREATOR
,oo.ELOZOTANEVIREKORDID
,oo.NNID
,oo.Operation
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_ORARENDIORA_OSSZES')
WITH (
ID int '$.ID'
,C_TANARID int '$.C_TANARID'
,C_HETIREND int '$.C_HETIREND'
,C_HETNAPJA int '$.C_HETNAPJA'
,C_ORASZAM int '$.C_ORASZAM'
,C_ORAERVENYESSEGKEZDETE datetime '$.C_ORAERVENYESSEGKEZDETE'
,C_ORAERVENYESSEGVEGE datetime '$.C_ORAERVENYESSEGVEGE'
,C_TANORANKIVULIFOGLALKOZAS char(1) '$.C_TANORANKIVULIFOGLALKOZAS'
,C_EGYEDINAP char(1) '$.C_EGYEDINAP'
,C_ISKEZZELFELVETTEGYEDINAP char(1) '$.C_ISKEZZELFELVETTEGYEDINAP'
,C_CSENGETESIRENDID int '$.C_CSENGETESIRENDID'
,C_CSENGETESIRENDORAID int '$.C_CSENGETESIRENDORAID'
,C_ORAKEZDETE datetime '$.C_ORAKEZDETE'
,C_ORAVEGE datetime '$.C_ORAVEGE'
,C_BONTOTT char(1) '$.C_BONTOTT'
,C_ORATULAJDONOSID int '$.C_ORATULAJDONOSID'
,C_IMPORTALT char(1) '$.C_IMPORTALT'
,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'
,TantargyNev nvarchar(255) '$.TantargyNev'
,OsztalyCsoportNev nvarchar(255) '$.OsztalyCsoportNev'
,TeremNev nvarchar(255) '$.TeremNev'
) oo
LEFT JOIN T_TANTARGY_OSSZES tt ON
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(tt.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(oo.TantargyNev)
AND tt.C_INTEZMENYID = @pIntezmenyId
AND tt.C_TANEVID = @pTanevId
AND tt.TOROLT = 'F'
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ocs.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(oo.OsztalyCsoportNev)
AND ocs.C_INTEZMENYID = @pIntezmenyId
AND ocs.C_TANEVID = @pTanevId
AND ocs.TOROLT = 'F'
LEFT JOIN T_TEREM_OSSZES t ON
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(t.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(oo.TeremNev)
AND t.C_INTEZMENYID = @pIntezmenyId
AND t.C_TANEVID = @pTanevId
AND t.TOROLT = 'F'
LEFT JOIN T_FOGLALKOZAS_OSSZES fg ON
fg.C_OSZTALYCSOPORTID = ocs.ID
AND fg.C_TANARID = oo.C_TANARID
AND fg.C_TANTARGYID = tt.ID
AND fg.C_INTEZMENYID = @pIntezmenyId
AND fg.C_TANEVID = @pTanevId
AND fg.TOROLT = 'F'
--Órarendi órák beszúrása
SET @actualJson = ' { "ImportJson":{ "T_ORARENDIORA_OSSZES":' + (
SELECT
oo.ID
,oo.C_TANARID
,oo.C_TANTARGYID
,oo.C_OSZTALYCSOPORTID
,oo.C_TEREMID
,oo.C_FOGLALKOZASID
,oo.C_HETIREND
,oo.C_HETNAPJA
,oo.C_ORASZAM
,oo.C_ORAERVENYESSEGKEZDETE
,oo.C_ORAERVENYESSEGVEGE
,oo.C_TANORANKIVULIFOGLALKOZAS
,oo.C_EGYEDINAP
,oo.C_ISKEZZELFELVETTEGYEDINAP
,oo.C_CSENGETESIRENDID
,oo.C_CSENGETESIRENDORAID
,oo.C_ORAKEZDETE
,oo.C_ORAVEGE
,oo.C_BONTOTT
,oo.C_ORATULAJDONOSID
,oo.C_IMPORTALT
,oo.C_INTEZMENYID
,oo.C_TANEVID
,oo.TOROLT
,oo.SERIAL
,oo.LASTCHANGED
,oo.CREATED
,oo.MODIFIER
,oo.CREATOR
,oo.ELOZOTANEVIREKORDID
,oo.NNID
,oo.Operation
FROM #OrarendiOraTempTable AS oo
FOR JSON PATH,INCLUDE_NULL_VALUES
)
SET @actualJson = @actualJson + ' } }'
--NOTE: A törlés azért false, mert a T_ORARENDIORA_OSSZES view-ból korábban elvégeztük a törlést, mivel egyéb feltélek is kellettek hozzá, ami nem szerepel a uspDynamicImport-ban.
EXECUTE uspDynamicImport @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 0
DROP TABLE IF EXISTS #OrarendiOraTempTable
--NOTE: Update-elnünk kell a órarendi óráknak a groud id-ját!
UPDATE oo SET
oo.C_ORARENDIORAGROUPID = ID
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.C_INTEZMENYID = @pIntezmenyId
AND oo.C_TANEVID = @pTanevId
AND oo.TOROLT = 'F'
AND oo.C_IMPORTALT = 'T'
AND ((@pIsNapirendImport = 0 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'F')
OR (@pIsNapirendImport = 1 AND oo.C_TANORANKIVULIFOGLALKOZAS = 'T'))
END
GO

View file

@ -0,0 +1,444 @@
DROP PROCEDURE IF EXISTS uspTantargyfelosztasImport
GO
CREATE PROCEDURE uspTantargyfelosztasImport
@pIntezmenyId int
,@pTanevId int
,@pUserId int
,@pImportJson nvarchar(max)
,@pIsTorles bit
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@tableNameList nvarchar(2000) = 'T_TANTARGY_OSSZES,T_OSZTALYCSOPORT_OSSZES'
,@actualJson nvarchar(max) = ''
,@lastChangedDateTime datetime = GETDATE()
--Ha törlés van, akkor a kapcsolódások törlésével kell kezdenünk!
IF (@pIsTorles = 1) BEGIN
--Foglalkozás kapcsolatainak törlése
UPDATE oo SET
oo.C_FOGLALKOZASID = NULL
,oo.SERIAL = oo.SERIAL + 1
,oo.LASTCHANGED = @lastChangedDateTime
,oo.MODIFIER = @pUserId
FROM T_ORARENDIORA_OSSZES oo
WHERE oo.C_INTEZMENYID = @pIntezmenyId
AND oo.C_TANEVID = @pTanevId
AND oo.TOROLT = 'F'
AND EXISTS (
SELECT TOP 1 ID
FROM T_FOGLALKOZAS_OSSZES fg
WHERE fg.ID = oo.C_FOGLALKOZASID
AND fg.C_INTEZMENYID = @pIntezmenyId
AND fg.C_TANEVID = @pTanevId
AND fg.TOROLT = 'F'
AND fg.C_IMPORTALT = 'T'
)
UPDATE tao SET
tao.C_FOGLALKOZASID = NULL
,tao.SERIAL = tao.SERIAL + 1
,tao.LASTCHANGED = @lastChangedDateTime
,tao.MODIFIER = @pUserId
FROM T_TANITASIORA_OSSZES tao
WHERE tao.C_INTEZMENYID = @pIntezmenyId
AND tao.C_TANEVID = @pTanevId
AND tao.TOROLT = 'F'
AND EXISTS (
SELECT TOP 1 ID
FROM T_FOGLALKOZAS_OSSZES fg
WHERE fg.ID = tao.C_FOGLALKOZASID
AND fg.C_INTEZMENYID = @pIntezmenyId
AND fg.C_TANEVID = @pTanevId
AND fg.TOROLT = 'F'
AND fg.C_IMPORTALT = 'T'
)
UPDATE tms SET
tms.C_TARGYMULASZTASSTATISZTIKAIID = NULL
,tms.SERIAL = tms.SERIAL + 1
,tms.LASTCHANGED = @lastChangedDateTime
,tms.MODIFIER = @pUserId
FROM T_TANULOTARGYMULASZTASSTATISZT_OSSZES tms
WHERE tms.C_INTEZMENYID = @pIntezmenyId
AND tms.C_TANEVID = @pTanevId
AND tms.TOROLT = 'F'
AND EXISTS (
SELECT TOP 1 ID
FROM T_FOGLALKOZAS_OSSZES fg
WHERE fg.ID = tms.C_TARGYMULASZTASSTATISZTIKAIID
AND fg.C_INTEZMENYID = @pIntezmenyId
AND fg.C_TANEVID = @pTanevId
AND fg.TOROLT = 'F'
AND fg.C_IMPORTALT = 'T'
)
DELETE tfg
FROM T_TEREM_FOGLALKOZAS tfg
WHERE EXISTS (
SELECT TOP 1 ID
FROM T_FOGLALKOZAS_OSSZES fg
WHERE fg.ID = tfg.C_FOGLALKOZASID
AND fg.C_INTEZMENYID = @pIntezmenyId
AND fg.C_TANEVID = @pTanevId
AND fg.TOROLT = 'F'
AND fg.C_IMPORTALT = 'T'
)
END
--NOTE: A törlés azért false, mert a T_TANTARGY_OSSZES és a T_OSZTALYCSOPORT_OSSZES view-ból nem törlünk importnál!
EXECUTE uspDynamicImportJsonSplit @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @pImportJson, @pIsTorles = 0, @pIsSubTable = 0, @pTableNameList = @tableNameList
--NOTE: Osztály temp tábla incializálása
CREATE TABLE #OsztalyTempTable (
ID int
,C_TECHNIKAIOSZTALY char(1)
,C_GYOGYPEDAGOGIAI char(1)
,C_KETTANNYELVU char(1)
,C_LOGOPEDIAI char(1)
,C_NEMZETISEGI char(1)
,C_NYELVIELOKESZITO char(1)
,C_SPORT char(1)
,C_ALINTEZMENYID int
,C_ALTANEVID int
,TOROLT char(1)
,SERIAL int
,LASTCHANGED datetime
,CREATED datetime
,MODIFIER int
,CREATOR int
,ELOZOTANEVIREKORDID int
,NNID int
,Operation int
)
INSERT INTO #OsztalyTempTable
SELECT
ocs.ID
,o.C_TECHNIKAIOSZTALY
,o.C_GYOGYPEDAGOGIAI
,o.C_KETTANNYELVU
,o.C_LOGOPEDIAI
,o.C_NEMZETISEGI
,o.C_NYELVIELOKESZITO
,o.C_SPORT
,o.C_ALINTEZMENYID
,o.C_ALTANEVID
,o.TOROLT
,o.SERIAL
,o.LASTCHANGED
,o.CREATED
,o.MODIFIER
,o.CREATOR
,o.ELOZOTANEVIREKORDID
,o.NNID
,o.Operation
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_OSZTALY_OSSZES')
WITH (
ID int '$.ID'
,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'
,Operation int '$.Operation'
,OsztalyCsoportNev nvarchar(255) '$.OsztalyCsoportNev'
) o
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ocs.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(o.OsztalyCsoportNev)
AND ocs.C_INTEZMENYID = @pIntezmenyId
AND ocs.C_TANEVID = @pTanevId
AND ocs.TOROLT = 'F'
AND o.ID IS NULL
--NOTE: Csoport temp tábla incializálása
CREATE TABLE #CsoportTempTable (
ID int
,C_TIPUSA int
,C_OSZTALYBONTASID int
,C_ALINTEZMENYID int
,C_ALTANEVID int
,TOROLT char(1)
,SERIAL int
,LASTCHANGED datetime
,CREATED datetime
,MODIFIER int
,CREATOR int
,ELOZOTANEVIREKORDID int
,NNID int
,Operation int
)
INSERT INTO #CsoportTempTable
SELECT
ocs.ID
,cs.C_TIPUSA
,ob.ID
,cs.C_ALINTEZMENYID
,cs.C_ALTANEVID
,cs.TOROLT
,cs.SERIAL
,cs.LASTCHANGED
,cs.CREATED
,cs.MODIFIER
,cs.CREATOR
,cs.ELOZOTANEVIREKORDID
,cs.NNID
,cs.Operation
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'
,ELOZOTANEVIREKORDID int '$.ELOZOTANEVIREKORDID'
,NNID int '$.NNID'
,Operation int '$.Operation'
,OsztalyCsoportNev nvarchar(255) '$.OsztalyCsoportNev'
,OsztalybontasNev nvarchar(255) '$.OsztalybontasNev'
) cs
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ocs.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(cs.OsztalyCsoportNev)
AND ocs.C_INTEZMENYID = @pIntezmenyId
AND ocs.C_TANEVID = @pTanevId
AND ocs.TOROLT = 'F'
AND cs.ID IS NULL
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ob ON
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ob.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(cs.OsztalybontasNev)
AND ob.C_INTEZMENYID = @pIntezmenyId
AND ob.C_TANEVID = @pTanevId
AND ob.TOROLT = 'F'
AND cs.ID IS NULL
--NOTE: Foglalkozas temp tábla incializálása
CREATE TABLE #FoglalkozasTempTable (
ID int
,C_TANARID int
,C_TANTARGYID int
,C_OSZTALYCSOPORTID int
,C_FOGLALKOZASTIPUSA int
,C_ORASZAM numeric(10,2)
,C_NEV nvarchar(255)
,C_ERTEKELESKELL char(1)
,C_MULASZTASKELL char(1)
,C_TANARFELVEHETI char(1)
,C_ISOSSZEVONTORA char(1)
,C_IMPORTALT char(1)
,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 #FoglalkozasTempTable
SELECT
fg.ID
,fg.C_TANARID
,tt.ID
,ocs.ID
,fg.C_FOGLALKOZASTIPUSA
,fg.C_ORASZAM
,fg.C_NEV
,fg.C_ERTEKELESKELL
,fg.C_MULASZTASKELL
,fg.C_TANARFELVEHETI
,fg.C_ISOSSZEVONTORA
,fg.C_IMPORTALT
,fg.C_INTEZMENYID
,fg.C_TANEVID
,fg.TOROLT
,fg.SERIAL
,fg.LASTCHANGED
,fg.CREATED
,fg.MODIFIER
,fg.CREATOR
,fg.ELOZOTANEVIREKORDID
,fg.NNID
,fg.Operation
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_FOGLALKOZAS_OSSZES')
WITH (
ID int '$.ID'
,C_TANARID int '$.C_TANARID'
,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_ISOSSZEVONTORA char(1) '$.C_ISOSSZEVONTORA'
,C_IMPORTALT char(1) '$.C_IMPORTALT'
,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'
,TantargyNev nvarchar(255) '$.TantargyNev'
,OsztalyCsoportNev nvarchar(255) '$.OsztalyCsoportNev'
) fg
LEFT JOIN T_TANTARGY_OSSZES tt ON
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(tt.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(fg.TantargyNev)
AND tt.C_INTEZMENYID = @pIntezmenyId
AND tt.C_TANEVID = @pTanevId
AND tt.TOROLT = 'F'
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ocs.C_NEV),CHAR(160),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)))) = LOWER(fg.OsztalyCsoportNev)
AND ocs.C_INTEZMENYID = @pIntezmenyId
AND ocs.C_TANEVID = @pTanevId
AND ocs.TOROLT = 'F'
--Osztályok beszúrása
SET @actualJson = ' { "ImportJson":{ "T_OSZTALY_OSSZES":' + (
SELECT
o.ID
,o.C_TECHNIKAIOSZTALY
,o.C_GYOGYPEDAGOGIAI
,o.C_KETTANNYELVU
,o.C_LOGOPEDIAI
,o.C_NEMZETISEGI
,o.C_NYELVIELOKESZITO
,o.C_SPORT
,o.C_ALINTEZMENYID
,o.C_ALTANEVID
,o.TOROLT
,o.SERIAL
,o.LASTCHANGED
,o.CREATED
,o.MODIFIER
,o.CREATOR
,o.ELOZOTANEVIREKORDID
,o.NNID
,o.Operation
FROM #OsztalyTempTable AS o
FOR JSON PATH,INCLUDE_NULL_VALUES
)
SET @actualJson = @actualJson + ' } }'
--NOTE: A törlés azért false, mert a T_OSZTALY_OSSZES view-ból nem törlünk importnál!
EXECUTE uspDynamicImport @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 1
--Csoportok beszúrása
SET @actualJson = ' { "ImportJson":{ "T_CSOPORT_OSSZES":' + (
SELECT
cs.ID
,cs.C_TIPUSA
,cs.C_OSZTALYBONTASID
,cs.C_ALINTEZMENYID
,cs.C_ALTANEVID
,cs.TOROLT
,cs.SERIAL
,cs.LASTCHANGED
,cs.CREATED
,cs.MODIFIER
,cs.CREATOR
,cs.ELOZOTANEVIREKORDID
,cs.NNID
,cs.Operation
FROM #CsoportTempTable AS cs
FOR JSON PATH,INCLUDE_NULL_VALUES
)
SET @actualJson = @actualJson + ' } }'
--NOTE: A törlés azért false, mert a T_CSOPORT_OSSZES view-ból nem törlünk importnál!
EXECUTE uspDynamicImport @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 1
--Foglalkozások beszúrása
SET @actualJson = ' { "ImportJson":{ "T_FOGLALKOZAS_OSSZES":' + (
SELECT
fg.ID
,fg.C_TANARID
,fg.C_TANTARGYID
,fg.C_OSZTALYCSOPORTID
,fg.C_FOGLALKOZASTIPUSA
,fg.C_ORASZAM
,fg.C_NEV
,fg.C_ERTEKELESKELL
,fg.C_MULASZTASKELL
,fg.C_TANARFELVEHETI
,fg.C_ISOSSZEVONTORA
,fg.C_IMPORTALT
,fg.C_INTEZMENYID
,fg.C_TANEVID
,fg.TOROLT
,fg.SERIAL
,fg.LASTCHANGED
,fg.CREATED
,fg.MODIFIER
,fg.CREATOR
,fg.ELOZOTANEVIREKORDID
,fg.NNID
,fg.Operation
FROM #FoglalkozasTempTable AS fg
FOR JSON PATH,INCLUDE_NULL_VALUES
)
SET @actualJson = @actualJson + ' } }'
EXECUTE uspDynamicImport @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = @pIsTorles, @pIsSubTable = 0
END
GO