﻿DROP PROCEDURE IF EXISTS uspDeleteAllZaradekokAndZaradekNyelvekByTanulocsoportok
GO

CREATE PROCEDURE uspDeleteAllZaradekokAndZaradekNyelvekByTanulocsoportok
   @pModifierId int
  ,@pTanuloCsoportIdList nvarchar(max)
  ,@pIsOsztalyList bit
  
AS
BEGIN
  SET NOCOUNT ON;

  IF(@pIsOsztalyList = 1) BEGIN
    ;WITH ZaradekCTE AS  (  
         SELECT
      z.ID
      ,IIF(tcs.C_KILEPESDATUM IS NULL  OR z.C_ISKIVAGYATSOROLASIZARADEK = 'F' , 2, ROW_NUMBER() OVER (PARTITION BY C_TANULOCSOPORTID ORDER BY C_ISKIVAGYATSOROLASIZARADEK DESC, C_ROGZITESDATUMA DESC)) AS RN
      FROM T_ZARADEK_OSSZES z
        INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID AND tcs.TOROLT = 'F'
      WHERE tcs.ID IN (SELECT VALUE FROM string_split(@pTanuloCsoportIdList, ','))
        AND z.TOROLT = 'F'
    )  
​
    UPDATE z SET  
       z.TOROLT = 'T'
      ,z.SERIAL += 1
      ,z.LASTCHANGED = GETDATE()
      ,z.MODIFIER = @pModifierId 
    FROM T_ZARADEK_OSSZES z
    INNER JOIN ZaradekCTE zcte ON zcte.ID = z.ID
    WHERE zcte.RN > 1
​
  END 
  ELSE BEGIN
    UPDATE z SET
       z.TOROLT = 'T'
      ,z.SERIAL += 1
      ,z.LASTCHANGED = GETDATE()
      ,z.MODIFIER = @pModifierId 
    FROM T_ZARADEK_OSSZES z
      INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID
    WHERE tcs.ID IN (SELECT VALUE FROM string_split(@pTanuloCsoportIdList, ','))
      AND z.TOROLT = 'F'
  END
  
  UPDATE zny SET 
     zny.TOROLT = 'T'
    ,zny.SERIAL = zny.SERIAL + 1
    ,zny.LASTCHANGED = GETDATE()
    ,zny.MODIFIER = @pModifierId
  FROM T_ZARADEKNYELV_OSSZES zny 
    INNER JOIN T_ZARADEK_OSSZES z ON z.ID = zny.C_ZARADEKID
    INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = z.C_TANULOCSOPORTID AND tcs.TOROLT = 'F'
  WHERE zny.TOROLT = 'F' AND z.TOROLT = 'T'
END 
GO
