Creato metodo per la rimozione delle ispezioni più vecchie di 60 giorni
This commit is contained in:
@@ -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");
|
||||
@@ -212,6 +215,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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user