357 lines
12 KiB
Transact-SQL
357 lines
12 KiB
Transact-SQL
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
|
|
|