314 lines
10 KiB
Transact-SQL
314 lines
10 KiB
Transact-SQL
-- =============================================
|
|
-- Description: <Gondviselö import>
|
|
-- =============================================
|
|
DROP PROCEDURE IF EXISTS uspGondviseloImport
|
|
GO
|
|
|
|
CREATE PROCEDURE uspGondviseloImport
|
|
@pIntezmenyId int
|
|
,@pTanevId int
|
|
,@pUserId int
|
|
,@pImportJson nvarchar(MAX)
|
|
AS BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE
|
|
@tableNameList nvarchar(2000) = 'T_GONDVISELO_OSSZES'
|
|
,@actualJson nvarchar(MAX) = ''
|
|
,@lastChangedDateTime datetime = GETDATE()
|
|
|
|
--NOTE: A törlés azért false, mert a gondviselö 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: Telefon temp tábla incializálása
|
|
CREATE TABLE #TelefonTempTable (
|
|
ID int
|
|
,C_TELEFONTIPUSA int
|
|
,C_TELEFONSZAM nvarchar(100)
|
|
,C_LEIRAS nvarchar(50)
|
|
,C_ALAPERTELMEZETT char(1)
|
|
,C_ISPUBLIC char(1)
|
|
,C_FELHASZNALOID int
|
|
,C_GONDVISELOID 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
|
|
#TelefonTempTable
|
|
SELECT
|
|
tf.ID
|
|
,tf.C_TELEFONTIPUSA
|
|
,tf.C_TELEFONSZAM
|
|
,tf.C_LEIRAS
|
|
,tf.C_ALAPERTELMEZETT
|
|
,tf.C_ISPUBLIC
|
|
,tf.C_FELHASZNALOID
|
|
,g.ID
|
|
|
|
,tf.C_INTEZMENYID
|
|
,tf.C_TANEVID
|
|
,tf.TOROLT
|
|
,tf.SERIAL
|
|
,tf.LASTCHANGED
|
|
,tf.CREATED
|
|
,tf.MODIFIER
|
|
,tf.CREATOR
|
|
,tf.ELOZOTANEVIREKORDID
|
|
,tf.NNID
|
|
,tf.Operation
|
|
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_TELEFON_OSSZES')
|
|
WITH (
|
|
ID int '$.ID'
|
|
,C_TELEFONTIPUSA int '$.C_TELEFONTIPUSA'
|
|
,C_TELEFONSZAM nvarchar(100) '$.C_TELEFONSZAM'
|
|
,C_LEIRAS nvarchar(50) '$.C_LEIRAS'
|
|
,C_ALAPERTELMEZETT char(1) '$.C_ALAPERTELMEZETT'
|
|
,C_ISPUBLIC char(1) '$.C_ISPUBLIC'
|
|
,C_FELHASZNALOID int '$.C_FELHASZNALOID'
|
|
|
|
,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'
|
|
|
|
,Nev nvarchar(200) '$.Nev'
|
|
,RokonsagiFokId int '$.RokonsagiFokId'
|
|
) tf
|
|
LEFT JOIN T_GONDVISELO_OSSZES g 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(g.C_NEV),char(160),char(32)),char(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',char(32)))) = LOWER(tf.Nev)
|
|
AND g.C_ROKONSAGFOKA = tf.RokonsagiFokId
|
|
AND g.C_TANULOID = tf.C_FELHASZNALOID
|
|
AND g.C_INTEZMENYID = tf.C_INTEZMENYID
|
|
AND g.C_TANEVID = tf.C_TANEVID
|
|
AND g.TOROLT = 'F'
|
|
|
|
--NOTE: Email temp tábla incializálása
|
|
CREATE TABLE #EmailTempTable (
|
|
ID int
|
|
,C_EMAILTIPUSA int
|
|
,C_EMAILCIM nvarchar(200)
|
|
,C_ALAPERTELMEZETT char(1)
|
|
,C_ISPUBLIC char(1)
|
|
,C_FELHASZNALOID int
|
|
,C_GONDVISELOID 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
|
|
#EmailTempTable
|
|
SELECT
|
|
e.ID
|
|
,e.C_EMAILTIPUSA
|
|
,e.C_EMAILCIM
|
|
,e.C_ALAPERTELMEZETT
|
|
,e.C_ISPUBLIC
|
|
,e.C_FELHASZNALOID
|
|
,g.ID
|
|
|
|
,e.C_INTEZMENYID
|
|
,e.C_TANEVID
|
|
,e.TOROLT
|
|
,e.SERIAL
|
|
,e.LASTCHANGED
|
|
,e.CREATED
|
|
,e.MODIFIER
|
|
,e.CREATOR
|
|
,e.ELOZOTANEVIREKORDID
|
|
,e.NNID
|
|
,e.Operation
|
|
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_EMAIL_OSSZES')
|
|
WITH (
|
|
ID int '$.ID'
|
|
,C_EMAILTIPUSA int '$.C_EMAILTIPUSA'
|
|
,C_EMAILCIM nvarchar(200) '$.C_EMAILCIM'
|
|
,C_ALAPERTELMEZETT char(1) '$.C_ALAPERTELMEZETT'
|
|
,C_ISPUBLIC char(1) '$.C_ISPUBLIC'
|
|
,C_FELHASZNALOID int '$.C_FELHASZNALOID'
|
|
|
|
,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'
|
|
|
|
,Nev nvarchar(200) '$.Nev'
|
|
,RokonsagiFokId int '$.RokonsagiFokId'
|
|
) e
|
|
LEFT JOIN T_GONDVISELO_OSSZES g 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(g.C_NEV),char(160),char(32)),char(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',char(32)))) = LOWER(e.Nev)
|
|
AND g.C_ROKONSAGFOKA = e.RokonsagiFokId
|
|
AND g.C_TANULOID = e.C_FELHASZNALOID
|
|
AND g.C_INTEZMENYID = e.C_INTEZMENYID
|
|
AND g.C_TANEVID = e.C_TANEVID
|
|
AND g.TOROLT = 'F'
|
|
|
|
--NOTE: Ha van bejövõ telefon a json-ben, akkor az ehhez a telefonhoz tartozó felhasználó összes telefonjának C_ALAPERTELMEZETT mezõjét false-ra állítjuk és a bejövõ lesz a egyedül true!
|
|
UPDATE tf SET
|
|
tf.C_ALAPERTELMEZETT = 'F'
|
|
,tf.SERIAL = tf.SERIAL + 1
|
|
,tf.LASTCHANGED = @lastChangedDateTime
|
|
,tf.MODIFIER = @pUserId
|
|
FROM T_FELHASZNALO_OSSZES fh
|
|
INNER JOIN #TelefonTempTable ON
|
|
#TelefonTempTable.C_INTEZMENYID = fh.C_INTEZMENYID
|
|
AND #TelefonTempTable.C_TANEVID = fh.C_TANEVID
|
|
AND #TelefonTempTable.TOROLT = 'F'
|
|
AND #TelefonTempTable.C_FELHASZNALOID = fh.ID
|
|
INNER JOIN T_TELEFON_OSSZES tf ON
|
|
tf.C_INTEZMENYID = fh.C_INTEZMENYID
|
|
AND tf.C_TANEVID = fh.C_TANEVID
|
|
AND tf.TOROLT = 'F'
|
|
AND tf.C_FELHASZNALOID = fh.ID
|
|
AND tf.C_ALAPERTELMEZETT = 'T'
|
|
AND tf.C_GONDVISELOID = #TelefonTempTable.C_GONDVISELOID
|
|
WHERE fh.C_INTEZMENYID = @pIntezmenyId
|
|
AND fh.C_TANEVID = @pTanevId
|
|
AND fh.TOROLT = 'F'
|
|
|
|
--NOTE: Ha van bejövõ email a json-ben, akkor az ehhez a email-hez tartozó felhasználó összes email-jének C_ALAPERTELMEZETT mezõjét false-ra állítjuk és a bejövõ lesz a egyedül true!
|
|
UPDATE e SET
|
|
e.C_ALAPERTELMEZETT = 'F'
|
|
,e.SERIAL = e.SERIAL + 1
|
|
,e.LASTCHANGED = @lastChangedDateTime
|
|
,e.MODIFIER = @pUserId
|
|
FROM T_FELHASZNALO_OSSZES fh
|
|
INNER JOIN #EmailTempTable ON
|
|
#EmailTempTable.C_INTEZMENYID = fh.C_INTEZMENYID
|
|
AND #EmailTempTable.C_TANEVID = fh.C_TANEVID
|
|
AND #EmailTempTable.TOROLT = 'F'
|
|
AND #EmailTempTable.C_FELHASZNALOID = fh.ID
|
|
INNER JOIN T_EMAIL_OSSZES e ON
|
|
e.C_INTEZMENYID = fh.C_INTEZMENYID
|
|
AND e.C_TANEVID = fh.C_TANEVID
|
|
AND e.TOROLT = 'F'
|
|
AND e.C_FELHASZNALOID = fh.ID
|
|
AND e.C_ALAPERTELMEZETT = 'T'
|
|
AND e.C_GONDVISELOID = #EmailTempTable.C_GONDVISELOID
|
|
WHERE fh.C_INTEZMENYID = @pIntezmenyId
|
|
AND fh.C_TANEVID = @pTanevId
|
|
AND fh.TOROLT = 'F'
|
|
|
|
--Telefonok beszúrása
|
|
SET @actualJson = ' { "ImportJson":{ "T_TELEFON_OSSZES":' + (
|
|
SELECT
|
|
tf.ID
|
|
,tf.C_TELEFONTIPUSA
|
|
,tf.C_TELEFONSZAM
|
|
,tf.C_LEIRAS
|
|
,tf.C_ALAPERTELMEZETT
|
|
,tf.C_ISPUBLIC
|
|
,tf.C_FELHASZNALOID
|
|
,tf.C_GONDVISELOID
|
|
|
|
,tf.C_INTEZMENYID
|
|
,tf.C_TANEVID
|
|
,tf.TOROLT
|
|
,tf.SERIAL
|
|
,tf.LASTCHANGED
|
|
,tf.CREATED
|
|
,tf.MODIFIER
|
|
,tf.CREATOR
|
|
,tf.ELOZOTANEVIREKORDID
|
|
,tf.NNID
|
|
,tf.Operation
|
|
FROM #TelefonTempTable AS tf
|
|
FOR JSON PATH,INCLUDE_NULL_VALUES
|
|
)
|
|
|
|
SET @actualJson = @actualJson + ' } }'
|
|
|
|
EXECUTE [dbo].[uspDynamicImport] @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 0
|
|
|
|
--Emailek beszúrása
|
|
SET @actualJson = ' { "ImportJson":{ "T_EMAIL_OSSZES":' + (
|
|
SELECT
|
|
e.ID
|
|
,e.C_EMAILTIPUSA
|
|
,e.C_EMAILCIM
|
|
,e.C_ALAPERTELMEZETT
|
|
,e.C_ISPUBLIC
|
|
,e.C_FELHASZNALOID
|
|
,e.C_GONDVISELOID
|
|
|
|
,e.C_INTEZMENYID
|
|
,e.C_TANEVID
|
|
,e.TOROLT
|
|
,e.SERIAL
|
|
,e.LASTCHANGED
|
|
,e.CREATED
|
|
,e.MODIFIER
|
|
,e.CREATOR
|
|
,e.ELOZOTANEVIREKORDID
|
|
,e.NNID
|
|
,e.Operation
|
|
FROM #EmailTempTable AS e
|
|
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: Vissza kell térnünk az ID-kkal a fájlletöltéshez és az emailküldéshez!
|
|
SELECT g.ID
|
|
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_GONDVISELO_OSSZES')
|
|
WITH (
|
|
C_NEV nvarchar(200) '$.C_NEV'
|
|
,C_ROKONSAGFOKA int '$.C_ROKONSAGFOKA'
|
|
,C_TANULOID int '$.C_TANULOID'
|
|
,C_INTEZMENYID int '$.C_INTEZMENYID'
|
|
,C_TANEVID int '$.C_TANEVID'
|
|
) GondviseloJsonData
|
|
LEFT JOIN T_GONDVISELO_OSSZES g 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(REPLACE(LOWER(g.C_NEV),char(160),char(32)),char(9),char(32)),char(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',char(32)))) = LOWER(GondviseloJsonData.C_NEV)
|
|
AND g.C_ROKONSAGFOKA = GondviseloJsonData.C_ROKONSAGFOKA
|
|
AND g.C_TANULOID = GondviseloJsonData.C_TANULOID
|
|
AND g.C_INTEZMENYID = GondviseloJsonData.C_INTEZMENYID
|
|
AND g.C_TANEVID = GondviseloJsonData.C_TANEVID
|
|
AND g.TOROLT = 'F'
|
|
END
|
|
|
|
|
|
GO
|
|
|