kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20180405192846_NebuloImportFix/sp_NebuloImport.sql
2024-03-13 00:33:46 +01:00

222 lines
8.2 KiB
Transact-SQL

-- =============================================
-- Description: A nebuló lista importálása XML-ből
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_NebuloImport]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_NebuloImport]
END
GO
CREATE PROCEDURE [dbo].[sp_NebuloImport]
-- Add the parameters for the stored procedure here
@pNebuloListXml XML
,@pIntezmenyId INT
,@pTanevId INT
,@pUserId INT
,@pNebuloImportTipusId INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
-- XML paraméter értelmezése
SELECT
-- MERGE-höz adatok
NebuloID = 0
,IsExistingNebulo = 0
--Egyszerű import adatok
,Vezeteknev = Nebulo.value('(Vezeteknev)[1]', 'NVARCHAR(255)')
,Keresztnev = Nebulo.value('(Keresztnev)[1]', 'NVARCHAR(255)')
,AnyjaVezetekneve = Nebulo.value('(AnyjaVezetekneve)[1]', 'NVARCHAR(255)')
,AnyjaKeresztneve = Nebulo.value('(AnyjaKeresztneve)[1]', 'NVARCHAR(255)')
,SzuletesiVezeteknev = Nebulo.value('(SzuletesiVezeteknev)[1]', 'NVARCHAR(255)')
,SzuletesiKeresztnev = Nebulo.value('(SzuletesiKeresztnev)[1]', 'NVARCHAR(255)')
,SzuletesiOrszag = Nebulo.value('number((SzuletesiOrszag)[1])', 'INT')
,SzuletesiHely = Nebulo.value('(SzuletesiHely)[1]', 'NVARCHAR(50)')
,SzuletesiIdo = Nebulo.value('(SzuletesiIdoString)[1]', 'DATETIME')
,TKCimeAzonos = Nebulo.value('(TKCimeAzonosString)[1]', 'CHAR(1)')
,THCimeAzonos = Nebulo.value('(THCimeAzonosString)[1]', 'CHAR(1)')
,Anyanyelv = Nebulo.value('number((Anyanyelv)[1])', 'INT')
,Allampolgarsag = Nebulo.value('number((Allampolgarsag)[1])', 'INT')
,EletvitelszeruOttLakasKorzetes = Nebulo.value('(EletvitelszeruOttLakasKorzetesString)[1]', 'CHAR(1)')
,FeladatellatasiHelyId = Nebulo.value('number((FeladatellatasiHelyId)[1])', 'INT')
,Tagozat = Nebulo.value('number((Tagozat)[1])', 'INT')
,FelvetelStatusza = Nebulo.value('number((FelvetelStatusza)[1])', 'INT')
,BTMLetszamSuly = Nebulo.value('number((BTMLetszamSuly)[1])', 'NUMERIC(10,2)')
,SNILetszamSuly = Nebulo.value('number((SNILetszamSuly)[1])', 'NUMERIC(10,2)')
,KirSzolgaltatasTipusId = Nebulo.value('number((KirSzolgaltatasTipusId)[1])', 'INT')
--Egyszerű import lakcímmel adatok
,Iranyitoszam = Nebulo.value('(Iranyitoszam)[1]', 'NVARCHAR(20)')
,Helyseg = Nebulo.value('(Helyseg)[1]', 'NVARCHAR(255)')
,Kozterulet = Nebulo.value('(Kozterulet)[1]', 'NVARCHAR(40)')
,KozteruletJelleg = Nebulo.value('number((KozteruletJelleg)[1])', 'INT')
,Szam = Nebulo.value('(Szam)[1]', 'NVARCHAR(30)')
,Emelet = Nebulo.value('(Emelet)[1]', 'NVARCHAR(40)')
,Ajto = Nebulo.value('(Ajto)[1]', 'NVARCHAR(30)')
INTO
#tempNebuloList
FROM
@pNebuloListXml.nodes('NebuloImport/NebuloList/Nebulo') AS NebuloList(Nebulo)
-- A létező nebulók ID-ját kitöltjük, és az IsExistingNebulo-t is UPDATE-eljük 4T alapján
UPDATE
tempNebulo
SET
tempNebulo.NebuloID = nebulo.ID
,tempNebulo.IsExistingNebulo = IIF(nebulo.ID IS NULL, 0, 1)
FROM
#tempNebuloList tempNebulo
INNER JOIN
T_NEBULO_OSSZES nebulo ON
nebulo.C_TANULOCSALADINEVE = tempNebulo.Vezeteknev AND
nebulo.C_TANULOUTONEVE = tempNebulo.Keresztnev AND
nebulo.C_EDESANYJASZULETESICSALADINEV = tempNebulo.AnyjaVezetekneve AND
nebulo.C_EDESANYJASZULETESIUTONEVE = tempNebulo.AnyjaKeresztneve AND
nebulo.C_SZULETESIORSZAG = tempNebulo.SzuletesiOrszag AND
nebulo.C_SZULETESIHELY = tempNebulo.SzuletesiHely AND
nebulo.C_SZULETESIIDO = tempNebulo.SzuletesiIdo
BEGIN TRY
BEGIN TRANSACTION
DECLARE @currentDateTime DATETIME
SET @currentDateTime = (SELECT GETDATE())
DECLARE @isUpdateLakcim BIT
SET @isUpdateLakcim = CASE WHEN @pNebuloImportTipusId = 1 THEN 1 ELSE 0 END
-- Nebulók INSERT-je vagy UPDATE-je aka MERGE
MERGE T_NEBULO_OSSZES nebulo
USING #tempNebuloList tempNebulo ON
tempNebulo.NebuloID = nebulo.ID AND nebulo.C_TANEVID = @pTanevId
WHEN MATCHED AND tempNebulo.IsExistingNebulo = 1 THEN
UPDATE SET
--Egyszerű import adatok
nebulo.C_TANULOCSALADINEVE = tempNebulo.Vezeteknev
,nebulo.C_TANULOUTONEVE = tempNebulo.Keresztnev
,nebulo.C_EDESANYJASZULETESICSALADINEV = tempNebulo.AnyjaVezetekneve
,nebulo.C_EDESANYJASZULETESIUTONEVE = tempNebulo.AnyjaKeresztneve
,nebulo.C_SZULETESICSALADINEVE = tempNebulo.SzuletesiVezeteknev
,nebulo.C_SZULETESIUTONEVE = tempNebulo.SzuletesiKeresztnev
,nebulo.C_SZULETESIORSZAG = tempNebulo.SzuletesiOrszag
,nebulo.C_SZULETESIHELY = tempNebulo.SzuletesiHely
,nebulo.C_SZULETESIIDO = tempNebulo.SzuletesiIdo
--nebulo.C_FELVETELSTATUSZA = tempNebulo.FelvetelStatusza
--Egyszerű import lakcímmel adatok
,nebulo.C_IRANYITOSZAM = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Iranyitoszam ELSE nebulo.C_IRANYITOSZAM END
,nebulo.C_HELYSEGNEV = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Helyseg ELSE nebulo.C_HELYSEGNEV END
,nebulo.C_KOZTERULETNEV = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Kozterulet ELSE nebulo.C_KOZTERULETNEV END
,nebulo.C_KOZTERULETJELLEGE = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.KozteruletJelleg ELSE nebulo.C_KOZTERULETJELLEGE END
,nebulo.C_HAZSZAM = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Szam ELSE nebulo.C_HAZSZAM END
,nebulo.C_EMELET = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Emelet ELSE nebulo.C_EMELET END
,nebulo.C_AJTO = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Ajto ELSE nebulo.C_AJTO END
--Technikai adatok
,nebulo.TOROLT = 'F'
,nebulo.SERIAL = nebulo.SERIAL + 1
,nebulo.LASTCHANGED = @currentDateTime
,nebulo.MODIFIER = @pUserId
WHEN NOT MATCHED THEN
INSERT (
--Egyszerű import adatok
C_TANULOCSALADINEVE
,C_TANULOUTONEVE
,C_EDESANYJASZULETESICSALADINEV
,C_EDESANYJASZULETESIUTONEVE
,C_SZULETESICSALADINEVE
,C_SZULETESIUTONEVE
,C_SZULETESIORSZAG
,C_SZULETESIHELY
,C_SZULETESIIDO
,C_KEPVISELOCIMEAZONOS
,C_TARTOZKODASIHELYAZONOS
,C_ANYANYELVE
,C_ALLAMPOLGARSAGA
,C_ELETVITELSZERUOTTLAKASKORZET
,C_FELADATELLATASIHELYID
,C_TAGOZAT
,C_FELVETELSTATUSZA
,C_BTMLETSZAMSULY
,C_SNILETSZAMSULY
,C_KIRSZOLGALTATASTIPUSID
--Egyszerű import lakcímmel adatok
,C_IRANYITOSZAM
,C_HELYSEGNEV
,C_KOZTERULETNEV
,C_KOZTERULETJELLEGE
,C_HAZSZAM
,C_EMELET
,C_AJTO
--Technikai adatok
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR)
VALUES (
--Egyszerű import adatok
tempNebulo.Vezeteknev
,tempNebulo.Keresztnev
,tempNebulo.AnyjaVezetekneve
,tempNebulo.AnyjaKeresztneve
,tempNebulo.SzuletesiVezeteknev
,tempNebulo.SzuletesiKeresztnev
,tempNebulo.SzuletesiOrszag
,tempNebulo.SzuletesiHely
,tempNebulo.SzuletesiIdo
,tempNebulo.TKCimeAzonos
,tempNebulo.THCimeAzonos
,tempNebulo.Anyanyelv
,tempNebulo.Allampolgarsag
,tempNebulo.EletvitelszeruOttLakasKorzetes
,tempNebulo.FeladatellatasiHelyId
,tempNebulo.Tagozat
,tempNebulo.FelvetelStatusza
,tempNebulo.BTMLetszamSuly
,tempNebulo.SNILetszamSuly
,tempNebulo.KirSzolgaltatasTipusId
--Egyszerű import lakcímmel adatok
,tempNebulo.Iranyitoszam
,tempNebulo.Helyseg
,tempNebulo.Kozterulet
,tempNebulo.KozteruletJelleg
,tempNebulo.Szam
,tempNebulo.Emelet
,tempNebulo.Ajto
--Technikai adatok
,@pIntezmenyId
,@pTanevId
,'F'
,@currentDateTime
,@currentDateTime
,@pUserId
,@pUserId);
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0
ROLLBACK TRANSACTION;
THROW
END CATCH
END
GO