IF EXISTS ( SELECT * 
            FROM   sysobjects 
            WHERE  id = object_id(N'dbo.CF_Turno_Validar') 
                   and type = 'FN')
BEGIN
    DROP FUNCTION dbo.CF_Turno_Validar
END
GO

CREATE FUNCTION [dbo].[CF_Turno_Validar](@pId_Cliente INT, @pId_Turno BIGINT)
RETURNS VARCHAR(5000)
AS

BEGIN

DECLARE @Fecha       DATETIME
DECLARE @Id_Recurso  INT 
DECLARE @Duracion_Turno SMALLINT
DECLARE @Horas_Anticipacion DECIMAL(8,2)
DECLARE @Cupo_Min_Indiv INT
DECLARE @Cupo_Max_Compartido INT
DECLARE @Cupo_Max_Indiv INT
DECLARE @Turno_previo  SMALLINT 
DECLARE @Respuesta VARCHAR(5000) 
DECLARE @Minutos_Ant_Oport  INT
DECLARE @Minutos_Post_Oport INT

SELECT @Id_Recurso = Id_Recurso, @Fecha = Fecha  FROM CRM_Turnos WHERE ID_TURNO = @pId_Turno

SELECT @Duracion_Turno = Frecuencia,@Horas_Anticipacion = Horas_Anticipacion, @Cupo_Min_Indiv = Cupo_Min_Indiv
       ,@Cupo_Max_Compartido = Cupo_Max_Compartido, @Cupo_Max_Indiv = Cupo_Max_Indiv 
	   ,@Minutos_Ant_Oport = Minutos_Ant_Oport, @Minutos_Post_Oport = Minutos_Post_Oport
	   FROM Empresas_Sedes_Sec_Recuros_Horarios WHERE Id_Recurso = @Id_Recurso


IF (@Minutos_Ant_Oport <> 0 OR @Minutos_Post_Oport <> 0) AND GETDATE() >= DATEADD(minute,@Minutos_Ant_Oport*-1,@Fecha) 
					 AND GETDATE() <= DATEADD(minute,@Minutos_Post_Oport,@Fecha)
	BEGIN
		SET @Respuesta = ''
		RETURN @Respuesta
	END


IF DATEADD(hh,@Horas_Anticipacion,GETDATE()) > @Fecha 
	BEGIN
		SET @Respuesta = 'No es posible tomar la reserva con esta anticipación'
		RETURN @Respuesta
	END

--busqueda de turnos previos.
SET @Turno_previo = (SELECT COUNT(*) FROM CRM_Turnos T WHERE T.Id_Cliente = @pId_Cliente
						AND Getdate() < DATEADD(minute,@Duracion_Turno,@Fecha))

IF @Turno_previo = 0
	SET @Turno_previo = (SELECT COUNT(*) FROM CRM_Turnos T, CRM_Turnos_Clientes TC WHERE TC.Id_Turno = T.Id_Turno
				AND TC.Id_Cliente = @pId_Cliente 
				AND Getdate() < DATEADD(minute,@Duracion_Turno,@Fecha))


IF @Turno_previo = 0
	BEGIN
		SET @Respuesta = ''
	END
ELSE
	BEGIN
		SET @Respuesta = 'Posee una reserva para la fecha:  '+ CONVERT(VARCHAR(10),@Fecha,103) + ' ' + CONVERT(VARCHAR(5),@Fecha,14)
	END


RETURN @Respuesta

END

