kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20171010164035_KRETA_3324/sp_HozzaferesGeneralas.sql
2024-03-13 00:33:46 +01:00

124 lines
3.4 KiB
Transact-SQL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[sp_HozzaferesGeneralas]') IS NOT NULL
BEGIN
DROP PROCEDURE [sp_HozzaferesGeneralas]
END
GO
CREATE PROCEDURE [sp_HozzaferesGeneralas]
@xml xml,
@tanevID int,
@intezmenyID int,
@userId int
AS
BEGIN
BEGIN TRY
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @tbl TABLE (
C_ID int,
C_USERNAME nvarchar(50),
C_PASSWORD nvarchar(50),
C_GONDVISELOID int,
C_NEMGENERALHATO char(1),
C_SO nvarchar(50))
INSERT INTO @tbl
SELECT
sor.value('number((Id)[1])', 'int') AS C_ID,
sor.value('(UserName)[1]', 'nvarchar(50)') AS C_USERNAME,
sor.value('(Password)[1]', 'nvarchar(50)') AS C_PASSWORD,
sor.value('number((GondviseloId)[1])', 'int') AS C_GONDVISELOID,
sor.value('(NemGeneralhato)[1]', 'char(1)') AS C_NEMGENERALHATO,
sor.value('(Salt)[1]', 'nvarchar(50)') AS C_SO
FROM @xml.nodes('/BelepesiAdatok/BelepesiAdatokLista/BelepesiAdat') as sorok(sor)
BEGIN TRANSACTION
UPDATE @tbl SET C_GONDVISELOID = NULL WHERE C_GONDVISELOID < 0
select * from @tbl
UPDATE fb
SET
fb.C_BEJELENTKEZESINEV = tbl.C_USERNAME
,fb.C_JELSZO = tbl.C_PASSWORD
,fb.C_SO = tbl.C_SO
,fb.C_JELSZOVALTOZTATASIDEJE = GETDATE()
,fb.SERIAL += 1
,fb.LASTCHANGED = GETDATE()
,fb.MODIFIER = @userId
FROM T_FELHASZNALOBELEPES fb
INNER JOIN @tbl tbl ON tbl.C_ID = fb.C_FELHASZNALOID AND tbl.C_GONDVISELOID IS NULL
WHERE TOROLT = 'F'
AND fb.C_GONDVISELOID IS NULL
UPDATE fb
SET
fb.C_BEJELENTKEZESINEV = tbl.C_USERNAME
,fb.C_JELSZO = tbl.C_PASSWORD
,fb.C_SO = tbl.C_SO
,fb.C_JELSZOVALTOZTATASIDEJE = GETDATE()
,fb.SERIAL += 1
,fb.LASTCHANGED = GETDATE()
,fb.MODIFIER = @userId
FROM T_FELHASZNALOBELEPES fb
INNER JOIN @tbl tbl ON tbl.C_GONDVISELOID = fb.C_GONDVISELOID AND tbl.C_GONDVISELOID IS NOT NULL
WHERE TOROLT = 'F'
AND fb.C_GONDVISELOID IS NOT NULL
INSERT INTO [T_FELHASZNALOBELEPES]
([C_KOTELEZOVALTOZTATNI]
,[C_MEGHIUSULTBELEPESEK]
,[C_UTOLSOBELEPES]
,[C_JELSZO]
,[C_JELSZOVALTOZTATASIDEJE]
,[C_SO]
,[C_BEJELENTKEZESINEV]
,[C_NEPTUNNAPLOJELSZO]
,[C_FELHASZNALOID]
,[C_GONDVISELOID]
,[C_INTEZMENYID]
,[C_TANEVID]
,[TOROLT]
,[MODIFIER]
,[CREATOR]
,[C_GUID])
SELECT
'T' AS C_KOTELEZOVALTOZTATNI
,NULL AS C_MEGHIUSULTBELEPESEK
,NULL AS C_UTOLSOBELEPES
,t.C_PASSWORD AS C_JELSZO
,NULL AS C_JELSZOVALTOZTATASIDEJE
,t.C_SO AS C_SO
,t.C_USERNAME C_BEJELENTKEZESINEV
,NULL AS C_NEPTUNNAPLOJELSZO
,t.C_ID AS C_FELHASZNALOID
,IIF(t.C_GONDVISELOID=-1, NULL, (t.C_GONDVISELOID)) AS C_GONDVISELOID
,@intezmenyID AS C_INTEZMENYID
,@tanevID AS C_TANEVID
,'F' AS TOROLT
,NULL AS MODIFIER
,@userId AS CREATOR
,NEWID() AS C_GUID
FROM @tbl t
WHERE t.C_NEMGENERALHATO = 'F'
AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALOBELEPES fb WHERE fb.C_FELHASZNALOID = t.C_ID AND ( fb.C_GONDVISELOID = t.C_GONDVISELOID OR (fb.C_GONDVISELOID IS NULL AND t.C_GONDVISELOID IS NULL)))
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0
ROLLBACK TRANSACTION;
THROW
END CATCH
END