﻿-- =============================================
-- Description:	<A tantárgyfelosztás módosításával az órarendi órák, a tanítási órák és az értékelések átállítása is történjen meg>
-- =============================================

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

CREATE PROCEDURE [dbo].[sp_UpdateTantargyfelosztasVisszamenoleges]
	 @pIntezmenyId int
	,@pTanevId int
	,@pUserId int
	,@pEredetiTanarId int
	,@pModosultTanarId int
	,@pEredetiTantargyId int
	,@pModosultTantargyId int
	,@pEredetiOsztalyCsoportId int
	,@pModosultOsztalyCsoportId int

AS
BEGIN

	BEGIN TRY
	SET NOCOUNT ON
	SET XACT_ABORT ON

	BEGIN TRANSACTION

	CREATE TABLE #OldEErtekelesek (
		 OldErtekelesId int)
	INSERT INTO #OldEErtekelesek (
		 OldErtekelesId)
  EXEC [dbo].[uspGetEgyszerAdhatoErtekelesekTantargyfelosztasModositasAlapjan]
		 @pTanevId = @pTanevId
		,@pOldTantargyId = @pEredetiTantargyId
		,@pNewTantargyId = @pModosultTantargyId
		,@pOldOsztalyCsoportId = @pEredetiOsztalyCsoportId
		,@pNewOsztalyCsoportId = @pModosultOsztalyCsoportId

	UPDATE T_TANITASIORA SET
		 C_TANTARGYID 			=	@pModosultTantargyId
		,C_OSZTALYCSOPORTID 	=	@pModosultOsztalyCsoportId
		,C_TANARID 				=	@pModosultTanarId
		,SERIAL					+=	1
		,LASTCHANGED			=   GETDATE()
		,MODIFIER				=   @pUserId
	FROM
		T_TANITASIORA
	WHERE
			C_INTEZMENYID 		= 	@pIntezmenyId
		AND C_TANEVID 			= 	@pTanevId
		AND C_TANTARGYID 		= 	@pEredetiTantargyId
		AND C_OSZTALYCSOPORTID	= 	@pEredetiOsztalyCsoportId
		AND C_TANARID			=   @pEredetiTanarId

	UPDATE T_TANULOERTEKELES SET
		 C_TANTARGYID 			=	@pModosultTantargyId
		,C_OSZTALYCSOPORTID 	=	@pModosultOsztalyCsoportId
		,C_ERTEKELOID 			=	@pModosultTanarId
		,SERIAL					+=  1
		,LASTCHANGED			=   GETDATE()
		,MODIFIER				=   @pUserId
	FROM
		T_TANULOERTEKELES
	WHERE
			C_INTEZMENYID 		= 	@pIntezmenyId
		AND C_TANEVID 			= 	@pTanevId
		AND C_TANTARGYID 		= 	@pEredetiTantargyId
		AND C_OSZTALYCSOPORTID	= 	@pEredetiOsztalyCsoportId
		AND C_ERTEKELOID		=   @pEredetiTanarId
		AND NOT EXISTS (SELECT 1 FROM #OldEErtekelesek WHERE OldErtekelesId = ID)

	UPDATE T_TANMENET SET
		 C_TANTARGYID 			=	@pModosultTantargyId
		,C_OSZTALYCSOPORTID 	=	@pModosultOsztalyCsoportId
		,C_FELTOLTOID 			=	@pModosultTanarId
		,SERIAL					+=  1
		,LASTCHANGED			=   GETDATE()
		,MODIFIER				=   @pUserId
	FROM
		T_TANMENET
	WHERE
			C_INTEZMENYID 		= 	@pIntezmenyId
		AND C_TANEVID 			= 	@pTanevId
		AND C_TANTARGYID 		= 	@pEredetiTantargyId
		AND C_OSZTALYCSOPORTID	= 	@pEredetiOsztalyCsoportId
		AND C_FELTOLTOID		=   @pEredetiTanarId
   

    COMMIT TRANSACTION
       END TRY
       BEGIN CATCH
       IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0 
             ROLLBACK TRAN;
             THROW
       END CATCH
		
END

GO