@using AyCode.Blazor.Components.Components.Grids @using AyCode.Core.Helpers @using AyCode.Core.Interfaces @using AyCode.Core.Loggers @using AyCode.Services.Nav.Ekaer.Models @using FruitBank.Common.Entities @using FruitBankHybrid.Shared.Services.Loggers @using FruitBankHybrid.Shared.Services.SignalRs @inject IEnumerable LogWriters @inject FruitBankSignalRClient FruitBankSignalRClient @if (TradeCard != null) { @* Fejléc: csak a user-nek fontos, a mapper által ténylegesen töltött mezők. *@
Irány:@TradeCard.TradeType Fuvarozó:@TradeCard.CarrierText Eladó:@FormatParty(TradeCard.SellerName, TradeCard.SellerVatNumber, TradeCard.SellerAddress) Címzett:@FormatParty(TradeCard.DestinationName, TradeCard.DestinationVatNumber, TradeCard.DestinationAddress) Felrakodás:@FormatLocation(TradeCard.LoadLocation) Lerakodás:@FormatLocation(TradeCard.UnloadLocation) Vontató:@TradeCard.Vehicle?.PlateNumber Pótkocsi:@TradeCard.Vehicle2?.PlateNumber
} @if (!string.IsNullOrWhiteSpace(ErrorText)) { @* A generálás/küldés üzenetei SORONKÉNT, a saját súlyosságukkal színezve: error → piros, warning → arany/sárga. *@
@foreach (var line in ErrorMessageLines) {
@line.Text
}
} @code { [Parameter] public TradeCardType? TradeCard { get; set; } [Parameter] public IId? ParentDataItem { get; set; } public GridEkaerDetailBase Grid { get; set; } public bool IsMasterGrid => ParentDataItem == null; string GridCss => !IsMasterGrid ? "hide-toolbar" : string.Empty; private string? ErrorText => (ParentDataItem as EkaerHistory)?.ErrorText; // Soronkénti üzenet + súlyosság az [Error]/[Warning] prefixből (a service így fűzi). Prefix nélküli (pl. config-hiba) → error. private IEnumerable<(bool IsError, string Text)> ErrorMessageLines { get { if (string.IsNullOrWhiteSpace(ErrorText)) yield break; foreach (var raw in ErrorText.Split('\n')) { var line = raw.Trim(); if (line.Length == 0) continue; if (line.StartsWith("[Warning]")) yield return (false, line["[Warning]".Length..].TrimStart()); else if (line.StartsWith("[Error]")) yield return (true, line["[Error]".Length..].TrimStart()); else yield return (true, line); } } } private AcObservableCollection TradeCardItems = []; private LoggerClient _logger; protected override void OnInitialized() { _logger = new LoggerClient(LogWriters.ToArray()); } protected override void OnParametersSet() { TradeCardItems = TradeCard?.Items is { } items ? new AcObservableCollection(items) : []; } private static string FormatParty(string? name, string? vatNumber, string? address) { var party = string.IsNullOrWhiteSpace(vatNumber) ? name : $"{name} ({vatNumber})"; return string.IsNullOrWhiteSpace(address) ? party ?? string.Empty : $"{party} — {address}"; } private static string FormatLocation(LocationType? location) { if (location == null) return string.Empty; return string.Join(" ", new[] { location.ZipCode, location.City, location.Street }.Where(p => !string.IsNullOrWhiteSpace(p))); } }