FruitBankHybridApp/FruitBankHybrid.Shared/Components/PalletItemComponent.razor

126 lines
5.6 KiB
Plaintext

@using AyCode.Core.Loggers
@using FruitBank.Common.Entities
@using FruitBank.Common.Helpers
@using FruitBank.Common.Interfaces
@using FruitBank.Common.Models
@using FruitBank.Common.SignalRs
@using FruitBankHybrid.Shared.Services
@using FruitBankHybrid.Shared.Services.SignalRs
@typeparam TPalletItem where TPalletItem : class, IMeasuringItemPalletBase
<DxFormLayout Context="ctxFromLayoutPallet" Data="@PalletItem" CaptionPosition="CaptionPosition.Vertical" CssClass="w-100 measuring-form-layout"
ItemUpdating="@((pair) => OnItemUpdating(pair.Key, pair.Value, PalletItem))">
<DxFormLayoutItem Context="ctxFromLayoutItemPallet" ColSpanMd="1" BeginRow="true">
<text>@(MeasuringIndex).mérés</text>
</DxFormLayoutItem>
<DxFormLayoutItem Context="ctxFromLayoutItemPallet" CaptionCssClass="@(GetOrderItemPalletsCssClassNames(nameof(IMeasuringItemPalletBase.PalletWeight)))"
Field="@nameof(ShippingItemPallet.PalletWeight)"
Enabled="@(IsMeasurable && ProductId > 0)"
Caption="Rakl.súly(kg)" ColSpanMd="2" />
<DxFormLayoutItem Context="ctxFromLayoutItemPallet" CaptionCssClass="@(GetOrderItemPalletsCssClassNames(nameof(IMeasuringItemPalletBase.TareWeight)))"
Field="@nameof(ShippingItemPallet.TareWeight)"
Enabled="@(IsMeasurable && ProductId > 0)"
Caption="Tára(kg)" ColSpanMd="2" />
<DxFormLayoutItem Context="ctxFromLayoutItemPallet" ColSpanMd="1" />
<DxFormLayoutItem Context="ctxFromLayoutItemPallet" CaptionCssClass="@(GetOrderItemPalletsCssClassNames(nameof(IMeasuringItemPalletBase.TrayQuantity)))"
Field="@nameof(ShippingItemPallet.TrayQuantity)"
Enabled="@(ProductId > 0)"
Caption="Rekesz/csomag" ColSpanMd="2" />
<DxFormLayoutItem Context="ctxFromLayoutItemPallet" CaptionCssClass="@(GetOrderItemPalletsCssClassNames(nameof(IMeasuringItemPalletBase.GrossWeight)))"
Field="@nameof(ShippingItemPallet.GrossWeight)"
Enabled="@(IsMeasurable && ProductId > 0)"
Caption="Br.súly(kg)" ColSpanMd="2">
</DxFormLayoutItem>
<DxFormLayoutItem Context="ctxFromLayoutItemPallet" Caption="Net.súly(kg)" ColSpanMd="1" CaptionCssClass="@(GetOrderItemPalletsCssClassNames(nameof(IMeasuringItemPalletBase.NetWeight)))">
<text>@(PalletItem.NetWeight) kg.</text>
</DxFormLayoutItem>
<DxFormLayoutItem Context="ctxFromLayoutItemPallet" ColSpanMd="1">
<DxButton Enabled="@_btnSaveEnabled" Text="@(PalletItem.Id == 0 ? "Mentés" : "Módosítás")" Click="() => PalletItemSaveClick()" CssClass="w-100" />
</DxFormLayoutItem>
</DxFormLayout>
@code {
[Parameter] public required TPalletItem PalletItem { get; set; }
[Parameter] public required bool IsMeasurable { get; set; }
[Parameter] public required int ProductId { get; set; }
[Parameter] public required int MeasuringIndex { get; set; }
[Parameter] public int? AddOrUpdateSignalRTag { get; set; } = null;
//[Parameter] public EventCallback OnPalletItemSaveClick { get; set; }
[Parameter] public Func<TPalletItem?, Task>? OnPalletItemSaved { get; set; }
[Parameter] public Func<TPalletItem, Task>? OnPalletItemValueChanged { get; set; }
[Inject] public required IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; }
[Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; }
[Inject] public required LoggedInModel LoggedInModel { get; set; }
public bool _btnSaveEnabled { get; set; }
protected override async Task OnInitializedAsync()
{
_btnSaveEnabled = PalletItem.IsValidMeasuringValues(IsMeasurable) && !PalletItem.IsMeasured;
await base.OnInitializedAsync();
}
private string GetOrderItemPalletsCssClassNames(string fieldName)
=> MeasuringService.GetCustomItemPalletsCssClassNames(fieldName, PalletItem, IsMeasurable);
private async Task PalletItemSaveClick()
{
_btnSaveEnabled = false;
if (AddOrUpdateSignalRTag == null) throw new Exception($"PalletItemComponent->PalletItemSaveClick(); AddOrUpdateSignalRTag == null");
PalletItem.ModifierId = LoggedInModel.CustomerDto?.Id;
var responseShippingItemPallet = await FruitBankSignalRClient.PostDataAsync(AddOrUpdateSignalRTag!.Value, PalletItem);
if (responseShippingItemPallet != null) PalletItem.Id = responseShippingItemPallet.Id; //Az UpdateCollection miatt kell, hogy megtalálja mit kell kicserélni! - J.
//else _logger.Error($"Sikertelen volt a raklap adatainak mentése!");
if (OnPalletItemSaved != null) await OnPalletItemSaved.Invoke(responseShippingItemPallet);
}
protected async Task OnItemUpdating(string fieldName, object newValue, TPalletItem palletItem)
{
_btnSaveEnabled = false;
// if (SelectedOrderItem == null) return;
switch (fieldName)
{
case nameof(IMeasuringItemPalletBase.PalletWeight):
palletItem.PalletWeight = (double)newValue;
break;
case nameof(IMeasuringItemPalletBase.TareWeight):
palletItem.TareWeight = (double)newValue;
break;
case nameof(IMeasuringItemPalletBase.TrayQuantity):
palletItem.TrayQuantity = (int)newValue;
break;
case nameof(IMeasuringItemPalletBase.GrossWeight):
palletItem.GrossWeight = (double)newValue;
break;
}
palletItem.IsMeasured = false;
//MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(palletItem);
//BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable);
_btnSaveEnabled = palletItem.IsValidMeasuringValues(IsMeasurable) && !palletItem.IsMeasured;
if (OnPalletItemValueChanged != null) await OnPalletItemValueChanged.Invoke(palletItem);
}
}