using Core; using Core.DTO; using LiMan.DB.DBModels; using LiMan.DB.DTO; using LiMan.UI.Data; using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using static Core.Enum; namespace LiMan.UI.Components { public partial class Tickets { #region Public Methods public string checkSelect(int IdxSubLic) { string answ = ""; if (currRecord != null) { try { answ = (currRecord.IdxSubLic == IdxSubLic) ? "table-info" : ""; } catch { } } return answ; } public string decryptAuthKey(string authKey) { string answ = authKey; try { answ = SteamCrypto.DecryptString(authKey, "AuthGPW"); } catch { } return answ; } public string selTick(int idxTicket) { string answ = " "; if (idxTicketSel == idxTicket) { answ = "table-primary"; } return answ; } #endregion Public Methods #region Protected Fields protected SubLicenzaModel _currRecord = new SubLicenzaModel(); protected LicenzaModel _masterLic = new LicenzaModel(); protected TipologiaTicket currTipo = TipologiaTicket.ND; protected int idxTicketSel = 0; protected bool showKey = false; protected StatoRichiesta StatusSel = StatoRichiesta.ND; protected int totalCount = 0; #endregion Protected Fields #region Protected Properties [Inject] protected MessageService AppMService { get; set; } [Inject] protected LiManDataService DataService { get; set; } protected string mainCss { get => idxTicketSel == 0 ? "col-12" : "col-8"; } #endregion Protected Properties #region Protected Methods protected async void closeDet() { await ReloadAllData(); } //private async void DownloadFileFromURL(string fileName, string rawUrl) //{ // rawUrl = rawUrl.Replace("\\", "/"); // var fileURL = $"unsafe_uploads/"+rawUrl; // //var fileName = "log-0001.txt"; // //var fileName = FileAttached; // await JS.InvokeVoidAsync("triggerFileDownload", fileName, fileURL); //} /// /// formatta testo secondo scadenza: /// scadenza < oggi --> verde /// scadenza > oggi --> rosso /// /// /// protected string cssScadenza(DateTime scadenza) { string answ = "text-dark"; double periodo = scadenza.Subtract(DateTime.Today).TotalDays; if (periodo <= 0) { answ = "text-success"; } else { answ = "text-danger"; } return answ; } protected override async Task OnInitializedAsync() { await ReloadAllData(); } protected async Task SetNumRec(int newNum) { currPage = 1; numRecord = newNum; await ReloadAllData(); isLoading = false; } protected async Task SetNumPage(int newNum) { currPage = newNum; await ReloadAllData(); isLoading = false; } protected async Task ResetData() { await FullReload(); } protected void showDecrypt() { showKey = !showKey; } protected async Task showDet(TicketDTO currTicket) { // salvo ticket sel idxTicketSel = currTicket.IdxTicket; StatusSel = currTicket.Status; currTipo = currTicket.TType; FileAttached = await DataService.FileGetFilt(idxTicketSel); showTickets = true; // mostro SOLO le attivazioni di cui ho ticket attivi... //ListActivations = MasterLicence //.Attivazioni //.Where(a => a.IdxSubLic == currTicket.IdxSubLic) //.ToList(); } protected async Task UnLock(SubLicenzaModel selRecord) { if (!await JSRuntime.InvokeAsync("confirm", "Sicuro di voler eliminare il blocco? la data di scadenza verrà impostata a ieri liberando la licenza per cancellazioni o rimozioni.")) return; // chiamo procedura sblocco... await DataService.AttivazioneUnlock(selRecord.IdxSubLic); //await DataUpdated.InvokeAsync(0); } protected async void updateStato(StatoRichiesta nuovoStato) { if (nuovoStato == StatoRichiesta.Approvata || nuovoStato == StatoRichiesta.Rifiutata) { if (!await JSRuntime.InvokeAsync("confirm", "Confermi l'azione richiesta? Ricorda che in caso di approvazione/rifiuto va modificato preventivamente il record dell'Attivazione coinvolta.")) return; } if (idxTicketSel > 0) { // salvo presa in carico ticket await DataService.TicketUpdateState(idxTicketSel, nuovoStato); //await DataUpdated.InvokeAsync(0); } } #endregion Protected Methods #region Private Fields private List FileAttached; private List ListActivations; private List ListApp; private List ListInstall; private List ListRecords; private List SearchRecords; private bool showTickets = false; #endregion Private Fields #region Private Properties private int currPage { get { return AppMService.PageNum; } set { AppMService.PageNum = value; } } private SubLicenzaModel currRecord { get { return _currRecord; } set { _currRecord = value; } } private bool isLoading { get; set; } = false; [Inject] private IJSRuntime JSRuntime { get; set; } //[Parameter] //public EventCallback DataReset { get; set; } //[Parameter] //public EventCallback DataUpdated { get; set; } private int numRecord { get { return AppMService.PageSize; } set { AppMService.PageSize = value; } } private string SelApp { get { string answ = ""; if (AppMService.DetailDBFilter != null) { answ = AppMService.DetailDBFilter.ApplicazioneSel; } return answ; } set { if (!AppMService.DetailDBFilter.ApplicazioneSel.Equals(value)) { AppMService.DetailDBFilter.ApplicazioneSel = value; var pUpd = Task.Run(async () => await ReloadAllData()); pUpd.Wait(); } } } private string SelInst { get { string answ = ""; if (AppMService.DetailDBFilter != null) { answ = AppMService.DetailDBFilter.InstallazioneSel; } return answ; } set { if (!AppMService.DetailDBFilter.InstallazioneSel.Equals(value)) { AppMService.DetailDBFilter.InstallazioneSel = value; var pUpd = Task.Run(async () => await ReloadAllData()); pUpd.Wait(); } } } #endregion Private Properties #region Private Methods private async Task FullReload() { await DataService.FlushRedisCache(); await ReloadAllData(); } private async Task ReloadAllData() { isLoading = true; idxTicketSel = 0; await Task.Delay(1); showTickets = false; ListApp = await DataService.ApplicNextGetAll(false); ListInstall = await DataService.InstallazioniNextGetAll(); //bool StatoRichiesta = true; //SearchRecords = await LMDService.LicenzeNextGetFilt(AppMServ.DetailDBFilter); SearchRecords = await DataService.TicketsGetFilt(true, SelApp, SelInst); //totalCount = SearchRecords.Count(); //SearchRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); //SearchRecords = await LMDService.TicketsGetAll(); ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); totalCount = SearchRecords.Count(); isLoading = false; } #endregion Private Methods } }