using EgwCoreLib.Razor; namespace Lux.UI.Components.Compo.JobTask { public partial class ResourcesMan { #region Public Properties [Parameter] public string CurrSearch { get; set; } = string.Empty; #endregion Public Properties #region Protected Fields protected List AllRecords = new List(); protected List ListCostDriver = new List(); protected List ListRecords = new List(); protected List SearchRecords = new List(); #endregion Protected Fields #region Protected Methods protected override async Task OnInitializedAsync() { await ReloadBaseData(); ReloadData(); } protected override void OnParametersSet() { ReloadData(); } #endregion Protected Methods #region Private Fields private int currPage = 1; private ResourceModel? editRecord = null; private bool isLoading = false; private int numRecord = 10; private ResourceModel? selRecord = null; private int totalCount = 0; private BootstrapModal Modal = new(); private string mTitle = ""; private string mMessage = ""; private BootstrapModal.ModalMode mMode = BootstrapModal.ModalMode.ND; private Dictionary modalOpt = new Dictionary(); #endregion Private Fields #region Private Properties [Inject] private ICostDriverService CDService { get; set; } = null!; [Inject] private IDataLayerServices DLService { get; set; } = null!; [Inject] private IJSRuntime JSRuntime { get; set; } = null!; private string mainCss { get => selRecord == null ? "col-6" : "col-4"; } [Inject] private IResourceService ResService { get; set; } = null!; #endregion Private Properties #region Private Methods /// /// Check selezione riga item /// /// /// private string checkSel(ResourceModel curRec) { string answ = ""; if (selRecord != null) { answ = curRec.ResourceID == selRecord.ResourceID ? "table-info" : ""; } return answ; } private async Task DoAdd() { mTitle = "Attenzione"; mMessage = "Confermi di voler aggiungere un nuovo record risorsa?"; mMode = BootstrapModal.ModalMode.Confirm; modalOpt = new(); modalOpt.Add(true, "Si"); modalOpt.Add(false, "No"); if (!await Modal!.ShowAsync()) return; isLoading = true; var newRecord = new ResourceModel() { Name = $"Nuova Risorsa | {DateTime.Now:yyyy.MM.dd-HH.mm.ss}", CostDriverID = 1 }; await ResService.UpsertAsync(newRecord); AllRecords = new List(); await Task.Delay(100); await ReloadBaseData(); ReloadData(); } private async Task DoDelete(ResourceModel rec2del) { mTitle = "Attenzione"; mMessage = $"Confermi di voler eliminare il record {rec2del.Name}?"; mMode = BootstrapModal.ModalMode.Confirm; modalOpt = new(); modalOpt.Add(true, "Si"); modalOpt.Add(false, "No"); if (!await Modal!.ShowAsync()) return; isLoading = true; // elimino e ricarico... await ResService.DeleteAsync(rec2del); await ReloadBaseData(); ReloadData(); } /// /// Reset selezione /// private async Task DoReset() { editRecord = null; selRecord = null; await ReloadBaseData(); ReloadData(); } /// /// Selezione articolo x display info /// /// private void DoSelect(ResourceModel curRec) { selRecord = curRec; } /// /// Esegue gestione updated /// /// /// private async Task DoUpdate(ResourceModel? updRec) { var tmpSel = selRecord; // se non nullo salvo! if (updRec != null) { await ResService.UpsertAsync(updRec); } await ReloadBaseData(); ReloadData(); selRecord = tmpSel; } private async Task ReloadBaseData() { AllRecords = await ResService.GetAllAsync(); ListCostDriver = await CDService.GetAllAsync(); } private void ReloadData() { isLoading = true; // se ho ricerca testuale faccio filtro ulteriore... if (!string.IsNullOrEmpty(CurrSearch)) { SearchRecords = AllRecords .Where(x => x.Name.Contains(CurrSearch, StringComparison.InvariantCultureIgnoreCase)) .ToList(); } else { SearchRecords = AllRecords; } totalCount = SearchRecords.Count; // fix paginazione ListRecords = SearchRecords .OrderBy(x => x.CodResource) .ThenBy(x => x.Name) .Skip(numRecord * (currPage - 1)) .Take(numRecord) .ToList(); isLoading = false; } #endregion Private Methods } }