Creato metodo per la rimozione delle ispezioni più vecchie di 60 giorni

This commit is contained in:
2026-03-04 12:08:57 +01:00
parent 2d938fb210
commit 21ee5137b0
4 changed files with 66 additions and 3 deletions

View File

@@ -1,4 +1,5 @@
using System.IO.Compression;
using Microsoft.Extensions.Logging;
using SteUp.Data.LocalDb;
using SteUp.Shared.Core.Dto;
using SteUp.Shared.Core.Entities;
@@ -7,7 +8,9 @@ using SteUp.Shared.Core.Interface.System;
namespace SteUp.Maui.Core.Services;
public class FileManager(IDbPathProvider dbPathProvider) : IFileManager
public class FileManager(
IDbPathProvider dbPathProvider,
ILogger<FileManager> logger) : IFileManager
{
private static string AttachedRoot =>
Path.Combine(FileSystem.CacheDirectory, "attached");
@@ -213,6 +216,49 @@ public class FileManager(IDbPathProvider dbPathProvider) : IFileManager
return removed;
}
public bool RemoveInspection(Ispezione ispezione, bool removeAlsoFromFinal, bool removeAlsoFromToUpload)
{
ArgumentNullException.ThrowIfNull(ispezione);
var removedAnything = false;
if (removeAlsoFromToUpload)
TryDeleteDirectory(GetInspectionToUploadDir(ispezione));
if (removeAlsoFromFinal)
TryDeleteDirectory(GetInspectionFinalDir(ispezione));
try
{
CleanupDirectoriesIfEmpty(ispezione);
}
catch(Exception e)
{
logger.LogError(e, e.Message);
SentrySdk.CaptureException(e);
}
return removedAnything;
void TryDeleteDirectory(string? dir)
{
if (string.IsNullOrWhiteSpace(dir)) return;
try
{
if (!Directory.Exists(dir)) return;
Directory.Delete(dir, recursive: true);
removedAnything = true;
}
catch(Exception e)
{
logger.LogError(e, e.Message);
SentrySdk.CaptureException(e);
}
}
}
private void CleanupDirectoriesIfEmpty(Ispezione ispezione)
{
var baseDir = GetInspectionBaseDir(ispezione);

View File

@@ -1,5 +1,4 @@
@using System.Data.Common
@using Microsoft.Extensions.Logging
@using Microsoft.Extensions.Logging
@using SteUp.Shared.Components.Layout
@using SteUp.Shared.Components.Layout.Overlay
@using SteUp.Shared.Components.Layout.Spinner

View File

@@ -17,6 +17,7 @@ public class SteupDataService(
IDeviceService deviceService,
IGenericSystemService genericSystemService,
IIspezioniService ispezioniService,
IFileManager fileManager,
IDbInitializer dbInitializer) : ISteupDataService
{
public async Task Init()
@@ -24,6 +25,7 @@ public class SteupDataService(
await dbInitializer.InitializeAsync();
await LoadDataAsync();
await CheckAndUpdateStatus();
await CleanOldClosedInspection();
RegisterAppVersion();
}
@@ -34,6 +36,21 @@ public class SteupDataService(
);
}
private async Task CleanOldClosedInspection()
{
var ispezioni = (await ispezioniService.GetAllIspezioniWithSchedeAsync())
.Where(x =>
x.Stato == StatusEnum.Completata &&
x.Data < DateTime.Now.AddDays(-60)
).ToList();
foreach (var ispezione in ispezioni)
{
fileManager.RemoveInspection(ispezione);
await ispezioniService.DeleteIspezioneAsync(ispezione.CodMdep, ispezione.Data, ispezione.Rilevatore);
}
}
public async Task CheckAndUpdateStatus()
{
var ispezioni = await ispezioniService.GetAllIspezioniWithSchedeAsync();

View File

@@ -12,6 +12,7 @@ public interface IFileManager
string GetFileToUploadDir(Ispezione ispezione, string fileName);
bool RemoveInspection(Ispezione ispezione, bool removeAlsoFromFinal = true, bool removeAlsoFromToUpload = true);
bool RemoveInspectionFile(Ispezione ispezione, string fileName, bool removeAlsoFromFinal = true,
bool removeAlsoFromToUpload = true);