kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20170827005527_KIRImportTanuloSP/sp_KIRImportTanulok.sql
2024-03-13 00:33:46 +01:00

531 lines
18 KiB
Transact-SQL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('dbo.sp_KIRImportTanulok') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_KIRImportTanulok]
END
GO
CREATE PROCEDURE [dbo].[sp_KIRImportTanulok]
-- Add the parameters for the stored procedure here
@TanulokXML as XML,
@intezmenyID int,
@tanevID int,
@userId int
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@TantervID int,
@userNameGenerateMode int
DECLARE @linkTable TABLE (
tempId int,
insertedId int,
act varchar(10)
)
-- XML paraméter értelmezése
SELECT ID = Tanulo.value('(ID)[1]', 'int'),
OktatasiAzonosito = Tanulo.value('(OktatasiAzonosito)[1]', 'varchar(15)'),
KretaKod = Tanulo.value('(KretaKod)[1]', 'varchar(6)'),
VezetekNev = Tanulo.value('(ViseltNevVezetekNev)[1]', 'nvarchar(50)'), UtoNev = Tanulo.value('(ViseltNevKeresztNev)[1]', 'nvarchar(50)'),
Elotag = Tanulo.value('(ViseltNevElotag)[1]', 'nvarchar(10)'), NevSorrend = Tanulo.value('(ViseltNevNevSorrend)[1]', 'char(1)'),
AnyjaNeveElotag = Tanulo.value('(AnyjaNeveElotag)[1]', 'nvarchar(10)'), AnyjaNeveVezetekNev = Tanulo.value('(AnyjaNeveVezetekNev)[1]', 'nvarchar(50)'),
AnyjaNeveKeresztNev = Tanulo.value('(AnyjaNeveKeresztNev)[1]', 'nvarchar(50)'), AnyjaNeveNevSorrend = Tanulo.value('(AnyjaNeveNevSorrend)[1]', 'nvarchar(50)'),
SzuletesiDatum = Tanulo.value('(SzuletesiDatum)[1]', 'date'), SzuletesiHely = Tanulo.value('(SzuletesiHely)[1]', 'nvarchar(255)'),
SzuletesiOrszag = Tanulo.value('(SzuletesiOrszag)[1]', 'int'), Allampolgarsag = Tanulo.value('(Allampolgarsag)[1]', 'int'),
Nem = Tanulo.value('(Nem)[1]', 'int'), TAJSzam = Tanulo.value('(TAJSzam)[1]', 'nvarchar(15)'),
AllandoLakcimIranyitoSzam = Tanulo.value('(AllandoLakcimIranyitoSzam)[1]', 'nvarchar(10)'), AllandoLakcimTelepules = Tanulo.value('(AllandoLakcimTelepules)[1]', 'nvarchar(255)'),
AllandoLakcimKozteruletNev = Tanulo.value('(AllandoLakcimKozteruletNev)[1]', 'nvarchar(255)'), AllandoLakcimKozteruletJelleg = Tanulo.value('number((AllandoLakcimKozteruletJelleg)[1])', 'int'),
AllandoLakcimHazszam = Tanulo.value('(AllandoLakcimHazszam)[1]', 'nvarchar(20)'), TartozkodasiCimTelepules = Tanulo.value('(TartozkodasiCimTelepules)[1]', 'nvarchar(255)'),
TartozkodasiCimKozteruletNev = Tanulo.value('(TartozkodasiCimKozteruletNev)[1]', 'nvarchar(255)'), TartozkodasiCimKozteruletJelleg = Tanulo.value('number((TartozkodasiCimKozteruletJelleg)[1])', 'int'),
TartozkodasiCimHazszam = Tanulo.value('(TartozkodasiCimHazszam)[1]', 'nvarchar(20)'), TartozkodasiCimIranyitoszam = Tanulo.value('(TartozkodasiCimIranyitoSzam)[1]', 'nvarchar(20)'),
TankotelezettsegVege = Tanulo.value('(TankotelezettsegVege)[1]', 'date'),
TankotelezettsegetTeljesito = Tanulo.value('(TankotelezettsegetTeljesito)[1]', 'char'), SajatosNevelesIgenyu = Tanulo.value('(SajatosNevelesIgenyu)[1]', 'char'),
BeilleszkedesselKuzd = Tanulo.value('(BeilleszkedesselKuzd)[1]', 'char'), OMAzonosito = Tanulo.value('(OMAzonosito)[1]', 'nvarchar(20)'),
JogviszonyStatusza = Tanulo.value('(JogviszonyStatusza)[1]', 'nvarchar(50)'), JogviszonyKezdete = Tanulo.value('(JogviszonyKezdete)[1]', 'date'),
JogviszonyVarBefejezese = Tanulo.value('(JogviszonyVarBefejezese)[1]', 'date'), JogviszonyJellege = Tanulo.value('(JogviszonyJellege)[1]', 'nvarchar(50)'),
Vendegtanulo = Tanulo.value('(Vendegtanulo)[1]', 'char'), Magantanulo = Tanulo.value('(Magantanulo)[1]', 'char'),
Osztaly = Tanulo.value('(Osztaly)[1]', 'nvarchar(255)'),
KeresesiNev = Tanulo.value('(KeresesiNev)[1]', 'nvarchar(255)'), NyomtatasiNev = ltrim(Tanulo.value('(NyomtatasiNev)[1]', 'nvarchar(255)')),
Telefonszam = Tanulo.value('(Telefonszam)[1]', 'nvarchar(45)'),
AnyjaNeve = Tanulo.value('(AnyjaNeve)[1]', 'nvarchar(255)'),
0 AS isTanulo,
0 TanuloID
INTO #tempTanulok
FROM @TanulokXML.nodes('/KIRTanulok/ImportaltTanulok/Tanulo') as Tanulok(Tanulo)
-- A létező felhasználók ID-ját kitöltjük, és az isTanulot is update-eljük
UPDATE t
SET t.TanuloID = fh.ID,
t.isTanulo = IIF(tn.ID IS NULL, 0, 1)
FROM #tempTanulok t
INNER JOIN T_FELHASZNALO_OSSZES fh ON
t.NyomtatasiNev = fh.C_NYOMTATASINEV AND
t.SzuletesiDatum = fh.C_SZULETESIDATUM AND
t.SzuletesiHely = fh.C_SZULETESIHELY AND
t.AnyjaNeve = fh.C_ANYJANEVE
LEFT JOIN T_TANULO_OSSZES tn ON tn.ID = fh.ID
WHERE fh.TOROLT = 'F' AND fh.C_TANEVID = @tanevID AND fh.C_INTEZMENYID = @intezmenyID
BEGIN TRY
BEGIN TRANSACTION
DECLARE @CREATED DateTime
SET @CREATED = (SELECT GETDATE())
-- FELHASZNÁLÓK INSERTJE VAGY UPDATE-JE AKA MERGE
MERGE T_FELHASZNALO_OSSZES trg
USING #tempTanulok src ON src.TanuloID = trg.ID AND trg.C_TANEVID = @tanevID
WHEN MATCHED AND src.isTanulo = 1 THEN
UPDATE SET
trg.C_NEME = src.Nem,
trg.C_SZULETESIDATUM = src.SzuletesiDatum,
trg.C_SZULETESINEV = src.VezetekNev + ' ' + src.UtoNev,
trg.C_ANYJANEVE = src.AnyjaNeveVezetekNev + ' ' + src.AnyjaNeveKeresztNev,
trg.C_SZULETESIHELY = src.SzuletesiHely,
trg.C_ALLAMPOLGARSAGA = src.Allampolgarsag,
trg.C_KERESESINEV = src.KeresesiNev,
trg.C_SZULETESIORSZAG = src.SzuletesiOrszag,
trg.C_SZULETESINEVSORREND = src.NevSorrend,
trg.C_ANYJANEVESORREND = src.AnyjaNeveNevSorrend,
trg.C_ALAPERTELMEZETTLCID = 1038,
trg.C_SZULETESINEVELVALASZTO = len(src.VezetekNev),
trg.C_ANYJANEVEELVALASZTO = len(src.AnyjaNeveVezetekNev),
trg.C_NYOMTATASINEV = src.NyomtatasiNev,
trg.C_UTONEV = src.UtoNev,
trg.C_VEZETEKNEV = src.VezetekNev,
trg.C_ELOTAG = src.Elotag,
trg.C_NEVSORREND = src.NevSorrend,
trg.C_NYILVANTARTASKEZDETE = getdate(),
trg.C_OMKOD = src.OMAzonosito,
trg.C_KRETAKOD = src.KretaKod,
trg.TOROLT = 'F',
trg.SERIAL = trg.SERIAL + 1,
trg.LASTCHANGED = GETDATE(),
trg.MODIFIER = @userId,
trg.C_OKTATASIAZONOSITO = src.OktatasiAzonosito
WHEN NOT MATCHED THEN
INSERT (
C_NEME
,C_SZULETESIDATUM
,C_SZULETESINEV
,C_ANYJANEVE
,C_SZULETESIHELY
,C_TAJSZAM
,C_ALLAMPOLGARSAGA
,C_LEIRAS
,C_KERESESINEV
,C_SZULETESIORSZAG
,C_SZULETESINEVSORREND
,C_ANYJANEVESORREND
,C_ALAPERTELMEZETTLCID
,C_SZULETESINEVELVALASZTO
,C_ANYJANEVEELVALASZTO
,C_NYOMTATASINEV
,C_UTONEV
,C_VEZETEKNEV
,C_ELOTAG
,C_NEVSORREND
,C_NYILVANTARTASKEZDETE
,C_OKTATASIAZONOSITO
,C_OMKOD
,C_KRETAKOD
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR)
VALUES (
src.Nem
,src.SzuletesiDatum
,src.VezetekNev + ' ' + src.UtoNev
,src.AnyjaNeveVezetekNev + ' ' + src.AnyjaNeveKeresztNev
,src.SzuletesiHely
,src.TAJSzam
,src.Allampolgarsag
,src.JogviszonyJellege
,src.KeresesiNev
,src.SzuletesiOrszag
,src.NevSorrend
,src.AnyjaNeveNevSorrend
,1038
,len(src.VezetekNev)
,len(src.AnyjaNeveVezetekNev)
,src.NyomtatasiNev
,src.UtoNev
,src.VezetekNev
,src.Elotag
,src.NevSorrend
,src.JogviszonyKezdete
,src.OktatasiAzonosito
,src.OMAzonosito
,src.KretaKod
,@intezmenyID
,@tanevID
,'F'
,1
,NULL
,@CREATED
,NULL
,@userId
)
OUTPUT INSERTED.ID, src.ID, $action
INTO @linkTable(insertedID, tempId, act);
SET @TantervID = (SELECT MAX(ID) FROM T_TANTERV_OSSZES WHERE C_TANEVID = @tanevID AND TOROLT = 'F')
MERGE T_TANULO_OSSZES trg
USING (
SELECT t.*, l.insertedId AS insertedID
FROM #tempTanulok t
INNER JOIN @linkTable l ON t.ID = l.tempID
) src ON src.TanuloID = trg.ID AND trg.C_ALTANEVID = @tanevID AND src.isTanulo = 1
WHEN MATCHED THEN
UPDATE SET
trg.C_TANKOTELEZETTSEGVEGE = src.TankotelezettsegVege,
trg.C_TANKOTELEZETT = src.TankotelezettsegetTeljesito,
trg.C_SAJATOSNEVELESU = src.SajatosNevelesIgenyu,
trg.C_BTMPROBLEMAS = src.BeilleszkedesselKuzd,
trg.C_JOGVISZONYVARHATOBEFEJEZESE = src.JogviszonyVarBefejezese,
trg.C_VENDEG = src.Vendegtanulo,
trg.C_MAGANTANULO = src.Magantanulo,
trg.C_JOGVISZONYATSZUNETELTETO = src.JogviszonyStatusza,
trg.C_FELVETELTANEVEID = @tanevID,
trg.C_TANTERVID = @TantervId,
trg.TOROLT = 'F',
trg.SERIAL = trg.SERIAL + 1,
trg.LASTCHANGED = GETDATE(),
trg.MODIFIER = @userId
WHEN NOT MATCHED THEN
INSERT (
ID
,C_TANKOTELEZETTSEGVEGE
,C_TANKOTELEZETT
,C_SAJATOSNEVELESU
,C_BTMPROBLEMAS
,C_JOGVISZONYVARHATOBEFEJEZESE
,C_VENDEG
,C_MAGANTANULO
,C_JOGVISZONYATSZUNETELTETO
,C_FELVETELTANEVEID
,C_TANTERVID
,C_ALINTEZMENYID
,C_ALTANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
) VALUES (
src.insertedID
,src.TankotelezettsegVege
,src.TankotelezettsegetTeljesito
,src.SajatosNevelesIgenyu
,src.BeilleszkedesselKuzd
,src.JogviszonyVarBefejezese
,src.Vendegtanulo
,src.Magantanulo
,src.JogviszonyStatusza
,@tanevID
,@TantervId
,@intezmenyID
,@tanevID
,'F'
,1
,NULL
,@CREATED
,NULL
,@userId
);
--TODO: GENERATE SALT
-------FELHASZNALO BELEPES--------
/*SET @userNameGenerateMode = dbo.fnGetRendszerbeallitasEnumBool(2885, @intezmenyID, @tanevID)
IF @userNameGenerateMode <> 3 BEGIN
INSERT INTO [T_FELHASZNALOBELEPES_OSSZES] (
[C_JELSZO],
[C_BEJELENTKEZESINEV],
[C_FELHASZNALOID],
[C_INTEZMENYID],
[C_TANEVID],
[TOROLT],
[SERIAL],
[LASTCHANGED],
[CREATED],
[MODIFIER],
[CREATOR],
[C_GUID]
)
SELECT
CONVERT(nvarchar(8), fh.C_SZULETESIDATUM,112),
CASE @userNameGenerateMode
WHEN 1 THEN fh.C_OKTATASIAZONOSITO
WHEN 2 THEN fh.C_KRETAKOD
ELSE NULL
END,
fh.ID,
@intezmenyID,
@tanevID,
'F',
1,
NULL,
@CREATED,
NULL,
@userId,
(select NEWID())
FROM #tempTanulok t
INNER JOIN @linkTable l ON t.ID = l.tempID
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = l.insertedId
WHERE C_TANEVID = @tanevID AND
NOT EXISTS (SELECT 1 FROM T_FELHASZNALOBELEPES_OSSZES belepes
WHERE belepes.C_FELHASZNALOID = fh.ID AND
belepes.C_GONDVISELOID IS NULL)
END*/
--------FELHASZNALO SZEREPKÖR-----------
DELETE FROM T_FELHASZNALO_SZEREPKOR
WHERE T_FELHASZNALO_SZEREPKOR.[C_FELHASZNALOID] IN (SELECT TanuloID FROM #tempTanulok WHERE TanuloID > 0)
INSERT INTO T_FELHASZNALO_SZEREPKOR (C_FELHASZNALOID, C_SZEREPKORID)
SELECT l.insertedId, (SELECT ID FROM T_SZEREPKOR_OSSZES WHERE C_SZEREPKORTIPUS = '1761' AND C_TANEVID = @tanevID)
FROM #tempTanulok t
INNER JOIN @linkTable l ON t.ID = l.tempID
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = l.insertedId
WHERE C_TANEVID = @tanevID
----- Telefonszám -----
MERGE T_TELEFON_OSSZES trg
USING (
SELECT t.*, l.insertedId AS insertedID
FROM #tempTanulok t
INNER JOIN @linkTable l ON t.ID = l.tempID --AND C_ALAPERTELMEZETT = 'T'
WHERE t.Telefonszam IS NOT NULL AND t.Telefonszam <> ''
) src ON src.TanuloID = trg.C_FELHASZNALOID AND trg.C_TANEVID = @tanevID AND src.isTanulo = 1 AND trg.C_ALAPERTELMEZETT = 'T'
WHEN MATCHED THEN
UPDATE SET
trg.C_TELEFONSZAM = src.Telefonszam,
trg.TOROLT = 'F',
trg.SERIAL = trg.SERIAL + 1,
trg.LASTCHANGED = GETDATE(),
trg.MODIFIER = @userId
WHEN NOT MATCHED THEN
INSERT (
C_TELEFONTIPUSA
,C_TELEFONSZAM
,C_LEIRAS
,C_ALAPERTELMEZETT
,C_GONDVISELOID
,C_FELHASZNALOID
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
) VALUES (
1019 -- C_TELEFONTIPUSA - int
,src.Telefonszam -- C_TELEFONSZAM - nvarchar(100)
,N'' -- C_LEIRAS - nvarchar(50)
,'T' -- C_ALAPERTELMEZETT - char(1)
,NULL -- C_GONDVISELOID - int
,src.insertedID -- C_FELHASZNALOID - int
,@intezmenyID -- C_INTEZMENYID - int
,@tanevID -- C_TANEVID - int
,'F' -- TOROLT - char(1)
,1 -- SERIAL - int
,NULL -- LASTCHANGED - datetime
,@CREATED -- CREATED - datetime
,NULL -- MODIFIER - int
,@userId -- CREATOR - int
);
----- TARTÓZKODÁSI HELY -----
MERGE T_CIM_OSSZES trg
USING (
SELECT t.*, l.insertedId AS insertedID
FROM #tempTanulok t
INNER JOIN @linkTable l ON t.ID = l.tempID
WHERE t.TartozkodasiCimIranyitoszam IS NOT NULL AND t.TartozkodasiCimIranyitoszam <> ''
) src ON src.TanuloID = trg.C_FELHASZNALOID AND trg.C_TANEVID = @tanevID AND src.isTanulo = 1 AND trg.C_CIMTIPUSA = 908
WHEN MATCHED THEN
UPDATE SET
trg.C_CIMTIPUSA = 908,
trg.C_ORSZAG = 765,
trg.C_IRANYITOSZAM = src.TartozkodasiCimIranyitoszam,
trg.C_VAROS = src.TartozkodasiCimTelepules,
trg.C_KOZTERULET = src.TartozkodasiCimKozteruletNev,
trg.C_KOZTERULETJELLEGE = src.TartozkodasiCimKozteruletJelleg,
trg.C_HAZSZAM = src.TartozkodasiCimHazszam,
trg.C_FELHASZNALOID = src.insertedId,
trg.TOROLT = 'F',
trg.SERIAL = trg.SERIAL + 1,
trg.LASTCHANGED = GETDATE(),
trg.MODIFIER = @userId
WHEN NOT MATCHED THEN
INSERT (
C_CIMTIPUSA
,C_ORSZAG
,C_IRANYITOSZAM
,C_VAROS
,C_KOZTERULET
,C_KOZTERULETJELLEGE
,C_HAZSZAM
,C_FELHASZNALOID
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
) VALUES (
908
,765
,src.TartozkodasiCimIranyitoszam
,src.TartozkodasiCimTelepules
,src.TartozkodasiCimKozteruletNev
,src.TartozkodasiCimKozteruletJelleg
,src.TartozkodasiCimHazszam
,src.insertedID
,@intezmenyID
,@tanevID
,'F'
,1
,NULL
,@CREATED
,NULL
,@userId
);
----- TARTÓZKODÁSI HELY -----
MERGE T_CIM_OSSZES trg
USING (
SELECT t.*, l.insertedId AS insertedID
FROM #tempTanulok t
INNER JOIN @linkTable l ON t.ID = l.tempID
) src ON src.TanuloID = trg.C_FELHASZNALOID AND trg.C_TANEVID = @tanevID AND src.isTanulo = 1 AND trg.C_CIMTIPUSA = 907
WHEN MATCHED THEN
UPDATE SET
trg.C_CIMTIPUSA = 907,
trg.C_ORSZAG = 765,
trg.C_IRANYITOSZAM = src.AllandoLakcimIranyitoSzam,
trg.C_VAROS = src.AllandoLakcimTelepules,
trg.C_KOZTERULET = src.AllandoLakcimKozteruletNev,
trg.C_KOZTERULETJELLEGE = src.AllandoLakcimKozteruletJelleg,
trg.C_HAZSZAM = src.AllandoLakcimHazszam,
trg.C_FELHASZNALOID = src.insertedId,
trg.TOROLT = 'F',
trg.SERIAL = trg.SERIAL + 1,
trg.LASTCHANGED = GETDATE(),
trg.MODIFIER = @userId
WHEN NOT MATCHED THEN
INSERT (
C_CIMTIPUSA
,C_ORSZAG
,C_IRANYITOSZAM
,C_VAROS
,C_KOZTERULET
,C_KOZTERULETJELLEGE
,C_HAZSZAM
,C_FELHASZNALOID
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
) VALUES (
907
,765
,src.AllandoLakcimIranyitoSzam
,src.AllandoLakcimTelepules
,src.AllandoLakcimKozteruletNev
,src.AllandoLakcimKozteruletJelleg
,src.AllandoLakcimHazszam
,src.insertedID
,@intezmenyID
,@tanevID
,'F'
,1
,NULL
,@CREATED
,NULL
,@userId
);
----- E-mail cím -----
MERGE T_EMAIL_OSSZES
USING (
SELECT #tempTanulok.*, linkTable.insertedId AS insertedID
FROM #tempTanulok
INNER JOIN
@linkTable linkTable ON #tempTanulok.ID = linkTable.tempID --AND C_ALAPERTELMEZETT = 'T'
WHERE #tempTanulok.EmailCim IS NOT NULL AND #tempTanulok.EmailCim <> ''
)
src ON
T_EMAIL_OSSZES.C_FELHASZNALOID = src.TanuloID AND
T_EMAIL_OSSZES.C_TANEVID = @tanevID AND
src.isTanulo = 1 AND
T_EMAIL_OSSZES.C_ALAPERTELMEZETT = 'T'
WHEN
MATCHED THEN
UPDATE SET
T_EMAIL_OSSZES.C_EMAILCIM = src.EmailCim,
T_EMAIL_OSSZES.TOROLT = 'F',
T_EMAIL_OSSZES.SERIAL = T_EMAIL_OSSZES.SERIAL + 1,
T_EMAIL_OSSZES.LASTCHANGED = GETDATE(),
T_EMAIL_OSSZES.MODIFIER = @userId
WHEN
NOT MATCHED THEN
INSERT (
C_EMAILTIPUSA
,C_EMAILCIM
,C_ALAPERTELMEZETT
,C_GONDVISELOID
,C_FELHASZNALOID
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
) VALUES (
1024 -- C_EMAILTIPUSA - int NA
,src.EmailCim -- C_EMAILCIM - nvarchar(100)
,'T' -- C_ALAPERTELMEZETT - char(1)
,NULL -- C_GONDVISELOID - int
,src.insertedID -- C_FELHASZNALOID - int
,@intezmenyID -- C_INTEZMENYID - int
,@tanevID -- C_TANEVID - int
,'F' -- TOROLT - char(1)
,1 -- SERIAL - int
,NULL -- LASTCHANGED - datetime
,@CREATED -- CREATED - datetime
,NULL -- MODIFIER - int
,@userId -- CREATOR - int
);
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0
ROLLBACK TRANSACTION;
THROW
END CATCH
END