@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); } } } }