using Core; using LiMan.APi.Data; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using NLog; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace LiMan.APi.Controllers { /// /// Controller elemento Attivazioni (come licenza derivata x singolo utente di GPW) /// [Route("api/attivazioni")] [ApiController] public class AttivazioniController : ControllerBase { #region Private Fields /// /// Classe per logging /// private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields #region Public Constructors /// /// Init generico /// /// public AttivazioniController(ApiDataService DataService) { dataService = DataService; Log.Info("Avviata classe AttivazioniController"); } #endregion Public Constructors #region Protected Properties /// /// Dataservice x accesso DB /// protected ApiDataService dataService { get; set; } #endregion Protected Properties #region Public Methods /// /// Eliminazione di un set di attivazioni (SE SCADUTE) /// // POST api/attivazioni/removeKey [HttpPost("removeKey")] public async Task removeKey([FromBody] UserLicenseRequest CurrRequest) { bool done = await dataService.AttivazioniDelete(CurrRequest.MasterKey, CurrRequest.ParamDict); // se ho qualcosa da loggare... foreach (var item in CurrRequest.ParamDict) { // registro 1 riga x ogni record... await dataService.recordCall(CurrRequest.MasterKey, $"POST:api/attivazioni/removeKey:{item.Key}|{item.Value}"); } return done; } /// /// Recupero record di sub licenza (con chiavi anonimizzate) /// /// Licenza MASTER /// // GET api/attivazioni/5 [HttpGet] public async Task> Get(string chiave) { List result = new List(); var dbResult = await dataService.AttivazioniByMasterKey(chiave, false); result = (dbResult != null) ? dbResult : result; await dataService.recordCall(chiave, $"GET:api/attivazioni:{chiave}"); return result; } /// /// Richiesta attivazione di una lista di chiavi di licenza sub /// /// Obj Richiesta con licenza MASTER + Elenco codici impiego (key) + valori in formato dizionari // POST api/attivazioni [HttpPost] public async Task> Post([FromBody] UserLicenseRequest CurrRequest) { List currData = new List(); // giorni veto riattivazione: 60 x lic utente GPW, 7 altrimenti int dayVeto = CurrRequest.LicType == Core.Enum.TipoLicenza.UserKey ? 60 : 7; // eseguo tentativo generazione attivazioni da licenza... bool done = await dataService.AttivazioniTryAdd(CurrRequest.MasterKey, CurrRequest.ParamDict, dayVeto, CurrRequest.LicType); currData = await dataService.AttivazioniByMasterKey(CurrRequest.MasterKey, false); // se ho qualcosa da loggare... foreach (var item in CurrRequest.ParamDict) { // registro 1 riga x ogni record... await dataService.recordCall(CurrRequest.MasterKey, $"POST:api/attivazioni:{item.Key}|{item.Value}"); } return currData; } /// /// Richiesta di refresh delle key associate ai CodImpiego da una lista di chiavi di licenza sub /// /// Obj Richiesta con licenza MASTER + Elenco codici impiego (key) + valori in formato dizionari // POST api/attivazioni/refreshKey [HttpPost("refreshKey")] public async Task> refreshKey([FromBody] UserLicenseRequest CurrRequest) { List currData = new List(); // eseguo tentativo generazione attivazioni da licenza... bool done = await dataService.AttivazioniTryRefresh(CurrRequest.MasterKey, CurrRequest.ParamDict); currData = await dataService.AttivazioniByMasterKey(CurrRequest.MasterKey, false); // se ho qualcosa da loggare... foreach (var item in CurrRequest.ParamDict) { // registro 1 riga x ogni record... await dataService.recordCall(CurrRequest.MasterKey, $"POST:api/attivazioni/refreshKey:{item.Key}__{item.Value}"); } return currData; } /// /// Eliminazione di TUTTE le attivazioni SCADUTE /// /// Licenza MASTER // DELETE api/attivazioni/resetAvail [HttpDelete("resetAvail")] public async Task ResetAvail(string chiave) { bool done = await dataService.AttivazioniResetAvail(chiave); await dataService.recordCall(chiave, $"DELETE:api/attivazioni/resetAvail:{chiave}"); return done; } /// /// Verifica recupero un record di sub licenza /// /// Licenza MASTER /// Codice univoco impiego licenza /// // GET api/attivazioni/verifica/5?codImpiego=abcd [HttpGet("verifica")] public async Task VerificaImpiego(string chiave, string codImpiego) { DB.DTO.AttivazioneDTO result = new DB.DTO.AttivazioneDTO(); var dbResult = await dataService.AttivazioneSearch(chiave, codImpiego, false); result = (dbResult != null) ? dbResult : result; await dataService.recordCall(chiave, $"GET:api/attivazioni/verifica:{chiave}__{codImpiego}"); return result; } #endregion Public Methods } }