DROP PROCEDURE IF EXISTS [dbo].[uspUpdateTanuloMulasztasListNaplozas]
GO

CREATE PROCEDURE [dbo].[uspUpdateTanuloMulasztasListNaplozas]
  @pModifier int
  ,@pTanevid int
  ,@pIntezmenyid int
  ,@pModifydate datetime
  ,@pJson nvarchar(max)
AS
BEGIN
  SET NOCOUNT ON;

  DROP TABLE IF EXISTS #Tanulomulasztas
  CREATE TABLE #Tanulomulasztas
  (
    Id int NULL
    ,C_Op int NULL
    ,C_Igazolt char(1) NULL
    ,C_Kesespercben int NULL
    ,C_Megjegyzes nvarchar(255) NULL
    ,C_Tipus int NULL
    ,C_Igazolastipusa int NULL
    ,C_Oratanuloiid int NULL
    ,C_Tanitasiorakid int NULL
  );

  INSERT INTO #Tanulomulasztas
  SELECT *
  FROM OPENJSON(@pJson) WITH (
    Id int '$.ID'
    ,C_Op int '$.Op'
    ,C_Igazolt char(1) '$.Igazolt'
    ,C_Kesespercben int '$.KesesPercben'
    ,C_Megjegyzes nvarchar(255) '$.Megjegyzes'
    ,C_Tipus int '$.Tipus'
    ,C_Igazolastipusa int '$.IgazolasTipusa'
    ,C_Oratanuloiid int '$.OraTanuloId'
    ,C_Tanitasiorakid int '$.TanitasiOrakId'
    );

  INSERT INTO [dbo].[T_TANULOMULASZTAS] (
    C_Igazolt
    ,C_Kesespercben
    ,C_Megjegyzes
    ,C_Tipus
    ,C_Igazolastipusa
    ,C_Intezmenyid
    ,C_Tanevid
    ,C_Oratanuloiid
    ,C_Tanitasiorakid
    ,Creator
    ,Created
    ,Serial
  )
  SELECT
    UPPER(C_Igazolt)
    ,C_Kesespercben
    ,C_Megjegyzes
    ,C_Tipus
    ,C_Igazolastipusa
    ,@pIntezmenyid
    ,@pTanevid
    ,C_Oratanuloiid
    ,C_Tanitasiorakid
    ,@pModifier
    ,@pModifydate
    ,0
  FROM #Tanulomulasztas
  WHERE C_Op = 0; -- Insert op

  UPDATE Tmul
  SET
    Tmul.C_Igazolt = UPPER(Tmult.C_Igazolt)
    ,Tmul.C_Kesespercben = Tmult.C_Kesespercben
    ,Tmul.C_Megjegyzes = Tmult.C_Megjegyzes
    ,Tmul.C_Tipus = Tmult.C_Tipus
    ,Tmul.C_Igazolastipusa = Tmult.C_Igazolastipusa
    ,Tmul.C_Oratanuloiid = Tmult.C_Oratanuloiid
    ,Tmul.C_Tanitasiorakid = Tmult.C_Tanitasiorakid
    ,Tmul.Modifier = @pModifier
    ,Tmul.Lastchanged = @pModifydate
    ,Tmul.Serial = Tmul.Serial + 1
  FROM [dbo].[T_TANULOMULASZTAS] AS Tmul
    INNER JOIN #Tanulomulasztas AS Tmult ON Tmul.Id = Tmult.Id
  WHERE Tmult.C_Op = 1 -- Update
    AND Tmul.C_Intezmenyid = @pIntezmenyid
    AND Tmul.C_Tanevid = @pTanevid;

  UPDATE Tmul
  SET
    Tmul.Torolt = 'T'
    ,Tmul.Modifier = @pModifier
    ,Tmul.Lastchanged = @pModifydate
    ,Tmul.Serial = Tmul.Serial + 1
  FROM [dbo].[T_TANULOMULASZTAS] AS Tmul
    INNER JOIN #Tanulomulasztas AS Tmult ON Tmul.Id = Tmult.Id
  WHERE Tmult.C_Op = 2 -- Delete
    AND Tmul.C_Intezmenyid = @pIntezmenyid
    AND Tmul.C_Tanevid = @pTanevid;
END;
GO