using AyCode.Core.Loggers; using FruitBank.Common.Entities; using FruitBank.Common.Models; using FruitBankHybrid.Shared.Components.Grids.Ekaers; using FruitBankHybrid.Shared.Databases; using FruitBankHybrid.Shared.Services.Loggers; using FruitBankHybrid.Shared.Services.SignalRs; using Mango.Nop.Core.Loggers; using Microsoft.AspNetCore.Components; namespace FruitBankHybrid.Shared.Pages; public partial class Ekaer : ComponentBase { [Inject] public required IEnumerable LogWriters { get; set; } [Inject] public required NavigationManager NavManager { get; set; } [Inject] public required LoggedInModel LoggedInModel { get; set; } [Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; } private GridEkaerHistory gridEkaerHistoryPending; private GridEkaerHistory gridEkaerHistorySent; private GridEkaerHistory gridEkaerHistoryNeedsCompletion; private ILogger _logger = null!; public int ActiveTabIndex; /// Pótlásra váró (SentWithMissingData) rekordok száma a fül feliratához — hogy ránézésre látsszon, ha van pótolnivaló. private int _needsCompletionCount; public string NeedsCompletionTabText => _needsCompletionCount > 0 ? $"Pótlásra váró ({_needsCompletionCount})" : "Pótlásra váró"; protected override async Task OnInitializedAsync() { if (!LoggedInModel.IsRevisor) NavManager.NavigateTo("/Login"); _logger = new LoggerClient(LogWriters.ToArray()); _logger.Info("OnInitializedAsync"); await base.OnInitializedAsync(); await RefreshNeedsCompletionCountAsync(); } protected async Task OnActiveTabChanged(int activeTabIndex) { ActiveTabIndex = activeTabIndex; // Fülváltáskor frissítjük a számlálót — a gridben végzett művelet (generálás/státusz-állítás) megváltoztathatta. await RefreshNeedsCompletionCountAsync(); } /// A grid jelzi a hosszú művelet (sorok létrehozása) elejét (true) / végét (false) → az oldal Loading panelje meg/elrejtve. private Task OnGridBusyChanged(bool busy) { LoadingPanelVisibility.Visible = busy; return InvokeAsync(StateHasChanged); } /// A „Pótlásra váró" rekordok számának frissítése a fül feliratához (a count endpointról, flag-szűrővel). private async Task RefreshNeedsCompletionCountAsync() { try { //_needsCompletionCount = await FruitBankSignalRClient.GetEkaerHistoryCount(EkaerHistoryFilter.NeedsCompletion); _needsCompletionCount = await FruitBankSignalRClient.GetEkaerHistoryCount(EkaerHistoryFilter.ToSubmit); StateHasChanged(); } catch (Exception ex) { _logger.Error($"GetEkaerHistoryCount hiba: {ex.Message}"); } } }