Aggiunta metodo registrazione lista attivazioni
This commit is contained in:
@@ -44,7 +44,7 @@ namespace LiMan.APi.Controllers
|
||||
[HttpGet]
|
||||
public async Task<List<DB.DTO.AttivazioneDTO>> Get()
|
||||
{
|
||||
var result = await _DataService.AttivazioniSearch(0, "", true);
|
||||
var result = await _DataService.AttivazioneSearch(0, "", true);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -58,29 +58,29 @@ namespace LiMan.APi.Controllers
|
||||
[HttpGet("{id}")]
|
||||
public async Task<List<DB.DTO.AttivazioneDTO>> Get(int id, string CodImpiego)
|
||||
{
|
||||
var result = await _DataService.AttivazioniSearch(id, CodImpiego, false);
|
||||
var result = await _DataService.AttivazioneSearch(id, CodImpiego, false);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Richiesta attivazione di una chiave di licenza sub
|
||||
/// Richiesta attivazione di una lista di chiavi di licenza sub
|
||||
/// </summary>
|
||||
/// <param name="CodImpiego"></param>
|
||||
/// <param name="id">Idx licenza MASTER</param>
|
||||
/// <param name="CodImpiego">Elenco codici impiego</param>
|
||||
// POST api/attivazioni
|
||||
[HttpPost]
|
||||
public ObjectResult Post([FromBody] string CodImpiego)
|
||||
public async Task<List<DB.DTO.AttivazioneDTO>> Post(int id, [FromBody] List<string> CodImpiego)
|
||||
{
|
||||
// eseguo tentativo licenza...
|
||||
List<DB.DTO.AttivazioneDTO> currData = new List<DB.DTO.AttivazioneDTO>();
|
||||
|
||||
// ora tento di recuperare il valore...
|
||||
if (true)
|
||||
// eseguo tentativo generazione attivazioni da licenza...
|
||||
bool done = await _DataService.AttivazioniTryAdd(id, CodImpiego, 60);
|
||||
if (done)
|
||||
{
|
||||
return Ok(CodImpiego);
|
||||
}
|
||||
else
|
||||
{
|
||||
return BadRequest(CodImpiego.ToString());
|
||||
currData = await _DataService.AttivazioniByLic(id, false);
|
||||
}
|
||||
|
||||
return currData;
|
||||
}
|
||||
|
||||
//// PUT api/attivazioni/5
|
||||
|
||||
@@ -77,21 +77,65 @@ namespace LiMan.APi.Data
|
||||
|
||||
return await Task.FromResult(dbResult);
|
||||
}
|
||||
/// <summary>
|
||||
/// Effettua registrazione (se possibile) delle licenze indicate dall'elenco codici di impiego indicati
|
||||
/// </summary>
|
||||
/// <param name="IdxLic"></param>
|
||||
/// <param name="CodiciImpiego">Elenco Codici Impiego licenza</param>
|
||||
/// <param name="DayVeto">NUmero giorni x scadenza veto modifica</param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="NotImplementedException"></exception>
|
||||
public async Task<bool> AttivazioniTryAdd(int IdxLic, List<string> CodiciImpiego, int DayVeto)
|
||||
{
|
||||
bool taskDone = false;
|
||||
|
||||
Stopwatch stopWatch = new Stopwatch();
|
||||
stopWatch.Start();
|
||||
|
||||
taskDone = dbController.AttivazioniTryAdd(IdxLic, CodiciImpiego, DayVeto);
|
||||
stopWatch.Stop();
|
||||
TimeSpan ts = stopWatch.Elapsed;
|
||||
Log.Trace($"Effettuata scrittura + rilettura da DB per AttivazioniTryAdd: {ts.TotalMilliseconds} ms");
|
||||
|
||||
return await Task.FromResult(taskDone);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco Attivaizoni da licenza master
|
||||
/// </summary>
|
||||
/// <param name="IdxLic">Codice Licenza Master</param>
|
||||
/// <param name="HideData">Indica se nascondere i dati sensibili</param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<DB.DTO.AttivazioneDTO>> AttivazioniByLic(int IdxLic, bool HideData)
|
||||
{
|
||||
List<DB.DTO.AttivazioneDTO> dbResult = new List<DB.DTO.AttivazioneDTO>();
|
||||
|
||||
Stopwatch stopWatch = new Stopwatch();
|
||||
stopWatch.Start();
|
||||
|
||||
dbResult = dbController.GetAttivazioniByLic(IdxLic, HideData);
|
||||
stopWatch.Stop();
|
||||
TimeSpan ts = stopWatch.Elapsed;
|
||||
Log.Trace($"Effettuata lettura da DB per AttivazioniByLic: {ts.TotalMilliseconds} ms");
|
||||
|
||||
return await Task.FromResult(dbResult);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elenco licenze dato cliente
|
||||
/// </summary>
|
||||
/// <param name="IdxLic">Codice Installaizone /Cliente</param>
|
||||
/// <param name="CodImpiego">Codice Applicazione</param>
|
||||
/// <param name="IdxLic">Codice Licenza Master</param>
|
||||
/// <param name="CodImpiego">Codice Impiego licenza</param>
|
||||
/// <param name="HideData">Indica se nascondere i dati sensibili</param>
|
||||
/// <returns></returns>
|
||||
public async Task<List<DB.DTO.AttivazioneDTO>> AttivazioniSearch(int IdxLic, string CodImpiego, bool HideData)
|
||||
public async Task<List<DB.DTO.AttivazioneDTO>> AttivazioneSearch(int IdxLic, string CodImpiego, bool HideData)
|
||||
{
|
||||
List<DB.DTO.AttivazioneDTO> dbResult = new List<DB.DTO.AttivazioneDTO>();
|
||||
|
||||
Stopwatch stopWatch = new Stopwatch();
|
||||
stopWatch.Start();
|
||||
|
||||
dbResult = dbController.GetAttivazioni( IdxLic, CodImpiego, HideData);
|
||||
dbResult = dbController.GetAttivazione( IdxLic, CodImpiego, HideData);
|
||||
stopWatch.Stop();
|
||||
TimeSpan ts = stopWatch.Elapsed;
|
||||
Log.Trace($"Effettuata lettura da DB per AttivazioniSearch: {ts.TotalMilliseconds} ms");
|
||||
|
||||
+25
-6
@@ -69,11 +69,12 @@
|
||||
<param name="CodImpiego">Codice univoco impiego licenza</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:LiMan.APi.Controllers.AttivazioniController.Post(System.String)">
|
||||
<member name="M:LiMan.APi.Controllers.AttivazioniController.Post(System.Int32,System.Collections.Generic.List{System.String})">
|
||||
<summary>
|
||||
Richiesta attivazione di una chiave di licenza sub
|
||||
Richiesta attivazione di una lista di chiavi di licenza sub
|
||||
</summary>
|
||||
<param name="CodImpiego"></param>
|
||||
<param name="id">Idx licenza MASTER</param>
|
||||
<param name="CodImpiego">Elenco codici impiego</param>
|
||||
</member>
|
||||
<member name="T:LiMan.APi.Controllers.InstallazioniController">
|
||||
<summary>
|
||||
@@ -156,12 +157,30 @@
|
||||
<param name="HideData">Indica se nascondere i dati sensibili</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:LiMan.APi.Data.ApiDataService.AttivazioniSearch(System.Int32,System.String,System.Boolean)">
|
||||
<member name="M:LiMan.APi.Data.ApiDataService.AttivazioniTryAdd(System.Int32,System.Collections.Generic.List{System.String},System.Int32)">
|
||||
<summary>
|
||||
Effettua registrazione (se possibile) delle licenze indicate dall'elenco codici di impiego indicati
|
||||
</summary>
|
||||
<param name="IdxLic"></param>
|
||||
<param name="CodiciImpiego">Elenco Codici Impiego licenza</param>
|
||||
<param name="DayVeto">NUmero giorni x scadenza veto modifica</param>
|
||||
<returns></returns>
|
||||
<exception cref="T:System.NotImplementedException"></exception>
|
||||
</member>
|
||||
<member name="M:LiMan.APi.Data.ApiDataService.AttivazioniByLic(System.Int32,System.Boolean)">
|
||||
<summary>
|
||||
Elenco Attivaizoni da licenza master
|
||||
</summary>
|
||||
<param name="IdxLic">Codice Licenza Master</param>
|
||||
<param name="HideData">Indica se nascondere i dati sensibili</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:LiMan.APi.Data.ApiDataService.AttivazioneSearch(System.Int32,System.String,System.Boolean)">
|
||||
<summary>
|
||||
Elenco licenze dato cliente
|
||||
</summary>
|
||||
<param name="IdxLic">Codice Installaizone /Cliente</param>
|
||||
<param name="CodImpiego">Codice Applicazione</param>
|
||||
<param name="IdxLic">Codice Licenza Master</param>
|
||||
<param name="CodImpiego">Codice Impiego licenza</param>
|
||||
<param name="HideData">Indica se nascondere i dati sensibili</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
|
||||
@@ -55,8 +55,129 @@ namespace LiMan.DB.Controllers
|
||||
//Log.Info("Dispose di GWMSController");
|
||||
}
|
||||
|
||||
public List<AttivazioneDTO> GetAttivazioniByLic(int IdxLic, bool hideData)
|
||||
{
|
||||
List<AttivazioneDTO> dbResult = new List<AttivazioneDTO>();
|
||||
LicenzaModel mainLic = new LicenzaModel();
|
||||
using (LMDbContext localDbCtx = new LMDbContext(_configuration))
|
||||
{
|
||||
DateTime oggi = DateTime.Today;
|
||||
int stdIdxLic = 0;
|
||||
|
||||
public List<AttivazioneDTO> GetAttivazioni(int IdxLic, string CodImpiego, bool hideData)
|
||||
// generazione stringhe casuali....
|
||||
// https://jonathancrozier.com/blog/how-to-generate-a-random-string-with-c-sharp
|
||||
StringBuilder sbRandChiave = new StringBuilder();
|
||||
string stdChiave = "";
|
||||
|
||||
if (hideData)
|
||||
{
|
||||
int numChar = 80;
|
||||
Random random = new Random();
|
||||
|
||||
// idxLic
|
||||
stdIdxLic = random.Next(50000, 100000);
|
||||
|
||||
// chiave random
|
||||
for (int i = 0; i < numChar; i++)
|
||||
{
|
||||
// Generate floating point numbers
|
||||
double myFloat = random.NextDouble();
|
||||
// Generate the char using below logic
|
||||
var myChar = Convert.ToChar(Convert.ToInt32(Math.Floor(25 * myFloat) + 65));
|
||||
sbRandChiave.Append(myChar);
|
||||
}
|
||||
stdChiave = $"{sbRandChiave}";
|
||||
}
|
||||
else
|
||||
{
|
||||
// recupero se c'è licenza master
|
||||
mainLic = localDbCtx
|
||||
.DbSetLicenze
|
||||
.Where(x => x.IdxLic == IdxLic)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
// conteggio preliminare licenze impiegate
|
||||
var countSubLic = localDbCtx
|
||||
.DbSetSubLicenze
|
||||
.GroupBy(x => x.IdxLic)
|
||||
.Select(g => new
|
||||
{
|
||||
IdxLic = g.Key,
|
||||
NumLic = g.Count()
|
||||
});
|
||||
|
||||
// calcolo DTO applicativi
|
||||
dbResult = localDbCtx
|
||||
.DbSetSubLicenze
|
||||
.Where(x => x.IdxLic == IdxLic)
|
||||
.OrderBy(o => o.VetoUnlock)
|
||||
.Select(x => new AttivazioneDTO()
|
||||
{
|
||||
IdxLic = hideData ? stdIdxLic : x.IdxLic,
|
||||
IdxSubLic = x.IdxSubLic,
|
||||
CodImpiego = x.CodImpiego,
|
||||
CodApp = mainLic.CodApp,
|
||||
CodInst = mainLic.CodInst,
|
||||
Descrizione = mainLic.Descrizione,
|
||||
Tipo = x.Tipo,
|
||||
Chiave = hideData ? stdChiave : x.Chiave,
|
||||
VetoUnlock = x.VetoUnlock
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
return dbResult;
|
||||
}
|
||||
/// <summary>
|
||||
/// Cerca di aggiungere sul DB le attivazioni richieste
|
||||
/// </summary>
|
||||
/// <param name="idxLic">Idx Master Lic</param>
|
||||
/// <param name="codiciImpiego">Elenco codici di impiego da registrare</param>
|
||||
/// <param name="numDayVeto">num gg di veto da impostare</param>
|
||||
/// <returns></returns>
|
||||
public bool AttivazioniTryAdd(int idxLic, List<string> codiciImpiego, int numDayVeto)
|
||||
{
|
||||
bool answ = false;
|
||||
|
||||
// verifica se si può procedere...
|
||||
var licenza = GetLicenza(idxLic);
|
||||
var attivList = GetAttivazioniByLic(idxLic, false);
|
||||
if (licenza.IsValid && (licenza.NumLicenze >= (attivList.Count + codiciImpiego.Count)))
|
||||
{
|
||||
DateTime vetoDate = DateTime.Today.AddDays(numDayVeto);
|
||||
using (LMDbContext localDbCtx = new LMDbContext(_configuration))
|
||||
{
|
||||
try
|
||||
{
|
||||
// genero subLicenze...
|
||||
var newRec = codiciImpiego
|
||||
.Select(x => new SubLicenzaModel()
|
||||
{
|
||||
IdxLic = idxLic,
|
||||
CodImpiego = x,
|
||||
VetoUnlock = vetoDate,
|
||||
Tipo = Enum.TipoLicenza.UserKey,
|
||||
Chiave = x
|
||||
})
|
||||
.ToList();
|
||||
localDbCtx
|
||||
.DbSetSubLicenze
|
||||
.AddRange(newRec);
|
||||
|
||||
localDbCtx.SaveChanges();
|
||||
}
|
||||
catch(Exception exc)
|
||||
{
|
||||
Log.Error($"Errore in AttivazioniTryAdd per IdxLic {idxLic} | #rec: {codiciImpiego.Count}{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return answ;
|
||||
}
|
||||
|
||||
public List<AttivazioneDTO> GetAttivazione(int IdxLic, string CodImpiego, bool hideData)
|
||||
{
|
||||
List<AttivazioneDTO> dbResult = new List<AttivazioneDTO>();
|
||||
LicenzaModel mainLic = new LicenzaModel();
|
||||
@@ -116,9 +237,9 @@ namespace LiMan.DB.Controllers
|
||||
.Select(x => new AttivazioneDTO()
|
||||
{
|
||||
IdxLic = hideData ? stdIdxLic : x.IdxLic,
|
||||
IdxSubLic=x.IdxSubLic,
|
||||
IdxSubLic = x.IdxSubLic,
|
||||
CodImpiego = x.CodImpiego,
|
||||
CodApp=mainLic.CodApp,
|
||||
CodApp = mainLic.CodApp,
|
||||
CodInst = mainLic.CodInst,
|
||||
Descrizione = mainLic.Descrizione,
|
||||
Tipo = x.Tipo,
|
||||
|
||||
Reference in New Issue
Block a user