﻿DROP PROCEDURE IF EXISTS uspUpdateAtlagByTanuloTantargy
GO

CREATE PROCEDURE uspUpdateAtlagByTanuloTantargy
   @pTanuloId int
  ,@pTantargyId int
  ,@pTanevId int
  ,@pIntezmenyId int
  ,@pOktatasNevelesiFeladatId int
  ,@pFelhasznaloId int
AS
BEGIN
  DECLARE 
     @osztalyzatOsszege int
    ,@osztalyzatSzama int
    ,@sulyozottOsztalyzatOsszege int
    ,@sulyozottOsztalyzatSzama int

  SELECT 
     @osztalyzatOsszege = SUM(d.C_VALUE)
    ,@osztalyzatSzama = COUNT(1)
    ,@sulyozottOsztalyzatOsszege = SUM(d.C_VALUE * em.C_SULY)
    ,@sulyozottOsztalyzatSzama = SUM(em.C_SULY)  
  FROM T_TANULOERTEKELES_OSSZES er
    INNER JOIN T_ERTEKELESMOD_OSSZES em ON em.ID = er.C_ERTEKELESMODID AND em.C_ALTANEVID = er.C_TANEVID
    INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = er.C_ERTEKELESOSZTALYZATID AND d.C_TANEVID = er.C_TANEVID
    INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = er.C_OSZTALYCSOPORTID
    INNER JOIN T_FELADATELLATASIHELY_OSSZES feh ON feh.ID = ocs.C_FELADATELLATASIHELYID
  WHERE feh.C_OKTATASINEVELESIFELADATTIPUS = @pOktatasNevelesiFeladatId
    AND er.C_TANULOID = @pTanuloId
    AND er.C_TANTARGYID = @pTantargyId 
    AND er.C_TIPUSID = 1518
    AND er.TOROLT = 'F'

  IF @osztalyzatSzama = 0 BEGIN
    DELETE FROM T_TANULOTANTARGYATLAG_OSSZES 
    WHERE C_TANEVID = @pTanevId 
      AND C_TANULOID = @pTanuloId 
      AND C_TANTARGYID = @pTantargyId 
      AND C_OKTATASNEVELESIFELADATID = @pOktatasNevelesiFeladatId
  END
  ELSE BEGIN
    UPDATE T_TANULOTANTARGYATLAG_OSSZES SET
       C_OSZTALYZATOSSZEGE = @osztalyzatOsszege
      ,C_OSZTALYZATSZAMA = @osztalyzatSzama
      ,C_SULYOZOTTOSZTALYZATOSSZEGE = @sulyozottOsztalyzatOsszege
      ,C_SULYOZOTTOSZTALYZATSZAMA = @sulyozottOsztalyzatSzama
      ,LASTCHANGED = GETDATE()
      ,MODIFIER = @pFelhasznaloId
      ,SERIAL += 1 
    WHERE C_TANEVID = @pTanevId 
      AND C_TANULOID = @pTanuloId 
      AND C_TANTARGYID = @pTantargyId 
      AND C_OKTATASNEVELESIFELADATID = @pOktatasNevelesiFeladatId

    IF @@ROWCOUNT = 0 BEGIN

      INSERT INTO T_TANULOTANTARGYATLAG (
         C_OSZTALYZATOSSZEGE         
        ,C_OSZTALYZATSZAMA           
        ,C_SULYOZOTTOSZTALYZATOSSZEGE
        ,C_SULYOZOTTOSZTALYZATSZAMA  
        ,C_TANTARGYID                
        ,C_TANULOID                  
        ,C_INTEZMENYID               
        ,C_TANEVID                   
        ,TOROLT                      
        ,SERIAL                      
        ,LASTCHANGED                 
        ,CREATED                     
        ,MODIFIER                    
        ,CREATOR                     
        ,C_OKTATASNEVELESIFELADATID
      ) VALUES (
         @osztalyzatOsszege
        ,@osztalyzatSzama
        ,@sulyozottOsztalyzatOsszege
        ,@sulyozottOsztalyzatSzama
        ,@pTantargyId
        ,@pTanuloId
        ,@pIntezmenyId
        ,@pTanevId
        ,'F'
        ,0
        ,GETDATE()
        ,GETDATE()
        ,0
        ,@pFelhasznaloId
        ,@pOktatasNevelesiFeladatId
      )
    END
  END
END
GO
