@using AyCode.Core.Loggers
@using FruitBank.Common.Dtos
@using FruitBank.Common.Entities
@using FruitBank.Common.Helpers
@using FruitBank.Common.Interfaces
@using FruitBank.Common.Models
@using FruitBank.Common.SignalRs
@using FruitBankHybrid.Shared.Extensions
@using FruitBankHybrid.Shared.Services
@using FruitBankHybrid.Shared.Services.SignalRs
@typeparam TPalletItem where TPalletItem : class, IMeasuringItemPalletBase
@(MeasuringIndex). MÉRÉS
@* *@
@(PalletItem.NetWeight) kg.
@if (HasAuditButton)
{
}
@code {
[Inject] public required IEnumerable LogWriters { get; set; }
[Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; }
[Inject] public required LoggedInModel LoggedInModel { get; set; }
[Inject] private IDialogService DialogService { get; set; } = null!;
[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 int? MaxTrayQuantity { get; set; } = null;
[Parameter] public bool IsEditable { get; set; } = true;
//[Parameter] public EventCallback OnPalletItemSaveClick { get; set; }
[Parameter] public Func? OnPalletItemSaved { get; set; }
[Parameter] public Func? OnPalletItemValueChanged { get; set; }
[Parameter] public Func? OnPalletItemAuditedClick { get; set; }
//public bool LoadingPanelVisible { get; set; } = false;
//public bool IsEditable => !HasAuditButton || (OrderItemPallet.IsAudited);
public bool BtnSaveEnabled { get; set; }
bool HasAuditButton => LoggedInModel.IsRevisor && IsOrderItemPallet;
public bool IsOrderItemPallet => OrderItemPallet != null;
public OrderItemPallet? OrderItemPallet => (PalletItem as OrderItemPallet);
private bool GetBtnSaveEnabled()
{
return IsEditable && PalletItem.IsValidMeasuringValues(IsMeasurable) && !PalletItem.IsMeasured && IsMaxTrayQuantityValid;
}
private bool IsMaxTrayQuantityValid => (!MaxTrayQuantity.HasValue || PalletItem.TrayQuantity <= MaxTrayQuantity.Value);
protected override async Task OnInitializedAsync()
{
BtnSaveEnabled = GetBtnSaveEnabled();// PalletItem.IsValidMeasuringValues(IsMeasurable) && !PalletItem.IsMeasured;
//((DxSpinEdit)_weightFormLayoutItem.Template.Target).DisplayFormat = "N3";
await base.OnInitializedAsync();
}
private string GetOrderItemPalletsCssClassNames(string fieldName)
=> MeasurementService.GetCustomItemPalletsCssClassNames(fieldName, PalletItem, IsMeasurable, MaxTrayQuantity);
private async Task PalletItemSaveClick()
{
BtnSaveEnabled = false;
//LoadingPanelVisible = true;
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);
//LoadingPanelVisible = false;
StateHasChanged();
}
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.Round((double)newValue, 0);
if (palletItem.PalletWeight < 0) palletItem.PalletWeight = 0;
break;
case nameof(IMeasuringItemPalletBase.TareWeight):
palletItem.TareWeight = double.Round((double)newValue, 1);
if (palletItem.TareWeight < 0) palletItem.TareWeight = 0;
break;
case nameof(IMeasuringItemPalletBase.TrayQuantity):
palletItem.TrayQuantity = (int)newValue;
if (palletItem.TrayQuantity < 0) palletItem.TrayQuantity = 0;
//else if (!IsMaxTrayQuantityValid) palletItem.TrayQuantity = MaxTrayQuantity!.Value;
break;
case nameof(IMeasuringItemPalletBase.GrossWeight):
palletItem.GrossWeight = double.Round((double)newValue, 1);
if (palletItem.GrossWeight < 0) palletItem.GrossWeight = 0;
break;
}
palletItem.IsMeasured = false;
//MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(palletItem);
//BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable);
BtnSaveEnabled = GetBtnSaveEnabled();// palletItem.IsValidMeasuringValues(IsMeasurable) && !palletItem.IsMeasured && (MaxTrayQuantity.HasValue && palletItem.TrayQuantity <= MaxTrayQuantity.Value);
if (OnPalletItemValueChanged != null) await OnPalletItemValueChanged.Invoke(palletItem);
}
private async Task PalletItemAuditedClick()
{
if (OnPalletItemAuditedClick != null)
{
if (OrderItemPallet == null) throw new Exception($"PalletItemComponent->PalletItemAuditedClick(); OrderItemPallet == null");
if (await DialogService.ShowConfirmBoxAsync("Megerősítés", "Biztoan jóváhagyja a mérést? Jóváhagyás után a mérés nem módosítható!", MessageBoxRenderStyle.Info))
{
OrderItemPallet.RevisorId = LoggedInModel.CustomerDto!.Id;
StateHasChanged(); //Az Audit button miatt kell a StateHasChanged(), most már van RevisorId és emiatt disabled lesz...
var responseShippingItemPallet = await FruitBankSignalRClient.PostDataAsync(AddOrUpdateSignalRTag!.Value, PalletItem);
if (responseShippingItemPallet == null)
{
OrderItemPallet.RevisorId = 0; //Sikertelen volt a mentés...
await DialogService.ShowMessageBoxAsync("Hiba", "Adatok mentése sikertelen volt, ellenőrizze a mérés adatait!", MessageBoxRenderStyle.Danger);
}
if (OnPalletItemAuditedClick != null) await OnPalletItemAuditedClick.Invoke(responseShippingItemPallet);
}
}
}
}