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 /// /// Init generico /// /// public FileChangeController(FileArchDataService FileArchDService) { FADService = FileArchDService; Log.Info("Avviata classe FileChangeController"); } #endregion Public Constructors #region Public Methods /// /// Verifica Health servizi FileChange /// GET api/FileChange /// /// [HttpGet] public ActionResult Get() { return "OK"; } /// /// Esegue controllo + approvazione modifiche x directory /// GET api/FileChange/anagkeyval/[id]?[CodApp] /// /// Directory / IdxMacchina | 0/ALL = tutte /// Verifica file modificati da numDayPrev gg /// Elenco dei file approvati [HttpGet("approve/{id}")] public async Task> approve(string id, int numDayPrev) { List result = new List(); // verifico se una o tutte le macchine List listDir = new List(); 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 listAppr = await ForceApproveMod(currDir, numDayPrev); result.AddRange(listAppr); } return result; } /// /// Effettua approvazione file modificati, restituendo elenco /// /// /// /// private async Task> ForceApproveMod(string currDir, int numDayPrev) { List answ = new List(); // 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 /// /// Dataservice x accesso DB /// protected FileArchDataService FADService { get; set; } #endregion Protected Properties #region Private Fields /// /// Classe per logging /// private static Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields } }