﻿SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF OBJECT_ID('sp_ImportEszkozok', 'P') IS NOT NULL BEGIN
  DROP PROCEDURE sp_ImportEszkozok
END
GO

CREATE PROCEDURE [sp_ImportEszkozok]
  @xml xml,
  @userID int,
  @intezmenyID int,
  @tanevID int
AS
BEGIN
  BEGIN TRY
    SET NOCOUNT ON
    SET XACT_ABORT ON
  
    DECLARE @tbl TABLE (
      C_NEV nvarchar(255),
      C_TEREMID int,
      C_FELELOSID int,
	    C_DARABSZAM int,
      C_TIPUS int,
      C_KATEGORIA int,
      C_BESZERZESDATUM datetime,
      C_LELTARISZAM nvarchar(20),
      C_GYARISZAM nvarchar(20),
      C_MEGJEGYZES nvarchar(255)	  
    )
    
    INSERT INTO @tbl
    SELECT 
      sor.value('(EszkozNeve)[1]', 'nvarchar(255)') AS C_NEV,
      sor.value('number((TeremId)[1])', 'int') AS  C_TEREMID,
      sor.value('number((FelelosId)[1])', 'int') AS C_FELELOSID,
	   sor.value('(DarabSzam)[1]', 'int') AS C_DARABSZAM,
      sor.value('number((EszkozTipus)[1])', 'int') AS C_TIPUS,
	  sor.value('number((kategoria)[1])', 'int') AS C_KATEGORIA,
      sor.value('(beszerzes-datuma)[1]', 'datetime') AS C_BESZERZESDATUM,
      sor.value('(LeltariSzam)[1]', 'nvarchar(20)') AS C_LELTARISZAM,
      sor.value('(gyari-szam)[1]', 'nvarchar(20)') AS C_GYARISZAM,
      sor.value('(megjegyzes)[1]', 'nvarchar(255)') AS C_MEGJEGYZES
  	FROM @xml.nodes('/EszkozImport/EszkozLista/Eszkoz') as sorok(sor)

    BEGIN TRANSACTION  
      UPDATE e
        SET  e.C_BESZERZESDATUM = IsNull(t.C_BESZERZESDATUM, e.C_BESZERZESDATUM)
			,e.C_GYARISZAM = IsNull(t.C_GYARISZAM, e.C_GYARISZAM)
			,e.C_KATEGORIA = IsNull(t.C_KATEGORIA, e.C_KATEGORIA)
			,e.C_DARABSZAM = IsNull(t.C_DARABSZAM, e.C_DARABSZAM)
			,e.C_LELTARISZAM = IsNull(t.C_LELTARISZAM, e.C_LELTARISZAM)
			,e.C_MEGJEGYZES = IsNull(t.C_MEGJEGYZES, e.C_MEGJEGYZES)
			,e.C_TIPUS = IsNull(t.C_TIPUS, e.C_TIPUS)
			,e.C_FELELOSID = IsNull(t.C_FELELOSID, e.C_FELELOSID)			
			,e.SERIAL = e.SERIAL + 1
			,e.LASTCHANGED = GETDATE() -- datetime
			,e.MODIFIER = @userID -- int
      FROM T_ESZKOZ e
      INNER JOIN @tbl t ON t.C_NEV = e.C_NEV AND t.C_TEREMID = e.C_TEREMID
    
      INSERT INTO T_ESZKOZ (
         C_BERELT
        ,C_BESZERZESDATUM
        ,C_BESZERZESIAR
        ,C_DARABSZAM
        ,C_FOKONYVISZAM
        ,C_GYARISZAM
        ,C_GYARTASIEV
        ,C_HALOZATIKAPCSOLAT
        ,C_HORDOZHATO
        ,C_INTERNETKAPCSOLAT
        ,C_KATEGORIA
        ,C_LELTARISZAM
        ,C_MEGJEGYZES
        ,C_MULTIMEDIAS
        ,C_NEV
        ,C_PEDAGOGUSHOZZAFERHET
        ,C_SZALLITO
        ,C_TANULOHOZZAFERHET
        ,C_TARTOZEK
        ,C_TARTOZEKHIVATKOZAS
        ,C_TIPUS
        ,C_CELJA
        ,C_JELLEGE
        ,C_MENNYISEGIEGYSEG
        ,C_VONALKOD
        ,C_TEREMID
        ,C_FELELOSID
		,C_INTEZMENYID
		,C_TANEVID
        ,TOROLT
        ,SERIAL
        ,LASTCHANGED
        ,CREATED
        ,MODIFIER
        ,CREATOR
      ) SELECT 
         'F' AS C_BERELT               -- C_BERELT - char(1)
        ,NULL AS C_BESZERZESDATUM       -- C_BESZERZESDATUM - datetime
        ,NULL AS C_BESZERZESIAR         -- C_BESZERZESIAR - int
        ,t.C_DARABSZAM AS C_DARABSZAM            -- C_DARABSZAM - int
        ,NULL AS C_FOKONYVISZAM         -- C_FOKONYVISZAM - nvarchar(255)
        ,t.C_GYARISZAM AS C_GYARISZAM            -- C_GYARISZAM - nvarchar(20)
        ,NULL AS C_GYARTASIEV           -- C_GYARTASIEV - int
        ,NULL AS C_HALOZATIKAPCSOLAT    -- C_HALOZATIKAPCSOLAT - char(1)
        ,NULL AS C_HORDOZHATO           -- C_HORDOZHATO - char(1)
        ,NULL AS C_INTERNETKAPCSOLAT    -- C_INTERNETKAPCSOLAT - char(1)
        ,t.C_KATEGORIA AS C_KATEGORIA            -- C_KATEGORIA - int
        ,t.C_LELTARISZAM AS C_LELTARISZAM          -- C_LELTARISZAM - nvarchar(20)
        ,t.C_MEGJEGYZES AS C_MEGJEGYZES           -- C_MEGJEGYZES - nvarchar(255)
        ,NULL AS C_MULTIMEDIAS          -- C_MULTIMEDIAS - char(1)
        ,t.C_NEV AS C_NEV                   -- C_NEV - nvarchar(255)
        ,NULL AS C_PEDAGOGUSHOZZAFERHET -- C_PEDAGOGUSHOZZAFERHET - char(1)
        ,NULL AS C_SZALLITO             -- C_SZALLITO - nvarchar(255)
        ,NULL AS C_TANULOHOZZAFERHET    -- C_TANULOHOZZAFERHET - char(1)
        ,NULL AS C_TARTOZEK             -- C_TARTOZEK - char(1)
        ,NULL AS C_TARTOZEKHIVATKOZAS   -- C_TARTOZEKHIVATKOZAS - nvarchar(20)
        ,t.C_TIPUS AS C_TIPUS                -- C_TIPUS - int
        ,NULL AS C_CELJA                -- C_CELJA - int
        ,NULL AS C_JELLEGE              -- C_JELLEGE - int
        ,NULL AS C_MENNYISEGIEGYSEG     -- C_MENNYISEGIEGYSEG - int
        ,NULL AS C_VONALKOD             -- C_VONALKOD - int
        ,t.C_TEREMID   AS C_TEREMID               -- C_TEREMID - int
        ,t.C_FELELOSID AS C_FELELOSID            -- C_FELELOSID - int
		,@intezmenyID AS C_INTEZMENYID
		,@tanevID AS C_TANEVID
        ,'F' AS TOROLT                 -- TOROLT - char(1)
        ,1 AS SERIAL                 -- SERIAL - int
        ,NULL AS LASTCHANGED            -- LASTCHANGED - datetime
        ,GETDATE() AS CREATED                -- CREATED - datetime
        ,NULL AS MODIFIER               -- MODIFIER - int
        ,@userID AS CREATOR                -- CREATOR - int
      FROM @tbl t
      WHERE NOT EXISTS (SELECT 1 FROM T_ESZKOZ WHERE C_NEV = t.C_NEV AND C_TEREMID = t.C_TEREMID);
        
    COMMIT TRANSACTION
  END TRY
  BEGIN CATCH
    IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0 
      ROLLBACK TRANSACTION;
    THROW
  END CATCH
END
GO

