USE [HCITools]
GO

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CheckMaintenanceWindow]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[CheckMaintenanceWindow]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CheckMaintenanceWindow]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[CheckMaintenanceWindow] AS' 
END
GO

ALTER PROCEDURE [dbo].[CheckMaintenanceWindow] 
                 @in_debug  int = null,
                 @in_JobName sysname
                 
AS 
/*============================================================================= 

  Explication du traitement realise par la SP
  -------------------------------------------
    Cette SP sert à savoir si le job appelant peut s'executer ou s'il est dans la plage de maintenance
 
  Contexte d'utilisation
  ----------------------
    Cette SP est appelée via les jobs [D91040 - Backup of simple databases] et [D91050 - Backup of full databases]
 
  Parametres  
  ----------  
    @in_debug : non utilisé
    
  Creation : 16.12.20 / FLA
   
  Modifications : 04.05.21 / FLA : changement du comportement par défaut si la centrale n'est pas joignable
                  18.01.22 / SPE : OCTPDBA-92 : Adapt [HCITools].[dbo].[CheckMaintenanceWindow] stored procedure to get information from the new S10 maintenance windows
  
=============================================================================*/ 
 
set nocount on;

 
/*------------------- Declaration des variables --------------------*/
declare @DateFROM datetime = '',
        @DateTO datetime = ''
 
/*-------------------------- Traitement ---------------------------*/
BEGIN TRY

    SELECT 	@DateFROM = convert(datetime,[ITCS_value]) FROM [Arizona].[dbo].[IT_config_setting] WHERE [ITCS_key] = 'SCCMMWStart'
    SELECT @DateTO = convert(datetime,[ITCS_value]) FROM [Arizona].[dbo].[IT_config_setting] WHERE [ITCS_key] = 'SCCMMWEnd'

    IF @DateFROM is not null and @DateTO is not null
    BEGIN
      IF (GETDATE() BETWEEN convert(datetime,@DateFROM) AND convert(datetime,@DateTO))
      BEGIN
        EXEC msdb.dbo.sp_stop_job @job_name = @in_JobName
		RAISERROR('This server is actually in a SCCM Maintenance window, execution of this job is cancelled!',16,1)
      END
    END

/*---------------------- Traitement des erreurs ----------------------*/ 
END TRY
BEGIN CATCH

    /* Traitement des erreurs (avec RaiseError) */
    EXEC dbo.get_Error_Info @in_RaiseError = 1

END CATCH 
GO
