using EgwCoreLib.Razor; namespace Lux.UI.Components.Compo.JobTask { public partial class ResourcesMan { #region Public Properties [Parameter] public string CurrSearch { get; set; } = string.Empty; [Parameter] public List AllRecords { get; set; } = null!; [Parameter] public EventCallback EC_Update { get; set; } #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 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-12" : "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 EC_Update.InvokeAsync(true); } /// /// Reset selezione /// private async Task DoReset() { #if false editRecord = null; #endif 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; } private void SaveNumRec(int newNum) { numRecord = newNum; ReloadData(); } private void SavePage(int newNum) { currPage = newNum; ReloadData(); } #endregion Private Methods } }