SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'WMAN_Entidades_GetInfo') )
DROP PROCEDURE WMAN_Entidades_GetInfo
GO

CREATE PROCEDURE WMAN_Entidades_GetInfo --Carga la informacion al selecionar el menu
	@id_juego INT,
	@vActivo  BIT
AS
BEGIN

	SELECT id_juego, LTRIM(RTRIM(descripcion))descripcion, activo, log_sheet, front_principal, activo eliminado
	INTO   #TempEntidades
	FROM   Juegos_Datos

	IF @id_juego  > 0 
	BEGIN 
	   DELETE #TempEntidades WHERE id_juego  <> @id_juego 
	END
	
	IF @vActivo <> 1
	BEGIN 
	   DELETE #TempEntidades WHERE activo  <> 1 
	END

	SELECT * 
	FROM   #TempEntidades
	ORDER BY descripcion
	RETURN

END
GO

---------------------------------------------------------------------------------
---------------------------------------------------------------------------------

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'WMAN_Entidades_RepInfo') )
DROP PROCEDURE WMAN_Entidades_RepInfo
GO

CREATE PROCEDURE WMAN_Entidades_RepInfo --Reportes
	@vActivo BIT
AS
BEGIN

	SELECT id_juego, LTRIM(RTRIM(descripcion))descripcion,activo, log_sheet, front_principal
	INTO   #TempEntidadesRep
	FROM   Juegos_Datos 
	
	IF @vActivo <> 1
	BEGIN 
	   DELETE #TempEntidadesRep WHERE activo <> 1
	END

	SELECT en.*, da.id_datos, da.base_datos, da.origen_datos, 
	       da.servidor, da.descripcion desc_datos 
	FROM      #TempEntidadesRep en
	LEFT JOIN Datos             da ON en.id_juego = da.id_juego
	ORDER BY descripcion

	RETURN

END
GO

---------------------------------------------------------------------------------
---------------------------------------------------------------------------------

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'WMAN_Entidades_PutInfo') )
DROP PROCEDURE WMAN_Entidades_PutInfo
GO

CREATE PROCEDURE WMAN_Entidades_PutInfo --Realiza el mantenimiento
	@id_juego INT,
	@descripcion VARCHAR(60),
	@activo BIT,
	@log_sheet BIT,
	@front_principal INT
AS

IF @front_principal = 0 SET @front_principal=null

SET @descripcion=LTRIM(RTRIM(@descripcion));

BEGIN
	DECLARE @MensajeError VARCHAR(255) = ''

	IF @activo = 0
	BEGIN
		
		IF (@descripcion = '')
		BEGIN
			SET @MensajeError = 'ERR_GEN_FAL_DAT'
			--Falta datos, no deje campos vacios 
			GOTO ERROR
		END
	
		IF @id_juego = 0
		BEGIN
			
			IF EXISTS (SELECT descripcion FROM Juegos_Datos WHERE descripcion = @descripcion) 
			BEGIN
				SET @MensajeError = 'ERR_GEN_REG_DUP'
				GOTO ERROR
			END
			
			--SET @front_principal = 0
		
			declare @p1 float
			set @p1 = 0
			exec dt_wherechared 'Juegos_Datos', 1, @p1 output
			select @p1
		
			-- Crear
			
			SET IDENTITY_INSERT Juegos_Datos ON
		
			INSERT INTO Juegos_Datos
			(
				id_juego, descripcion, activo, log_sheet, front_principal
			)
			VALUES
			(
				@P1,@descripcion,1, @log_sheet, @front_principal
			)
			
			SET IDENTITY_INSERT Juegos_Datos OFF

			SET @id_juego = @p1
		
		END
		ELSE
		BEGIN
			
			IF EXISTS (SELECT descripcion FROM Juegos_Datos 
			WHERE descripcion = @descripcion AND log_sheet = @log_sheet AND id_juego != @id_juego AND front_principal = @front_principal
			OR descripcion = @descripcion AND log_sheet != @log_sheet AND id_juego != @id_juego AND front_principal != @front_principal 
			OR descripcion = @descripcion AND log_sheet = @log_sheet AND id_juego = @id_juego AND front_principal = @front_principal) 
			BEGIN
				SET @MensajeError = 'ERR_GEN_REG_DUP'
				GOTO ERROR
			END
			
			-- Editar
		
			UPDATE Juegos_Datos
			SET descripcion = @descripcion,
			log_sheet = @log_sheet
			--front_principal = @front_principal
			WHERE id_juego = @id_juego
									
		END

	END
	ELSE
	BEGIN
		IF EXISTS (SELECT id_juego FROM Juegos_Datos WHERE id_juego = @id_juego AND activo = 1)
		BEGIN
			--desactiva la entidad
						
			UPDATE Juegos_Datos 
			SET    Activo = 0
			WHERE  id_juego = @id_juego
			
			-- Eliminar
			
			--DELETE FROM Juegos_Datos WHERE id_juego = @id_juego
			
		END
		ELSE
		BEGIN
			UPDATE Juegos_Datos 
			SET    Activo = 1
			WHERE  id_juego = @id_juego
		END
	END

	SELECT @id_juego AS Id
	
	RETURN

	ERROR:
		RAISERROR (@MensajeError, 16, 1)

END
GO