96 lines
5.1 KiB
Transact-SQL
96 lines
5.1 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS uspUpdateAllEgyediAzonosito
|
|
GO
|
|
|
|
CREATE PROCEDURE uspUpdateAllEgyediAzonosito
|
|
AS BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @DefaultAzonosito NVARCHAR(36) = '00000000-0000-0000-0000-000000000000'
|
|
|
|
-- Az aktuális tanévben lévő felhasználók egyedi azonosítóinak átvétele az előző tanévből
|
|
-- a 4T alapján, ha az előző és az aktuális tanév sem törölt
|
|
UPDATE akt SET
|
|
akt.C_EGYEDIAZONOSITO = prev.C_EGYEDIAZONOSITO
|
|
FROM T_FELHASZNALO_OSSZES akt
|
|
INNER JOIN T_FELHASZNALO_OSSZES prev ON akt.C_INTEZMENYID = prev.C_INTEZMENYID
|
|
AND prev.C_ANYJANEVE = akt.C_ANYJANEVE
|
|
AND prev.C_SZULETESIHELY = akt.C_SZULETESIHELY
|
|
AND prev.C_SZULETESIDATUM = akt.C_SZULETESIDATUM
|
|
AND prev.C_SZULETESINEV = akt.C_SZULETESINEV
|
|
INNER JOIN T_TANEV_OSSZES akttv ON akttv.ID = akt.C_TANEVID AND akttv.C_AKTIV = 'T' AND akttv.TOROLT = 'F'
|
|
INNER JOIN T_TANEV_OSSZES prevtv ON prevtv.ID = prev.C_TANEVID AND akttv.C_SORSZAM - 2 = prevtv.C_SORSZAM AND prevtv.TOROLT = 'F'
|
|
WHERE akt.C_EGYEDIAZONOSITO = @DefaultAzonosito
|
|
|
|
-- Az aktuális tanévben, ha az nem törölt, akkor a felhasználóknak új egyedi azonosítóinak létrehozása, ha még nincs
|
|
UPDATE aktFelhasznalo SET
|
|
aktFelhasznalo.C_EGYEDIAZONOSITO = NEWID()
|
|
FROM T_FELHASZNALO_OSSZES aktFelhasznalo
|
|
INNER JOIN T_TANEV aktTanev ON aktTanev.ID = aktFelhasznalo.C_TANEVID AND aktTanev.C_AKTIV = 'T' AND aktTanev.TOROLT = 'F'
|
|
WHERE aktFelhasznalo.C_EGYEDIAZONOSITO = @DefaultAzonosito
|
|
|
|
-- A következő tanév felhasználóinak egyedi azonosítóinak beállítása az aktuális tanév alapján, ha még nem lenne beállítva
|
|
UPDATE kov SET
|
|
kov.C_EGYEDIAZONOSITO = akt.C_EGYEDIAZONOSITO
|
|
FROM T_FELHASZNALO_OSSZES akt
|
|
INNER JOIN T_FELHASZNALO_OSSZES kov ON akt.C_INTEZMENYID = kov.C_INTEZMENYID
|
|
AND kov.C_ANYJANEVE = akt.C_ANYJANEVE
|
|
AND kov.C_SZULETESIHELY = akt.C_SZULETESIHELY
|
|
AND kov.C_SZULETESIDATUM = akt.C_SZULETESIDATUM
|
|
AND kov.C_SZULETESINEV = akt.C_SZULETESINEV
|
|
INNER JOIN T_TANEV_OSSZES akttv ON akttv.ID = akt.C_TANEVID AND akttv.C_AKTIV = 'T' AND akttv.TOROLT = 'F'
|
|
INNER JOIN T_TANEV_OSSZES kovtv ON kovtv.ID = kov.C_TANEVID AND kovtv.C_KOVETKEZO = 'T' AND kovtv.TOROLT = 'F'
|
|
WHERE kov.C_EGYEDIAZONOSITO = @DefaultAzonosito
|
|
|
|
-- Ha eddig még lenne felhasználó, aki nem kapott azonosítót, akkor itt kap
|
|
UPDATE T_FELHASZNALO_OSSZES SET
|
|
C_EGYEDIAZONOSITO = NEWID()
|
|
WHERE C_EGYEDIAZONOSITO = @DefaultAzonosito
|
|
|
|
-- Gondviselők azonosítóinak átvétele az előző évből ha az tanuló egyedi azonosítója azonos az előző évivel
|
|
-- és a gondviselő neve megegyezik az előző tanévivel
|
|
UPDATE aktg SET
|
|
aktg.C_EGYEDIAZONOSITO = prevg.C_EGYEDIAZONOSITO
|
|
FROM T_FELHASZNALO_OSSZES akt
|
|
INNER JOIN T_FELHASZNALO_OSSZES prev ON akt.C_INTEZMENYID = prev.C_INTEZMENYID
|
|
AND akt.C_EGYEDIAZONOSITO = prev.C_EGYEDIAZONOSITO
|
|
INNER JOIN T_TANEV_OSSZES akttv ON akttv.ID = akt.C_TANEVID AND akttv.C_AKTIV = 'T' AND akttv.TOROLT = 'F'
|
|
INNER JOIN T_TANEV_OSSZES prevtv ON prevtv.ID = prev.C_TANEVID AND akttv.C_SORSZAM - 2 = prevtv.C_SORSZAM AND prevtv.TOROLT = 'F'
|
|
INNER JOIN T_GONDVISELO_OSSZES aktg ON aktg.C_TANULOID = akt.ID
|
|
INNER JOIN T_GONDVISELO_OSSZES prevg ON prevg.C_TANULOID = prev.ID
|
|
WHERE aktg.C_EGYEDIAZONOSITO = @DefaultAzonosito
|
|
AND aktg.C_NEV = prevg.C_NEV
|
|
|
|
-- Ha még van gondviselő az aktuális tanévben, aki nem kapott azonosítót, akkor itt kap
|
|
UPDATE aktg SET
|
|
aktg.C_EGYEDIAZONOSITO = NEWID()
|
|
FROM T_GONDVISELO_OSSZES aktg
|
|
INNER JOIN T_TANEV aktTanev ON aktTanev.ID = aktg.C_TANEVID AND aktTanev.C_AKTIV = 'T' AND aktTanev.TOROLT = 'F'
|
|
WHERE aktg.C_EGYEDIAZONOSITO = @DefaultAzonosito
|
|
|
|
-- Ha a tanulok 4T alapján azonosak a következő tanévivel és a gondviselő neve is azonos, akkor a gondviselő
|
|
-- megkapja az következő évre is ugyanazt az egyedi azonosítót, amely az aktív tanévben van.
|
|
UPDATE kovg SET
|
|
kovg.C_EGYEDIAZONOSITO = aktg.C_EGYEDIAZONOSITO
|
|
FROM T_FELHASZNALO_OSSZES akt
|
|
INNER JOIN T_FELHASZNALO_OSSZES kov ON akt.C_INTEZMENYID = kov.C_INTEZMENYID
|
|
AND kov.C_ANYJANEVE = akt.C_ANYJANEVE
|
|
AND kov.C_SZULETESIHELY = akt.C_SZULETESIHELY
|
|
AND kov.C_SZULETESIDATUM = akt.C_SZULETESIDATUM
|
|
AND kov.C_SZULETESINEV = akt.C_SZULETESINEV
|
|
INNER JOIN T_TANEV_OSSZES akttv ON akttv.ID = akt.C_TANEVID AND akttv.C_AKTIV = 'T' AND akttv.TOROLT = 'F'
|
|
INNER JOIN T_TANEV_OSSZES kovtv ON kovtv.ID = kov.C_TANEVID AND kovtv.C_KOVETKEZO = 'T' AND kovtv.TOROLT = 'F'
|
|
INNER JOIN T_GONDVISELO_OSSZES aktg ON aktg.C_TANULOID = akt.ID
|
|
INNER JOIN T_GONDVISELO_OSSZES kovg ON kovg.C_TANULOID = kov.ID
|
|
WHERE kovg.C_EGYEDIAZONOSITO = @DefaultAzonosito
|
|
AND aktg.C_NEV = kovg.C_NEV
|
|
|
|
-- A megmaradt gondviselők azonosítójának generálása
|
|
UPDATE T_GONDVISELO_OSSZES SET
|
|
C_EGYEDIAZONOSITO = NEWID()
|
|
WHERE C_EGYEDIAZONOSITO = @DefaultAzonosito
|
|
|
|
-- IDP azonosító létrehozása
|
|
EXEC uspUpdateIDPEgyediAzonosito
|
|
|
|
END
|
|
GO
|