@page "/Warehouse/PackList/{WzHeader:guid}"
@using OrdersManagement.Models
@using Syncfusion.Blazor.Cards
@using Syncfusion.Blazor.Grids
@using SytelineSaAppEfDataModel.Dtos
@using Syncfusion.Blazor.Navigations
@using Syncfusion.Blazor.Popups
@using Syncfusion.Blazor.Inputs
@inject WarehouseService WarehouseService
Packing List
@if (_isValid)
{
Packing List został wygenerowany i wysłany!
}
else if (string.IsNullOrWhiteSpace(EmailAddresses))
{
Błąd: Proszę wprowadzić przynajmniej jeden ADRES EMAIL do wysyłki raportu!
}
else if (!_isValid)
{
Błąd: Nie Wszystkie linie mają wypełniony NUMER PALETY.
Packing List nie zostanie
wygenerowany!
}
FA Krosno Manager © @(DateTime.Now.Year)
@code {
[Parameter] public Guid WzHeader { get; set; }
private SfGrid _grid;
private IEnumerable _wzRowsMeyle { get; set; } = new List();
private WzHeaderDto _wzHeader;
private SfTextBox _scanner;
private bool _isValid;
private bool Visibility { get; set; }
private string? EmailAddresses { get; set; } = string.Empty;
private string PalletNumber { get; set; } = "0";
private string ScannedValues { get; set; } = string.Empty;
private IDictionary ScannedValuesWithItems { get; set; } = new Dictionary();
private string LastScannedValue { get; set; } = string.Empty;
private string ScannedValue { get; set; } = string.Empty;
private void HideModal()
{
Visibility = false;
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
_wzHeader = await WarehouseService.GetWzHeaderByIdAsync(WzHeader);
_wzRowsMeyle = await WarehouseService.GetWzRowsByWzHeaderId(WzHeader);
_wzRowsMeyle.ToList().ForEach(x => ScannedValuesWithItems.Add(new RowMeyleModel
{
ItemNumber = x.ItemNumber.Replace(" ", "").Replace("-", ""),
TransactionNumber = x.TransactionNumber,
WzNumber = x.WzNumber
}, null));
EmailAddresses = _wzHeader.EmailAddresses;
await _scanner.FocusAsync();
StateHasChanged();
}
}
private async Task SaveChanges()
{
List changedRecords = new List();
if (!string.IsNullOrWhiteSpace(EmailAddresses))
{
await WarehouseService.AddEmailsToWzHeaderAsync(WzHeader, EmailAddresses);
}
IDictionary scannedValuesWithNotNullValues = ScannedValuesWithItems.Where(x => x.Value is not null).ToDictionary(x => x.Key, y => y.Value);
foreach (KeyValuePair scannedValueWithNotNullValue in scannedValuesWithNotNullValues)
{
WzRowMeyleDto rowMeyleDto = _wzRowsMeyle.First(r => r.ItemNumber.Replace(" ", "").Replace("-", "").Trim() == scannedValueWithNotNullValue.Key.ItemNumber && r.TransactionNumber == scannedValueWithNotNullValue.Key.TransactionNumber && r.WzNumber == scannedValueWithNotNullValue.Key.WzNumber);
rowMeyleDto.PalletNumber = int.Parse(PalletNumber);
rowMeyleDto.PartNumber = scannedValueWithNotNullValue.Value;
changedRecords.Add(rowMeyleDto);
}
if (changedRecords.Any())
{
await UpdateRows(changedRecords);
}
await _grid.EndEditAsync();
}
private async Task OnBatchSave(BeforeBatchSaveArgs obj)
{
var changes = obj.BatchChanges;
var changedRecords = changes.ChangedRecords;
if (!changedRecords.Any()) return;
await UpdateRows(changedRecords);
}
private async Task ExportXls()
{
int count = _wzRowsMeyle.Count(x => x.PalletNumber == null);
_isValid = count == 0;
_isValid = _isValid && !string.IsNullOrWhiteSpace(EmailAddresses);
if (_isValid)
{
await WarehouseService.AddEmailsToWzHeaderAsync(WzHeader, EmailAddresses);
await WarehouseService.GenerateXlsForMeyleAsync(WzHeader);
}
Visibility = true;
}
private void ScanValue(ChangedEventArgs obj)
{
if (string.IsNullOrWhiteSpace(obj.Value)) return;
ScannedValue = obj.Value.Replace(" ", "").Replace("-", "").Replace("http://qr.meyle.com/", "").Trim();
ScannedValue = ScannedValue.Replace("40409100006", "1409100076");
if (ScannedValuesWithItems.All(x => x.Key.ItemNumber != ScannedValue.Replace(" ", "").Trim()) && ScannedValuesWithItems.Any(x => x.Key.ItemNumber == LastScannedValue.Replace(" ", "").Trim()))
{
RowMeyleModel key = ScannedValuesWithItems.First(x => x.Key.ItemNumber == LastScannedValue).Key;
ScannedValuesWithItems[key] = ScannedValue.Trim();
ScannedValues += $"{ScannedValue}\n";
}
else if (!string.IsNullOrWhiteSpace(ScannedValue))
{
ScannedValues += $"{ScannedValue}: ";
}
LastScannedValue = ScannedValue;
ScannedValue = string.Empty;
}
private async Task UpdateRows(IList changedRecords)
{
await WarehouseService.UpdateWzRowsMeyleAsync(changedRecords);
_wzRowsMeyle = await WarehouseService.GetWzRowsByWzHeaderId(WzHeader);
StateHasChanged();
await _grid.Refresh();
}
}