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 System.IO.Compression;
using Microsoft.Extensions.Logging;
using SteUp.Data.LocalDb; using SteUp.Data.LocalDb;
using SteUp.Shared.Core.Dto; using SteUp.Shared.Core.Dto;
using SteUp.Shared.Core.Entities; using SteUp.Shared.Core.Entities;
@@ -7,7 +8,9 @@ using SteUp.Shared.Core.Interface.System;
namespace SteUp.Maui.Core.Services; namespace SteUp.Maui.Core.Services;
public class FileManager(IDbPathProvider dbPathProvider) : IFileManager public class FileManager(
IDbPathProvider dbPathProvider,
ILogger<FileManager> logger) : IFileManager
{ {
private static string AttachedRoot => private static string AttachedRoot =>
Path.Combine(FileSystem.CacheDirectory, "attached"); Path.Combine(FileSystem.CacheDirectory, "attached");
@@ -212,6 +215,49 @@ public class FileManager(IDbPathProvider dbPathProvider) : IFileManager
return removed; 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) private void CleanupDirectoriesIfEmpty(Ispezione 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
@using SteUp.Shared.Components.Layout.Overlay @using SteUp.Shared.Components.Layout.Overlay
@using SteUp.Shared.Components.Layout.Spinner @using SteUp.Shared.Components.Layout.Spinner

View File

@@ -17,6 +17,7 @@ public class SteupDataService(
IDeviceService deviceService, IDeviceService deviceService,
IGenericSystemService genericSystemService, IGenericSystemService genericSystemService,
IIspezioniService ispezioniService, IIspezioniService ispezioniService,
IFileManager fileManager,
IDbInitializer dbInitializer) : ISteupDataService IDbInitializer dbInitializer) : ISteupDataService
{ {
public async Task Init() public async Task Init()
@@ -24,6 +25,7 @@ public class SteupDataService(
await dbInitializer.InitializeAsync(); await dbInitializer.InitializeAsync();
await LoadDataAsync(); await LoadDataAsync();
await CheckAndUpdateStatus(); await CheckAndUpdateStatus();
await CleanOldClosedInspection();
RegisterAppVersion(); 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() public async Task CheckAndUpdateStatus()
{ {
var ispezioni = await ispezioniService.GetAllIspezioniWithSchedeAsync(); var ispezioni = await ispezioniService.GetAllIspezioniWithSchedeAsync();

View File

@@ -12,6 +12,7 @@ public interface IFileManager
string GetFileToUploadDir(Ispezione ispezione, string fileName); 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 RemoveInspectionFile(Ispezione ispezione, string fileName, bool removeAlsoFromFinal = true,
bool removeAlsoFromToUpload = true); bool removeAlsoFromToUpload = true);