
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

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

CREATE PROCEDURE WMAN_Datos_GetInfo --Carga la informacion al selecionar el menu
	@id_juego INT
AS
BEGIN
	SELECT	dt.id_datos, dt.id_juego, dt.id_modulo, LTRIM(RTRIM(dt.base_datos))base_datos, LTRIM(RTRIM(dt.descripcion))descripcion, 
			LTRIM(RTRIM(dt.origen_datos))origen_datos, LTRIM(RTRIM(dt.login))login, LTRIM(RTRIM(dt.password))password,
			dt.servidor, dt.backup_antes, dt.backup_desp, ISNULL(dtx.linked_server, '') linked_server
	FROM       Datos dt
	LEFT  JOIN DatosX dtx on dt.id_datos = dtx.id_datos
	WHERE id_juego = @id_juego
	ORDER BY descripcion
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_Datos_RepInfo') )
DROP PROCEDURE WMAN_Datos_RepInfo
GO

CREATE PROCEDURE WMAN_Datos_RepInfo
	@vEliminado BIT
AS
BEGIN
	SELECT id_datos, id_juego, id_modulo, base_datos, descripcion, origen_datos, login, password, servidor, backup_antes, backup_desp 
	FROM Datos 
	
	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_Datos_PutInfo') )
DROP PROCEDURE WMAN_Datos_PutInfo
GO

CREATE PROCEDURE WMAN_Datos_PutInfo
	@id_datos INT,
	@id_juego INT,
	@id_modulo INT,
	@base_datos VARCHAR(30),
	@descripcion VARCHAR(32),
	@origen_datos VARCHAR(30),
	@login VARCHAR(40),
	@password VARCHAR(15),
	@servidor VARCHAR(40),
	@backup_antes VARCHAR(40),
	@backup_desp VARCHAR(40),
	@linked_server VARCHAR(100),
	@eliminado INT
AS
BEGIN
	DECLARE @MensajeError VARCHAR(255) = ''

	IF @eliminado = 0
	BEGIN

		IF @id_datos = 0
		BEGIN
		
			IF LEN(LTRIM(RTRIM(@backup_antes))) = 0
			BEGIN
				SET @backup_antes = NULL
			END
			IF LEN(LTRIM(RTRIM(@backup_desp))) = 0
			BEGIN
				SET @backup_desp = NULL
			END
				
			IF EXISTS(select base_datos from Datos where base_datos=@base_datos and id_juego=@id_juego and id_modulo=@id_modulo)
			BEGIN
				SET @MensajeError = 'ERR_GEN_BD_DUP'
				--bd duplicado
				GOTO ERROR
			END
			
			IF EXISTS(select base_datos from Datos where base_datos=@base_datos and id_juego!=@id_juego and id_modulo=@id_modulo)
			BEGIN
				SET @MensajeError = 'ERR_GEN_BD_DUP'
				--bd duplicado
				GOTO ERROR
			END
			
			IF NOT EXISTS(select id_modulo from Modulo where id_modulo=@id_modulo)
			BEGIN
				SET @MensajeError = 'ERR_MAN_BD_MOD'
				--bd no se encuentra en Modulo
				GOTO ERROR
			END
		
			-- Crear
			
			declare @valor_llave INT
			SET @valor_llave= IDENT_CURRENT ('Datos');
			
			UPDATE syswinFOR
			SET valor_llave = @valor_llave+1
			WHERE desc_tabla = 'DATOS'
			
			if(@servidor='')
			BEGIN
				SELECT @servidor=srvnetname From mASter..sysservers
			END
			
			INSERT INTO Datos
			(
				id_juego, id_modulo, base_datos, descripcion, origen_datos, login, password, servidor, backup_antes, backup_desp
			)
			VALUES
			(
				@id_juego, @id_modulo, @base_datos, @descripcion, @origen_datos, @login, @password, @servidor, @backup_antes, @backup_desp
			)
			
			SET @id_datos = @@IDENTITY
			
			INSERT INTO DatosX
			(
				id_datos, linked_server
			)
			VALUES
			(
				@id_datos, @linked_server
			)
		
		END
		ELSE
		BEGIN
		
			-- Editar
		
			UPDATE Datos
			SET id_juego = @id_juego,
			    id_modulo = @id_modulo,
			    base_datos = @base_datos,
			    descripcion = @descripcion,
			    origen_datos = @origen_datos,
			    login = @login,
			    password = @password,
			    servidor = @servidor,
			    backup_antes = @backup_antes,
			    backup_desp = @backup_desp
			WHERE id_datos = @id_datos
			
			IF NOT EXISTS (SELECT id_datos FROM DatosX WHERE id_datos = @id_datos)
			BEGIN
				INSERT INTO DatosX
				(
					id_datos, linked_server
				)
				VALUES
				(
					@id_datos, @linked_server
				)
			END
			ELSE
			BEGIN
				UPDATE DatosX
				SET linked_server = @linked_server
				WHERE id_datos = @id_datos
			END
		
		END

	END
	ELSE
	BEGIN
	
	-- select * from IcsTermServ
	
		IF EXISTS(select id_datos from IcsTermServ where id_datos=@id_datos)
			BEGIN
				SET @MensajeError = 'ERR_GEN_BD_LIG'
				--bd esta ligado a una tabla 
				GOTO ERROR
			END
			
		IF EXISTS(select id_datos_origen, id_datos_destino from Enlace_Datos where id_datos_origen=@id_datos OR id_datos_destino=@id_datos)
			BEGIN
				SET @MensajeError = 'ERR_GEN_BD_LIG_ENL'
				--bd esta ligado a una tabla 
				GOTO ERROR
			END
			
			--DELETE FROM IcsTermServ 
			DELETE FROM Datos WHERE id_datos = @id_datos
			
			DELETE FROM DatosX WHERE id_datos = @id_datos

	END

	SELECT @id_datos AS Id
	
	RETURN

	ERROR:
		RAISERROR (@MensajeError, 16, 1)

END
GO
