﻿-- Stored procedure
--V Transazione gestita a livello applicativo
CREATE PROCEDURE [dbo].[HIST_DELETEARCHIVIATI] AS
BEGIN
declare @ttlStorico as int
set @ttlStorico = 30
--delete dei restorati al passare dei 30 giorni
DELETE FROM dbo.ReportStorico
WHERE IDENTIFICATIVO IN
	(SELECT id 
	 from dbo.RepositoryStorico WHERE datediff(dd,caricamentoInStorico,getDate()) > @ttlStorico
    )
--aggiornamento puntamento tabella metadati
UPDATE repositoryMetadati
SET repository = 4
WHERE repository = 3 and id IN 
	(SELECT id 
	 from dbo.RepositoryStorico WHERE datediff(dd,caricamentoInStorico,getDate()) > @ttlStorico
    )
--Cancellazione report online NON storicizzati --41083 1.57.36 -  1480 0.2.55
--cancellazione com'era prima della fix
--DELETE FROM dbo.ReportFisico
--WHERE IDENTIFICATIVO IN 
--	(SELECT IdInRepository 
--	 FROM repositoryMetadati WHERE flagstoricizzato = 1 and  flaglock = 0
--	 )
--fix per problema lock/timeout
DELETE FROM dbo.ReportFisico
WHERE IDENTIFICATIVO IN 
    (SELECT TOP 10000 IdInRepository 
     FROM repositoryMetadati a
     join reportFisico b
     on a.idInRepository = b.identificativo
     WHERE flagstoricizzato = 1 and  flaglock = 0 and repository = 0
     )
     /*
WHILE @@ROWCOUNT>0
DELETE FROM dbo.ReportFisico
WHERE IDENTIFICATIVO IN 
    (SELECT TOP 2000 IdInRepository 
     FROM repositoryMetadati a
     join reportFisico b
     on a.idInRepository = b.identificativo
     WHERE flagstoricizzato = 1 and  flaglock = 0 and repository = 0
     )
--fine fix per problema lock/timeout
*/
--Cancellazione report online storicizzati 1232 0.02.30  - 56 0.0.3
DELETE FROM dbo.ReportFisico
WHERE IDENTIFICATIVO IN 
	(
	 SELECT top 10000 IdInRepository
	 FROM repositoryMetadati a 
	 join reportFisico b
     on a.idInRepository = b.identificativo
	 WHERE flagstoricizzato = 1 and repositoryPrestorico = 0 and flaglock = 1 and idinrepository in
	  (351055,
       351064,
       351071)
	/*
	SELECT IdInRepository 
	 FROM repositoryMetadati WHERE flagstoricizzato = 1 and repositoryPrestorico = 0 and flaglock = 1*/
	 )
--Cancellazione report contratto sei
DELETE FROM dbo.C6ReportFisico --32363 01.03.02 - 387 0.0.42
WHERE IDENTIFICATIVO IN 
	(SELECT top 10000 IdInRepository--, a.*
	 FROM repositoryMetadati a 
	 join C6ReportFisico b
	 on a.idInRepository = b.identificativo
	 WHERE flagstoricizzato = 1 and repositoryPrestorico = 1 and flaglock = 1
	 )
--Cancellazione report contratto sei
DELETE FROM dbo.C6ReportFisico_CAMPAGNA
WHERE IDENTIFICATIVO IN 
	(SELECT IdInRepository 
	 FROM repositoryMetadati WHERE flagstoricizzato = 1 and repositoryPrestorico = 2 and flaglock = 1
	 )
--aggiornamento repository tabella dei metadati ------begin transaction rollback
--vengono aggiornati i report a lucchetto aperti cancellati
update repositoryMetadati
set repository = 4
WHERE flagstoricizzato = 1
and repository not in (3,4)  --3 è quello storico, non va riaggiornato da storico a nastro finchè non sono trascorsi 30gg
END