using Egw.Core; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using MP.AppAuth.Models; using Newtonsoft.Json; using RestSharp; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Web; using static System.Net.Mime.MediaTypeNames; namespace MP.Land.Data { public class SyncService { /// /// Init classe /// /// /// public SyncService(IConfiguration configuration, ILogger logger) { _logger = logger; _configuration = configuration; } private static ILogger _logger { get; set; } = null!; private static IConfiguration? _configuration; /// /// URL dell'API x chiamate gestione licenze /// private static string apiUrl = "https://liman.egalware.com/ELM.API/"; /// /// Stato server gestione licenze /// public async Task checkLimanServer() { string answ = "ND"; // cerco online RestClient client = new RestClient(apiUrl); var request = new RestRequest($"api/health", Method.Get); var response = await client.GetAsync(request); // controllo risposta if (response.StatusCode == System.Net.HttpStatusCode.OK) { // verifico risposta if (response.Content != null) { answ = response.Content.Replace("\"", ""); } } return await Task.FromResult(answ); } public List AKVList { get; set; } = new List(); public string Applicazione { get; set; } = ""; /// /// Codice cliente/installazione /// public string Installazione { get; set; } = ""; /// /// Cerca di recuperare valore string da elenco AKV /// /// Chiave AKV richiesta /// protected string getAVKStr(string varReq) { string answ = ""; if (AKVList != null && AKVList.Count > 0) { var currRec = AKVList.Where(x => x.NomeVar == varReq).FirstOrDefault(); if (currRec != null) { answ = $"{currRec.ValString}"; } } return answ; } /// /// Init della classe con variabili di base da Redis/DB /// public bool InitAkv() { bool fatto = false; Applicazione = "MAPO"; Installazione = getAVKStr("Installazione"); MasterKey = getAVKStr(Applicazione); fatto = !string.IsNullOrEmpty($"{Installazione}{MasterKey}"); return fatto; } /// /// Master key licenza principale /// public string MasterKey { get; set; } = ""; /// /// Lista record AnagKeyVal /// public async Task?> OnlineListAnagKeyVal() { List? answ = new List(); // cerco online RestClient client = new RestClient(apiUrl); string MKeyEnc = HttpUtility.UrlEncode(MasterKey); var request = new RestRequest($"api/dbsync/anagkeyval/{Installazione}?CodApp={Applicazione}", Method.Get); var response = await client.GetAsync(request); // controllo risposta if (response.StatusCode == System.Net.HttpStatusCode.OK) { // salvo in redis contenuto serializzato string rawData = $"{response.Content}"; answ = JsonConvert.DeserializeObject?>(rawData); } return await Task.FromResult(answ); } /// /// Lista record Config /// public async Task?> OnlineListConfig() { List? answ = new List(); // cerco online RestClient client = new RestClient(apiUrl); string MKeyEnc = HttpUtility.UrlEncode(MasterKey); var request = new RestRequest($"api/dbsync/conf/{Installazione}?CodApp={Applicazione}", Method.Get); var response = await client.GetAsync(request); // controllo risposta if (response.StatusCode == System.Net.HttpStatusCode.OK) { // salvo in redis contenuto serializzato string rawData = $"{response.Content}"; answ = JsonConvert.DeserializeObject?>(rawData); } return await Task.FromResult(answ); } /// /// Lista record Vocabolario /// public async Task?> OnlineListVocabolario() { List? answ = new List(); // cerco online RestClient client = new RestClient(apiUrl); string MKeyEnc = HttpUtility.UrlEncode(MasterKey); var request = new RestRequest($"api/dbsync/vocabolario/{Installazione}?CodApp={Applicazione}", Method.Get); var response = await client.GetAsync(request); // controllo risposta if (response.StatusCode == System.Net.HttpStatusCode.OK) { // salvo in redis contenuto serializzato string rawData = $"{response.Content}"; answ = JsonConvert.DeserializeObject?>(rawData); } return await Task.FromResult(answ); } } }