130 lines
4.1 KiB
C#
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
|
|
}
|
|
} |