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

CREATE PROCEDURE [dbo].[CP_Reserva_Producto]	@pId_Producto VARCHAR(14)
AS
SET NOCOUNT ON

/*Declaracion Variables Locales*/

DECLARE @Mensaje			VARCHAR(100)
DECLARE @Reservado			INT
DECLARE @Fecha_Reserva		DATETIME
DECLARE @cant_min_reserva	INT

--ACTUALIZACIONES
--21/03/2022: Se cambia DATEADD(MINUTE, -1, GETDATE() por DATEADD(MINUTE, (-1) * @cant_min_reserva, GETDATE()


--Se utiliza para cuando una persona hace clic sobre un producto(asiento) se bloquee el producto durante el tiempo que esta definido en el parametro cant_min_reserva

--1: Esta reservado (Nadie mas lo puede reservar)
--0: No estaba reservado y lo reserva

SET @cant_min_reserva = CONVERT(INT, dbo.CF_xParam('cant_min_reserva'))

SET @Fecha_Reserva =  (SELECT ISNULL(Fecha_Reserva,'19900101') FROM Productos WHERE Id_Producto = @pId_Producto)

IF(@Fecha_Reserva >= DATEADD(MINUTE, (-1) * @cant_min_reserva, GETDATE()))
BEGIN 
	SET @Reservado = 1
END 
ELSE
BEGIN
	UPDATE Productos 
	SET Fecha_Reserva = GETDATE()  
	WHERE 
	Id_Producto=@pId_Producto

	SET @Reservado = 0
END

SELECT @Reservado AS 'Reservado'
