IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'dbo.CP_SCA_Generar_Lista_Blanca') 
                   and OBJECTPROPERTY(id, N'IsProcedure') = 1 )
BEGIN
    DROP PROCEDURE dbo.CP_SCA_Generar_Lista_Blanca 
END
GO

CREATE PROCEDURE [dbo].[CP_SCA_Generar_Lista_Blanca]	@pId_Acceso			SMALLINT,
														@pFecha_Actual		DATETIME,
														@pFecha_Evento		DATETIME,
														@pId_Formato		CHAR(1) /*I: Intelektron*/
AS

CREATE TABLE #respuestaSCA	(Flag_Habilitado	TINYINT,
							Mensaje				VARCHAR(5000),
							Info				VARCHAR(101),
							Foto				VARCHAR(256),
							Foto_Bin			IMAGE,
							Id_Cliente			INT,
							Id_Cliente_Ref		INT,
							Tiempo_Mensaje		SMALLINT)
DECLARE @Credencial_Nro		VARCHAR(30)
DECLARE @Id_Controlador		SMALLINT
DECLARE @SqlStr				NVARCHAR(MAX)
DECLARE @SqlCmd				VARCHAR(MAX)
DECLARE @Fecha_Proceso		DATETIME
DECLARE @Id_Es_Ini			INT
DECLARE @Id_Es_Fin			INT
DECLARE @Id_Es_Max			INT

PRINT 'Ingreso Procedimiento: CP_SCA_Generar_Lista_Blanca'

IF(@pFecha_Actual = '19000101')
BEGIN
	SET @pFecha_Actual = GETDATE()
END

IF(@pFecha_Evento = '20501231')
BEGIN
	SET @pFecha_Evento = GETDATE()
END

SET @Id_Controlador = ISNULL((SELECT MIN(Id_Controlador) FROM CD_Controladores WHERE Id_Acceso = @pId_Acceso AND Tipo_Cont = 'L'), 0)

IF(@Id_Controlador = 0)
BEGIN
	RETURN
END

SET @Id_Es_Ini = (SELECT MAX(Id_ES) FROM CD_ES)

DECLARE curCDESListaBlanca CURSOR FOR 
SELECT Credencial_Nro FROM Clientes
WHERE
Activo = 1
AND LEN(ISNULL(Credencial_Nro, '')) = 10
ORDER BY Id_Cliente

OPEN curCDESListaBlanca
FETCH NEXT FROM curCDESListaBlanca INTO @Credencial_Nro
WHILE @@FETCH_STATUS = 0
BEGIN

	INSERT INTO #respuestaSCA
	EXEC dbo.CP_SCA_RegistrarAcceso @Id_Controlador, 
									'E', 
									@pFecha_Actual, 
									@pFecha_Evento,
									@Credencial_Nro,
									0,
									'',
									'',
									''

FETCH NEXT FROM curCDESListaBlanca INTO @Credencial_Nro
END 
CLOSE curCDESListaBlanca
DEALLOCATE curCDESListaBlanca

SET @Id_Es_Fin = (SELECT MAX(Id_ES) FROM CD_ES)

DELETE FROM CD_Lista_Blanca WHERE Id_Acceso = @pId_Acceso
SET @Fecha_Proceso = GETDATE()

INSERT INTO CD_Lista_Blanca
(Id_Acceso,				Fecha_Proceso,	Id_Formato,
Id_Cliente,				Razon_Social,	Credencial_Nro, 
Credencial_Nro_Intelek, Mensaje)
SELECT
@pId_Acceso						AS Id_Acceso,
@Fecha_Proceso					AS Fecha_Proceso,
@pId_Formato					AS Id_Formato,
CL.Id_Cliente					AS Id_Cliente,
LTRIM(RTRIM(CL.Razon_Social))	AS Razon_Social,
LTRIM(RTRIM(CL.Credencial_Nro)) AS Credencial_Nro,
CL.Credencial_Nro AS Credencial_Nro_Intelek,
RSCA.Mensaje					AS Mensaje
FROM Clientes CL, #respuestaSCA RSCA
WHERE
CL.Id_Cliente = RSCA.Id_Cliente
AND RSCA.Flag_Habilitado = 1
ORDER BY CL.Id_Cliente

DELETE FROM CD_ES WHERE Id_Controlador = @Id_Controlador AND Id_ES >= @Id_Es_Ini AND Id_ES <= @Id_Es_Fin

SET @Id_Es_Max = (SELECT MAX(ISNULL(Id_Es, 0))+2 FROM CD_ES)

DBCC CHECKIDENT('CD_ES', RESEED, @Id_Es_Max)

IF(@pId_Formato = 'I')
BEGIN
	PRINT 'Genera archivo en Formato CleverReiIn (Molinetes Intelektron)'
	SET @SqlStr =	'SELECT (CONVERT(VARCHAR(10), Id_Cliente) + '''';'''' + LTRIM(RTRIM(Razon_Social)) + '''';'''' + LTRIM(RTRIM(Credencial_Nro_Intelek)) + '''';'''' + LTRIM(RTRIM(Mensaje))) AS LB_Formato_Intelek' +
					' FROM Isis_Club.dbo.CD_Lista_Blanca' +
					' WHERE' +
					' Id_Acceso = ' + CONVERT(VARCHAR(10), @pId_Acceso) +
					' AND Id_Formato = ''''' + @pId_Formato + '''''' +
					' ORDER BY Id_Cliente'
END

PRINT @SqlStr

SET @SqlCmd = 'EXEC Master..xp_Cmdshell ''bcp "'+ @SqlStr +'" QUERYOUT "E:\Sistemas\Cleversoft\SCA\18\Listas_Blancas\listablanca_acc' + RIGHT('00' + CAST(@pId_Acceso AS VARCHAR), 2) + '.csv" -w -T -S 10.0.0.5\sql2014 -U sa -P kvy2012*. ''' 
PRINT @SqlCmd
EXEC(@SqlCmd)

PRINT 'FIN Procedimiento: CP_SCA_Generar_Lista_Blanca'