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 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");
|
||||||
@@ -213,6 +216,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)
|
||||||
{
|
{
|
||||||
var baseDir = GetInspectionBaseDir(ispezione);
|
var baseDir = GetInspectionBaseDir(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
|
||||||
@using SteUp.Shared.Components.Layout.Overlay
|
@using SteUp.Shared.Components.Layout.Overlay
|
||||||
@using SteUp.Shared.Components.Layout.Spinner
|
@using SteUp.Shared.Components.Layout.Spinner
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user