FruitBankHybridApp/FruitBankHybrid.Shared/Components/Grids/Ekaers/GridEkaerDetail.razor

96 lines
3.9 KiB
Plaintext

@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<IAcLogWriterClientBase> LogWriters
@inject FruitBankSignalRClient FruitBankSignalRClient
@if (TradeCard != null)
{
@* Fejléc: csak a user-nek fontos, a mapper által ténylegesen töltött mezők. *@
<div style="display:grid; grid-template-columns:auto 1fr auto 1fr; gap:2px 12px; padding:8px 12px; font-size:0.85rem;">
<b>Irány:</b><span>@TradeCard.TradeType</span>
<b>Fuvarozó:</b><span>@TradeCard.CarrierText</span>
<b>Eladó:</b><span>@FormatParty(TradeCard.SellerName, TradeCard.SellerVatNumber, TradeCard.SellerAddress)</span>
<b>Címzett:</b><span>@FormatParty(TradeCard.DestinationName, TradeCard.DestinationVatNumber, TradeCard.DestinationAddress)</span>
<b>Felrakodás:</b><span>@FormatLocation(TradeCard.LoadLocation)</span>
<b>Lerakodás:</b><span>@FormatLocation(TradeCard.UnloadLocation)</span>
<b>Vontató:</b><span>@TradeCard.Vehicle?.PlateNumber</span>
<b>Pótkocsi:</b><span>@TradeCard.Vehicle2?.PlateNumber</span>
</div>
}
@if (!string.IsNullOrWhiteSpace(ErrorText))
{
@* A generálás/küldés hibái egyben olvashatóan — soronként (a validátor NewLine-nal fűzi). *@
<div class="text-danger" style="padding:0 12px 8px 12px; font-size:0.85rem; white-space:pre-line;">@ErrorText</div>
}
<MgGridWithInfoPanel ShowInfoPanel="false">
<GridContent>
<GridEkaerDetailBase @ref="Grid"
DataSource="TradeCardItems"
ParentDataItem="ParentDataItem"
SignalRClient="FruitBankSignalRClient"
AutoSaveLayoutName="GridEkaerDetail"
Logger="_logger"
CssClass="@GridCss"
ValidationEnabled="false">
<Columns>
<DxGridDataColumn FieldName="@nameof(TradeCardItemType.ItemExternalId)" Caption="Tétel az." ReadOnly="true" />
<DxGridDataColumn FieldName="@nameof(TradeCardItemType.TradeReason)" Caption="Jogcím" ReadOnly="true" />
<DxGridDataColumn FieldName="@nameof(TradeCardItemType.ProductVtsz)" Caption="VTSZ" ReadOnly="true" />
<DxGridDataColumn FieldName="@nameof(TradeCardItemType.ProductName)" Caption="Megnevezés" ReadOnly="true" />
<DxGridDataColumn FieldName="@nameof(TradeCardItemType.Weight)" Caption="Bruttó tömeg (kg)" ReadOnly="true" />
<DxGridDataColumn FieldName="@nameof(TradeCardItemType.Value)" Caption="Érték (HUF)" ReadOnly="true" />
</Columns>
</GridEkaerDetailBase>
</GridContent>
</MgGridWithInfoPanel>
@code {
[Parameter] public TradeCardType? TradeCard { get; set; }
[Parameter] public IId<int>? 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;
private AcObservableCollection<TradeCardItemType> TradeCardItems = [];
private LoggerClient<GridEkaerDetail> _logger;
protected override void OnInitialized()
{
_logger = new LoggerClient<GridEkaerDetail>(LogWriters.ToArray());
}
protected override void OnParametersSet()
{
TradeCardItems = TradeCard?.Items is { } items ? new AcObservableCollection<TradeCardItemType>(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)));
}
}