@using AyCode.Core.Extensions
@using AyCode.Utils.Extensions
@using DevExpress.Blazor
@using FruitBank.Common.Dtos
@using FruitBank.Common.Entities
@using FruitBank.Common.Helpers
@using FruitBank.Common.Models
@using FruitBank.Common.SignalRs
@using FruitBankHybrid.Shared.Databases
@using FruitBankHybrid.Shared.Extensions
@using FruitBankHybrid.Shared.Services
@using FruitBankHybrid.Shared.Services.SignalRs
@using Mango.Nop.Core.Entities
@* CaptionCssClass="@(SelectedProductDto?.IsMeasured == true ? "text-success" : "")"> *@
@* TextFieldName="StockTakingItem.Product.Name" *@
@if (SelectedStockTakingItem is { ProductId: > 0 })
{
#@(SelectedStockTakingItem.ProductId). @(SelectedStockTakingItem.Product!.Name)
@{
var a = $"Várható rekesz: {SelectedStockTakingItem.TotalOriginalQuantity} ({SelectedStockTakingItem.OriginalStockQuantity} + {SelectedStockTakingItem.InProcessOrdersQuantity}), Várható net.súly: {SelectedStockTakingItem.OriginalNetWeight} kg.";
@a
}
@for (var index = 0; index < (SelectedStockTakingItem?.StockTakingItemPallets?.Count ?? 0); index++)
{
var localI = index + 1;
var currentShippingItemPallet = SelectedStockTakingItem!.StockTakingItemPallets![index];
}
@*
TOTAL:
Rekesz: @(SelectedStockTakingItem.MeasuredStockQuantity) db
Br: @(SelectedStockTakingItem.MeasuredGrossWeight) kg
Net: @(SelectedStockTakingItem.MeasuredNetWeight) kg
*@
}
@code
{
[Inject] public required DatabaseClient Database { get; set; }
[Inject] public required LoggedInModel LoggedInModel { get; set; }
[Inject] public required IDialogService DialogService { get; set; } = null!;
[Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; }
List _stockTakings { get; set; } = [];
List _stockTakingItems { get; set; } = [];
List _stockTakingItemPallets { get; set; } = [];
StockTaking? SelectedStockTaking { get; set; }
StockTakingItem? SelectedStockTakingItem { get; set; }
protected override async Task OnInitializedAsync()
{
await ReloadDataFromDb(false);
}
public async Task ReloadDataFromDb(bool forceReload)
{
LoadingPanelVisibility.Visible = true;
_stockTakings = await FruitBankSignalRClient.GetStockTakings(false) ?? [];
await StockTakingComboValueChanged(_stockTakings.FirstOrDefault());
LoadingPanelVisibility.Visible = false;
}
private async Task NewStockTakingClick()
{
var stockTaking = new StockTaking();
stockTaking.StartDateTime = DateTime.Now;
stockTaking.Creator = LoggedInModel.CustomerDto!.Id;
var resultStockTakings = await FruitBankSignalRClient.AddStockTaking(stockTaking);
if (resultStockTakings == null) return;
_stockTakings.UpdateCollection(resultStockTakings, false);
await StockTakingComboValueChanged(_stockTakings.FirstOrDefault(x => x.Id == stockTaking.Id));
}
private async Task UpdateStockTakingClick()
{
// var resultStockTaking = await FruitBankSignalRClient.AddStockTaking(stockTaking);
// if (resultStockTaking == null) return;
// _stockTakings.Add(resultStockTaking);
await InvokeAsync(StateHasChanged);
}
private async Task StockTakingCloseClick(int stockTakingId)
{
var resultStockTaking = await FruitBankSignalRClient.CloseStockTaking(stockTakingId);
if (resultStockTaking == null) return;
_stockTakings.UpdateCollection(resultStockTaking, false);
await StockTakingComboValueChanged(_stockTakings.FirstOrDefault(x => x.Id == resultStockTaking.Id));
await InvokeAsync(StateHasChanged);
}
private async Task StockTakingComboValueChanged(StockTaking? newValue)
{
SelectedStockTaking = newValue;
SelectedStockTaking?.StockTakingItems = await FruitBankSignalRClient.GetStockTakingItemsByStockTakingId(SelectedStockTaking.Id);
PrepareStockTakingItems(SelectedStockTaking);
SelectedStockTakingItem = _stockTakingItems.FirstOrDefault();
await InvokeAsync(StateHasChanged);
}
private void PrepareStockTakingItems(StockTaking? stockTaking)
{
_stockTakingItems = stockTaking?.StockTakingItems?
.OrderByDescending(x => x.IsInvalid)
.ThenByDescending(x => x.IsRequiredForMeasuring)
.ThenBy(x => x.Product?.Name)
.ToList() ?? [];
foreach (var stockTakingItem in _stockTakingItems)
{
stockTakingItem.StockTakingItemPallets ??= [];
stockTakingItem.StockTaking = stockTaking;
if (!stockTakingItem.IsInvalid && stockTakingItem.StockTakingItemPallets.Count == 0)
{
stockTakingItem.StockTakingItemPallets.Add(MeasurementService.CreateNewStockTakingItemPallet(stockTakingItem, LoggedInModel.CustomerDto));
}
else
{
foreach (var stockTakingItemPallet in stockTakingItem.StockTakingItemPallets)
stockTakingItemPallet.StockTakingItem = stockTakingItem;
}
}
}
private Task OnStockTakingItemPalletValueChanged(StockTakingItemPallet stockTakingItemPallet, StockTakingItem stockTakingItem)
{
// MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(stockTakingItem);
// BtnSaveEnabled = stockTakingItem.IsValidMeasuringValues() && stockTakingItemPallet.IsValidMeasuringValues(stockTakingItem.IsMeasurable);
StateHasChanged();
return Task.CompletedTask;
}
private async Task OnStockTakingItemPalletSaved(StockTakingItemPallet? responseStockTakingItemPallet)
{
if (responseStockTakingItemPallet != null)
{
responseStockTakingItemPallet.StockTakingItem = SelectedStockTakingItem;
SelectedStockTakingItem!.MeasuredStockQuantity = responseStockTakingItemPallet.TrayQuantity;
if (SelectedStockTakingItem.IsMeasurable) SelectedStockTakingItem.MeasuredNetWeight = responseStockTakingItemPallet.NetWeight;
SelectedStockTakingItem.StockTakingItemPallets!.UpdateCollection(responseStockTakingItemPallet, false);
SelectedStockTakingItem.IsMeasured = SelectedStockTakingItem.StockTakingItemPallets!.All(sip => sip.IsMeasuredAndValid(SelectedStockTakingItem.IsMeasurable));
// MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(SelectedShippingItem);
}
else await DialogService.ShowMessageBoxAsync("Hiba", "Adatok mentése sikertelen volt, ellenőrizze a mérés adatait!", MessageBoxRenderStyle.Danger);
await InvokeAsync(StateHasChanged);
}
}