Files
mapo-core/MP.Prog/Controllers/FileChangeController.cs
T
2024-10-23 14:06:59 +02:00

130 lines
4.1 KiB
C#

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using MP.FileData.Controllers;
using MP.Prog.Data;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace MP.Prog.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class FileChangeController : ControllerBase
{
#region Public Constructors
/// <summary>
/// Init generico
/// </summary>
/// <param name="FileArchDService"></param>
public FileChangeController(FileArchDataService FileArchDService)
{
FADService = FileArchDService;
Log.Info("Avviata classe FileChangeController");
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Verifica Health servizi FileChange
/// GET api/FileChange
/// </summary>
/// <returns></returns>
[HttpGet]
public ActionResult<string> Get()
{
return "OK";
}
/// <summary>
/// Esegue controllo + approvazione modifiche x directory
/// GET api/FileChange/anagkeyval/[id]?[CodApp]
/// </summary>
/// <param name="id">Directory / IdxMacchina | 0/ALL = tutte</param>
/// <param name="numDayPrev">Verifica file modificati da numDayPrev gg</param>
/// <returns>Elenco dei file approvati</returns>
[HttpGet("approve/{id}")]
public async Task<List<string>> approve(string id, int numDayPrev)
{
List<string> result = new List<string>();
// verifico se una o tutte le macchine
List<string> listDir = new List<string>();
if (id == "ALL" || id == "0")
{
var machList = await FADService.ArchMaccGetAll();
listDir = machList
.Where(x => !string.IsNullOrEmpty(x.BasePath))
.Select(x => x.IdxMacchina).ToList();
}
else
{
listDir.Add(id);
}
// ciclo su tutte le macchine e faccio approvazione...
foreach (var currDir in listDir)
{
// eseguo singolo controllo, utente = "" (è auto-approvazione)
await FADService.UpdateMachineArchive(currDir, numDayPrev, false, false, "");
List<string> listAppr = await ForceApproveMod(currDir, numDayPrev);
result.AddRange(listAppr);
}
return result;
}
/// <summary>
/// Effettua approvazione file modificati, restituendo elenco
/// </summary>
/// <param name="currDir"></param>
/// <param name="numDayPrev"></param>
/// <returns></returns>
private async Task<List<string>> ForceApproveMod(string currDir, int numDayPrev)
{
List<string> answ = new List<string>();
// preparo filtro
SelectData currFilt = new SelectData()
{
IdxMacchina = currDir,
OnlyActive = true,
OnlyMod = true
};
// recupero elenco files modificati x cartella
var listChanged = await FADService.FileGetFilt(currFilt);
// ciclo ogni file modificato
foreach (var cFile in listChanged)
{
// approvo il file modificato con utente anonimo (auto-approve)
bool fatto = await FADService.FileApprove(cFile, "");
if (fatto)
{
answ.Add(cFile.Path);
}
}
return answ;
}
#endregion Public Methods
#region Protected Properties
/// <summary>
/// Dataservice x accesso DB
/// </summary>
protected FileArchDataService FADService { get; set; }
#endregion Protected Properties
#region Private Fields
/// <summary>
/// Classe per logging
/// </summary>
private static Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
}
}