using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using MP.Data.DbModels; using MP.SPEC.Data; namespace MP.SPEC.Components.ProdKit { public partial class GestKitPodl : ComponentBase, IDisposable { #region Public Properties [Parameter] public EventCallback EC_ListUpdated { get; set; } [Parameter] public List IstKitRecords { get; set; } = new List(); [Parameter] public List PodlRecords { get; set; } = new List(); #endregion Public Properties #region Public Methods public void Dispose() { EditRecord = null; ListRecordsPODL = null; GC.Collect(); } #endregion Public Methods #region Protected Fields protected int totalCount = 0; #endregion Protected Fields #region Protected Properties [Inject] protected IJSRuntime JSRuntime { get; set; } = null!; [Inject] protected MpDataService MDService { get; set; } = null!; [Inject] protected NavigationManager NavManager { get; set; } = null!; protected string SearchComm { get => sCodComm; set { if (sCodComm != value) { sCodComm = value; currPage = 1; ListRecordsPODL = null; ReloadData(); } } } protected string sParentCss { get => string.IsNullOrEmpty(sCodComm) ? "btn-secondary" : "btn-primary"; } #endregion Protected Properties #region Protected Methods protected string checkSelect(PODLExpModel currRec) { string answ = ""; if (EditRecord != null) { try { answ = (EditRecord.IdxPromessa == currRec.IdxPromessa) ? "table-info" : ""; } catch { } } return answ; } protected bool DelEnabled(PODLExpModel reqRec) { bool answ = reqRec.IdxOdl == 0; return answ; } /// /// Verifica eliminabilit� del record: se � avviato il PODL non � liminabile... /// /// /// protected async Task DoCancel() { EditRecord = null; ReloadData(); await Task.Delay(1); } /// /// Eliminazione record selezionato (previa conferma) /// /// /// protected async Task DoDelete(PODLExpModel selRec) { if (!await JSRuntime.InvokeAsync("confirm", "Eliminazione PODL + Istanze KIT: sei sicuro di voler procedere?")) return; // da provare... var done = MDService.PodlIstKitDelete(selRec.IdxPromessa); EditRecord = null; ReloadData(); await EC_ListUpdated.InvokeAsync(true); } protected void HideDetail(PODLExpModel reqRec) { if (ListPodlExpl2Show.Contains(reqRec.IdxPromessa)) { ListPodlExpl2Show.Remove(reqRec.IdxPromessa); } } protected override void OnInitialized() { numRecord = 5; // gestione di base dei KIT string rawVal = MDService.ConfigTryGet("OptAdmKitEnabled"); if (!string.IsNullOrEmpty(rawVal)) { bool.TryParse(rawVal, out OptAdmKitEnabled); } // conf variabili decodifica regExp_KO = MDService.ConfigTryGet("regExp_KO"); regExp_OK = MDService.ConfigTryGet("regExp_OK"); regExp_KitStart = MDService.ConfigTryGet("regExp_KitStart"); regExp_KitSave = MDService.ConfigTryGet("regExp_KitSave"); // altre variabili rawVal = MDService.ConfigTryGet("SPEC_nArtSearch"); if (!string.IsNullOrEmpty(rawVal)) { int.TryParse(rawVal, out minChar); } } protected override void OnParametersSet() { ReloadData(); } protected void ResetData() { EditRecord = null; } protected void ResetParent() { SearchComm = ""; ReloadData(); } protected void ResetSel() { EditRecord = null; } protected void SelRecord(PODLExpModel selRec) { EditRecord = selRec; } protected void SetNumPage(int newNum) { currPage = newNum; } protected void SetNumRec(int newNum) { currPage = 1; numRecord = newNum; } protected void ShowDetail(PODLExpModel reqRec) { if (!ListPodlExpl2Show.Contains(reqRec.IdxPromessa)) { ListPodlExpl2Show.Add(reqRec.IdxPromessa); } } protected void UpdateData() { EditRecord = null; ReloadData(); } #endregion Protected Methods #region Private Fields /// /// Boolear controllo visualizzazione ricerca articoli /// private bool doSearchArt = false; private PODLExpModel? EditRecord = null; /// /// Elenco singoli podl esplosi /// private List ListPodlExpl2Show = new List(); private List? ListRecordsPODL; private int minChar = 2; private bool OptAdmKitEnabled = false; /// /// RegExp x SAVE KIT /// private string regExp_KitSave = "#RKE"; /// /// RegExp x START KIT /// private string regExp_KitStart = "#RKS"; /// /// RegExp x RESET / CANCEL /// private string regExp_KO = "#RKO"; /// /// RegExp x CONFERMA /// private string regExp_OK = "#ROK"; /// /// mostra tutti i dettagli delle istanze x PODL /// private bool ShowAllDet = false; #endregion Private Fields #region Private Properties private int _currPage { get; set; } = 1; private int _numRecord { get; set; } = 10; private string cssDetail { get => ShowAllDet ? "btn-secondary" : "btn-primary"; } private int currPage { get => _currPage; set { if (_currPage != value) { _currPage = value; ReloadData(); } } } private string iconDetail { get => ShowAllDet ? "fa-chevron-up" : "fa-chevron-down"; } private bool isLoading { get; set; } = false; private int numRecord { get => _numRecord; set { if (_numRecord != value) { _numRecord = value; ReloadData(); } } } private string sCodComm { get; set; } = ""; private bool ShowCharts { get; set; } = false; #endregion Private Properties #region Private Methods /// /// Elenco record dettaglio IK dato IdxPODL /// /// /// private List ListDetIK(int idxPODL) { List answ = IstKitRecords .Where(x => x.IdxPodlParent == idxPODL) .ToList(); return answ; } /// /// Conteggio record dettaglio IK dato IdxPODL /// /// /// private int ListDetIKCount(int idxPODL) { int answ = IstKitRecords .Where(x => x.IdxPodlParent == idxPODL) .Count(); return answ; } private void ReloadData() { isLoading = true; // reset preliminare... ListRecordsPODL = new List(); ListRecordsPODL = PodlRecords .Where(x => !string.IsNullOrEmpty(x.KeyRichiesta) && x.Attivabile && x.KeyRichiesta.StartsWith("KIT")) .Skip(numRecord * (currPage - 1)) .Take(numRecord) .ToList(); // conto e filtro totalCount = ListRecordsPODL.Count; isLoading = false; } /// /// Toggle modale ricerca articoli /// private void SearchArtToggle() { doSearchArt = !doSearchArt; } /// /// Salva selezione articolo /// /// private void SetCodArtChild(string codArt) { if (EditRecord != null) { #if false EditRecord.CodArtChild = codArt; doSearchArt = false; #endif } } private void ToggleDetail() { ShowAllDet = !ShowAllDet; // svuoto cmq lista sel singoli... ListPodlExpl2Show = new List(); } #endregion Private Methods } }