improvements

This commit is contained in:
Loretta 2025-10-15 15:42:11 +02:00
parent 51aef27828
commit d93cb107b6
9 changed files with 99 additions and 264 deletions

View File

@ -41,12 +41,20 @@ public class OrderDto : MgOrderDto<OrderItemDto, ProductDto>, IOrderDto
} }
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public DateTime DateOfReceipt public string TimeOfReceiptText => $"{DateOfReceiptOrCreated:H:mm} - {Customer.Company}";
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public DateTime DateOfReceiptOrCreated => DateOfReceipt ?? CreatedOnUtc;
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public DateTime? DateOfReceipt
{ {
get get
{ {
//return CommonHelper.To<DateTime?>(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IOrderDto.DateOfReceipt))?.Value);
var dateOfReceipt = GenericAttributes.SingleOrDefault(x => x.Key == nameof(IOrderDto.DateOfReceipt))?.Value ?? string.Empty; var dateOfReceipt = GenericAttributes.SingleOrDefault(x => x.Key == nameof(IOrderDto.DateOfReceipt))?.Value ?? string.Empty;
return dateOfReceipt.IsNullOrWhiteSpace() ? CreatedOnUtc : CommonHelper.To<DateTime>(dateOfReceipt); return dateOfReceipt.IsNullOrWhiteSpace() ? null : CommonHelper.To<DateTime>(dateOfReceipt);
} }
} }

View File

@ -68,9 +68,14 @@ public class OrderItemDto : MgOrderItemDto<ProductDto>, IOrderItemDto
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public double GrossWeight public double GrossWeight
{ {
get => CommonHelper.To<double>(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IMeasuringGrossWeight.GrossWeight))?.Value ?? "0"); get
{
return double.Round(OrderItemPallets.Sum(x => x.NetWeight), 1);
//CommonHelper.To<double>(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IMeasuringGrossWeight.GrossWeight))?.Value ?? "0");
}
set set
{ {
throw new Exception($"OrderItemDto.GrossWeight not set");
//Direkt legyen exception! - J. //Direkt legyen exception! - J.
var ga = GenericAttributes?.SingleOrDefault(x => x.Key == nameof(IMeasuringGrossWeight.GrossWeight))!; var ga = GenericAttributes?.SingleOrDefault(x => x.Key == nameof(IMeasuringGrossWeight.GrossWeight))!;
ga.Value = value.ToString(CultureInfo.InvariantCulture); ga.Value = value.ToString(CultureInfo.InvariantCulture);

View File

@ -6,5 +6,8 @@ namespace FruitBank.Common.Interfaces;
public interface IOrderDto : IMgOrderDto<OrderItemDto, ProductDto>, IMeasured, IMeasurable public interface IOrderDto : IMgOrderDto<OrderItemDto, ProductDto>, IMeasured, IMeasurable
{ {
DateTime DateOfReceipt { get; } DateTime? DateOfReceipt { get; }
DateTime DateOfReceiptOrCreated { get; }
string TimeOfReceiptText { get; }
} }

View File

@ -1,5 +1,6 @@
@using AyCode.Core.Loggers @using AyCode.Core.Loggers
@using FruitBank.Common.Entities @using FruitBank.Common.Entities
@using FruitBank.Common.Helpers
@using FruitBank.Common.Interfaces @using FruitBank.Common.Interfaces
@using FruitBank.Common.Models @using FruitBank.Common.Models
@using FruitBank.Common.SignalRs @using FruitBank.Common.SignalRs
@ -55,8 +56,8 @@
[Parameter] public int? AddOrUpdateSignalRTag { get; set; } = null; [Parameter] public int? AddOrUpdateSignalRTag { get; set; } = null;
//[Parameter] public EventCallback OnPalletItemSaveClick { get; set; } //[Parameter] public EventCallback OnPalletItemSaveClick { get; set; }
[Parameter] public Func<TPalletItem?, Task>? OnPalletItemSaveClick { get; set; } [Parameter] public Func<TPalletItem?, Task>? OnPalletItemSaved { get; set; }
[Parameter] public Func<TPalletItem?, Task>? OnPalletItemValueChanged { get; set; } [Parameter] public Func<TPalletItem, Task>? OnPalletItemValueChanged { get; set; }
[Inject] public required IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; } [Inject] public required IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; }
[Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; } [Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; }
@ -81,12 +82,12 @@
if (AddOrUpdateSignalRTag == null) throw new Exception($"PalletItemComponent->PalletItemSaveClick(); AddOrUpdateSignalRTag == null"); if (AddOrUpdateSignalRTag == null) throw new Exception($"PalletItemComponent->PalletItemSaveClick(); AddOrUpdateSignalRTag == null");
PalletItem.ModifierId = LoggedInModel.CustomerDto?.Id; PalletItem.ModifierId = LoggedInModel.CustomerDto?.Id;
var responseShippingItemPallet = await FruitBankSignalRClient.PostDataAsync<TPalletItem>(AddOrUpdateSignalRTag!.Value, PalletItem); var responseShippingItemPallet = await FruitBankSignalRClient.PostDataAsync(AddOrUpdateSignalRTag!.Value, PalletItem);
if (responseShippingItemPallet != null) if (responseShippingItemPallet != null) PalletItem.Id = responseShippingItemPallet.Id; //Az UpdateCollection miatt kell, hogy megtalálja mit kell kicserélni! - J.
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 (OnPalletItemSaveClick != null) await OnPalletItemSaveClick.Invoke(responseShippingItemPallet); if (OnPalletItemSaved != null) await OnPalletItemSaved.Invoke(responseShippingItemPallet);
} }
protected async Task OnItemUpdating(string fieldName, object newValue, TPalletItem palletItem) protected async Task OnItemUpdating(string fieldName, object newValue, TPalletItem palletItem)
@ -96,25 +97,25 @@
switch (fieldName) switch (fieldName)
{ {
case nameof(OrderItemPallet.PalletWeight): case nameof(IMeasuringItemPalletBase.PalletWeight):
palletItem.PalletWeight = (double)newValue; palletItem.PalletWeight = (double)newValue;
break; break;
case nameof(OrderItemPallet.TareWeight): case nameof(IMeasuringItemPalletBase.TareWeight):
palletItem.TareWeight = (double)newValue; palletItem.TareWeight = (double)newValue;
break; break;
case nameof(OrderItemPallet.TrayQuantity): case nameof(IMeasuringItemPalletBase.TrayQuantity):
palletItem.TrayQuantity = (int)newValue; palletItem.TrayQuantity = (int)newValue;
break; break;
case nameof(OrderItemPallet.GrossWeight): case nameof(IMeasuringItemPalletBase.GrossWeight):
palletItem.GrossWeight = (double)newValue; palletItem.GrossWeight = (double)newValue;
break; break;
} }
palletItem.IsMeasured = false; palletItem.IsMeasured = false;
//MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(SelectedShippingItem); //MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(palletItem);
//BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable); //BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable);
_btnSaveEnabled = palletItem.IsValidMeasuringValues(IsMeasurable) && !palletItem.IsMeasured; _btnSaveEnabled = palletItem.IsValidMeasuringValues(IsMeasurable) && !palletItem.IsMeasured;

View File

@ -3,6 +3,8 @@
@using DevExpress.Blazor @using DevExpress.Blazor
@using DevExpress.Blazor.Internal @using DevExpress.Blazor.Internal
@using FruitBank.Common.Entities @using FruitBank.Common.Entities
@using FruitBank.Common.SignalRs
@using FruitBankHybrid.Shared.Components
@using FruitBankHybrid.Shared.Services @using FruitBankHybrid.Shared.Services
@using Mango.Nop.Core.Dtos @using Mango.Nop.Core.Dtos
@ -98,159 +100,54 @@
</div> </div>
<div style="margin-top: 50px;"> <div style="margin-top: 50px;">
@if (SelectedShippingItem != null) @if (SelectedShippingItem != null && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)
{ {
<h3 style="margin-bottom: 30px;" class="@(SelectedShippingItem.IsMeasured && SelectedShippingItem.ShippingItemPallets!.All(x => x.IsMeasuredAndValid(SelectedShippingItem.IsMeasurable)) ? "text-success" : "")"> <h3 style="margin-bottom: 30px;" class="@(SelectedShippingItem.IsMeasured && SelectedShippingItem.ShippingItemPallets!.All(x => x.IsMeasuredAndValid(SelectedShippingItem.IsMeasurable)) ? "text-success" : "")">
@SelectedShippingItem.Name @SelectedShippingItem.Name
</h3> </h3>
<EditForm Model="@SelectedShippingItem" Context="FrmContext" <DxFormLayout Data="@SelectedShippingItem" CaptionPosition="CaptionPosition.Vertical" CssClass="w-100">
OnValidSubmit="@HandleValidSubmit" <DxFormLayoutItem Context="dfsdf" ColSpanMd="12">
OnInvalidSubmit="@HandleInvalidSubmit"> @for (var index = 0; index < SelectedShippingItem.ShippingItemPallets!.Count; index++)
@* <DataAnnotationsValidator /> *@ {
<DxFormLayout Data="@SelectedShippingItem" CaptionPosition="CaptionPosition.Vertical" CssClass="w-100" ItemUpdating="@((pair) => OnItemUpdating(pair.Key, pair.Value))"> var localI = index + 1;
@* <DxFormLayoutItem CaptionCssClass="@(SelectedShippingItem.IsMeasured ? "text-success" : "")" Field="@nameof(ShippingItem.Name)" Caption="Item Name:" Enabled="false" ColSpanMd="8" /> var currentShippingItemPallet = SelectedShippingItem.ShippingItemPallets![index];
<DxFormLayoutItem Visible="false" CaptionCssClass="@(SelectedShippingItem.IsMeasured ? "text-success" : "")" Field="@nameof(ShippingItem.GrossWeightOnDocument)" Caption="GrossWeightOnDocument:" Enabled="false" ColSpanMd="3" />
<DxFormLayoutItem Visible="false" CaptionCssClass="@(SelectedShippingItem.IsMeasured ? "text-success" : "")" Field="@nameof(ShippingItem.NetWeightOnDocument)" Caption="NetWeightOnDocument:" Enabled="false" ColSpanMd="3" />
<DxFormLayoutItem CaptionCssClass="@(SelectedShippingItem.IsMeasured ? "text-success" : "")" <PalletItemComponent IsMeasurable="@SelectedShippingItem.IsMeasurable"
Field="@nameof(ShippingItem.PalletsOnDocument)" MeasuringIndex="@localI"
Enabled="@(SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)" PalletItem="@currentShippingItemPallet"
Caption="Pallets:" ColSpanMd="2" BeginRow="false"> ProductId="@SelectedShippingItem.ProductId!.Value"
</DxFormLayoutItem> AddOrUpdateSignalRTag="SignalRTags.AddOrUpdateMeasuredShippingItemPallet"
OnPalletItemSaved="pallet => OnShippingItemPalletSaved(pallet)"
OnPalletItemValueChanged="pallet => OnShippingItemPalletValueChanged(pallet, SelectedShippingItem)">
</PalletItemComponent>
}
</DxFormLayoutItem>
<DxFormLayoutItem Visible="true" CaptionCssClass="@(SelectedShippingItem.IsMeasured ? "text-success" : "")" <DxFormLayoutItem Context="vfdfgfd" ColSpanMd="12" BeginRow="true">
Field="@nameof(ShippingItem.IsMeasured)" <DxFormLayout CssClass="w-100">
Enabled="false" Caption="Sikeres mérés:" ColSpanMd="2"> <DxFormLayoutItem ColSpanMd="1" BeginRow="false"><strong>TOTAL:</strong></DxFormLayoutItem>
</DxFormLayoutItem> <DxFormLayoutItem ColSpanMd="2" BeginRow="false"/>
<DxFormLayoutItem ColSpanMd="3" BeginRow="true" /> <DxFormLayoutItem ColSpanMd="2" BeginRow="false"/>
<DxFormLayoutItem ColSpanMd="1" BeginRow="false"/>
<DxFormLayoutItem ColSpanMd="2" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredQuantity) db</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="2" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredGrossWeight) kg</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="1" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredNetWeight) kg</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="1" BeginRow="false"/>
</DxFormLayout>
</DxFormLayoutItem>
<DxFormLayoutItem CaptionCssClass="@(SelectedShippingItem.IsMeasured ? "text-success" : "")" @* <DxFormLayoutItem ColSpanMd="12" BeginRow="true">
Field="@nameof(ShippingItem.MeasuredQuantity)" <ValidationSummary/>
Enabled="@(SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)" </DxFormLayoutItem> *@
Caption="MeasuredQuantity:" ColSpanMd="3" BeginRow="false">
</DxFormLayoutItem>
<DxFormLayoutItem CaptionCssClass="@(SelectedShippingItem.IsMeasured ? "text-success" : "")"
Field="@nameof(ShippingItem.MeasuredNetWeight)"
Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="MeasuredNetWeight:" ColSpanMd="3">
</DxFormLayoutItem>
<DxFormLayoutItem CaptionCssClass="@(SelectedShippingItem.IsMeasured ? "text-success" : "")"
Field="@nameof(ShippingItem.MeasuredGrossWeight)"
Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="MeasuredGrossWeight:" ColSpanMd="3">
</DxFormLayoutItem> *@
<DxFormLayoutItem Context="dfsdf" ColSpanMd="12">
@for (var index = 0; index < SelectedShippingItem.ShippingItemPallets!.Count; index++)
{
var localI = index + 1;
var currentShippingItemPallet = SelectedShippingItem.ShippingItemPallets![index];
<DxFormLayout Data="@currentShippingItemPallet" CaptionPosition="CaptionPosition.Vertical" CssClass="w-100 measuring-form-layout"
ItemUpdating="@((pair) => OnItemUpdating2(pair.Key, pair.Value, currentShippingItemPallet))">
<DxFormLayoutItem ColSpanMd="1" BeginRow="true">
<text>@(localI).mérés</text>
</DxFormLayoutItem>
<DxFormLayoutItem CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.PalletWeight), currentShippingItemPallet))"
Field="@nameof(ShippingItemPallet.PalletWeight)"
Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Rakl.súly(kg)" ColSpanMd="2"/>
<DxFormLayoutItem CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.TareWeight), currentShippingItemPallet))"
Field="@nameof(ShippingItemPallet.TareWeight)"
Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Tára(kg)" ColSpanMd="2"/>
<DxFormLayoutItem ColSpanMd="1" />
<DxFormLayoutItem CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.TrayQuantity), currentShippingItemPallet))"
Field="@nameof(ShippingItemPallet.TrayQuantity)"
Enabled="@(SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Rekesz/csomag" ColSpanMd="2"/>
<DxFormLayoutItem CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.GrossWeight), currentShippingItemPallet))"
Field="@nameof(ShippingItemPallet.GrossWeight)"
Enabled="@(SelectedShippingItem.IsMeasurable && SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0)"
Caption="Br.súly(kg)" ColSpanMd="2">
</DxFormLayoutItem>
<DxFormLayoutItem Caption="Net.súly(kg)" ColSpanMd="1" CaptionCssClass="@(GetShippingPalletsCssClassNames(nameof(ShippingItemPallet.NetWeight), currentShippingItemPallet))">
<text>@(currentShippingItemPallet.NetWeight) kg.</text>
</DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="1">
<DxButton Text="@(currentShippingItemPallet.Id == 0 ? "Mentés" : "Módosítás")" Click="() => OnShippingItemPalletSaveClick(currentShippingItemPallet)" CssClass="w-100"/>
</DxFormLayoutItem>
</DxFormLayout>
}
</DxFormLayoutItem>
<DxFormLayoutItem Context="vfdfgfd" ColSpanMd="12" BeginRow="true">
<DxFormLayout CssClass="w-100">
<DxFormLayoutItem ColSpanMd="1" BeginRow="false"><strong>TOTAL:</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="2" BeginRow="false" />
<DxFormLayoutItem ColSpanMd="2" BeginRow="false" />
<DxFormLayoutItem ColSpanMd="1" BeginRow="false" />
<DxFormLayoutItem ColSpanMd="2" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredQuantity) db</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="2" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredGrossWeight) kg</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="1" BeginRow="false"><strong>@(SelectedShippingItem.MeasuredNetWeight) kg</strong></DxFormLayoutItem>
<DxFormLayoutItem ColSpanMd="1" BeginRow="false" />
</DxFormLayout>
</DxFormLayoutItem>
@if (!_errorText.IsNullOrWhiteSpace())
{
<DxFormLayoutItem ColSpanMd="12" BeginRow="true"> <DxFormLayoutItem ColSpanMd="12" BeginRow="true">
<ValidationSummary /> <text>HIBA! @_errorText</text>
</DxFormLayoutItem> </DxFormLayoutItem>
//_errorText = string.Empty;
@* @if (SelectedShippingItem.ProductId.GetValueOrDefault(0) > 0) }
{ </DxFormLayout>
<DxFormLayoutItem ColSpanMd="12" BeginRow="true">
<DxButton Text="@(SelectedShippingItem.IsMeasured ? "Befejezett mérés módosítása" : "Mérés befejezése")"
Enabled="@BtnSaveEnabled"
SubmitFormOnClick="true" CssClass="w-100" />
</DxFormLayoutItem>
}
else
{
_errorText = "Nem végezhető el a mérés, nincs megadva a ProductId! Jelezze a vezetőségnek...";
}
*@
@if (!_errorText.IsNullOrWhiteSpace())
{
<DxFormLayoutItem ColSpanMd="12" BeginRow="true">
<text>HIBA! @_errorText</text>
</DxFormLayoutItem>
//_errorText = string.Empty;
}
</DxFormLayout>
</EditForm>
} }
</div> </div>
@*
<div class="row w-100" style="margin-top: 100px;">
<div class="col-md-12">
<input @bind="_userName" placeholder="Your name" />
<input @bind="_message" placeholder="Partner ID..." />
<button @onclick="GetPartner">Get partner</button>
</div>
</div>
<div class="row w-100">
<div class="col-md-12">
<ul>
@foreach (var m in _messages)
{
<li><b>@m.User:</b> @m.Text</li>
}
</ul>
</div>
</div>
*@

View File

@ -132,121 +132,42 @@ namespace FruitBankHybrid.Shared.Pages
StateHasChanged(); StateHasChanged();
} }
private async Task UpdateShippingItem(ShippingItem? shippingItem) private Task OnShippingItemPalletValueChanged(ShippingItemPallet shippingItemPallet, ShippingItem shippingItem)
{ {
if (shippingItem != null && shippingItem.IsValidMeasuringValues()) MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(shippingItem);
{ BtnSaveEnabled = shippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(shippingItem.IsMeasurable);
BtnSaveEnabled = false;
shippingItem.ShippingItemPallets = shippingItem.ShippingItemPallets!.Where(x => x.IsValidMeasuringValues(shippingItem.IsMeasurable)).ToList();
var updatedShippingItem = await FruitBankSignalRClient.UpdateMeasuredShippingItem(shippingItem); StateHasChanged();
//var updatedShippingItem = await FruitBankSignalRClient.AddOrUpdateMeasuredShippingItemPallets(shippingItem.ShippingItemPallets!.Where(x => x.IsValidMeasuringValues(shippingItem.IsMeasurable)).ToList()); return Task.CompletedTask;
if (updatedShippingItem == null)
{
LogErrorAndDisplayText($"Sikertelen volt a shippingItem mentése! {shippingItem}");
return;
}
RefreshSelectedShippingItemMeasuredValuesFromDb(updatedShippingItem);
}
} }
private async Task OnShippingItemPalletSaveClick(ShippingItemPallet shippingItemPallet) private Task OnShippingItemPalletSaved(ShippingItemPallet? responseShippingItemPallet)
{ {
ShippingItemPallet? responseShippingItemPallet;
shippingItemPallet.ModifierId = LoggedInModel.CustomerDto?.Id;
if (shippingItemPallet.Id <= 0) responseShippingItemPallet = await FruitBankSignalRClient.AddShippingItemPallet(shippingItemPallet);
else responseShippingItemPallet = await FruitBankSignalRClient.UpdateShippingItemPallet(shippingItemPallet);
if (responseShippingItemPallet != null) if (responseShippingItemPallet != null)
{ {
shippingItemPallet.Id = responseShippingItemPallet.Id; //Az UpdateCollection miatt kell, hogy megtalálja mit kell kicserélni! - J.
SelectedShippingItem!.ShippingItemPallets!.UpdateCollection(responseShippingItemPallet, false); SelectedShippingItem!.ShippingItemPallets!.UpdateCollection(responseShippingItemPallet, false);
MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(SelectedShippingItem); MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(SelectedShippingItem);
} }
else LogErrorAndDisplayText($"Sikertelen volt a raklap adatainak mentése! {shippingItemPallet}"); else DisplayErrorText($"Sikertelen volt a raklap adatainak mentése!");
StateHasChanged(); StateHasChanged();
return Task.CompletedTask;
} }
private bool IsShippingitemPalletMeasuredAndValid(ShippingItemPallet shippingItemPallet) private bool IsShippingitemPalletMeasuredAndValid(ShippingItemPallet shippingItemPallet)
=> MeasuringService.IsCustomItemPalletMeasuredAndValid(shippingItemPallet, SelectedShippingItem!.IsMeasurable); => MeasuringService.IsCustomItemPalletMeasuredAndValid(shippingItemPallet, SelectedShippingItem!.IsMeasurable);
private async Task HandleValidSubmit()
{
await UpdateShippingItem(SelectedShippingItem);
}
private void HandleInvalidSubmit()
{
//FormValidationState = @"Form data is invalid";
}
protected void OnItemUpdating(string fieldName, object newValue)
{
return;
BtnSaveEnabled = false;
if (SelectedShippingItem == null) return;
switch (fieldName)
{
case nameof(ShippingItem.MeasuredQuantity):
SelectedShippingItem.MeasuredQuantity = (int)newValue <= 0 ? 0 : (int)newValue;
break;
case nameof(ShippingItem.MeasuredNetWeight):
SelectedShippingItem.MeasuredNetWeight = !SelectedShippingItem.IsMeasurable || (double)newValue <= 0 ? 0 : (double)newValue;
break;
case nameof(ShippingItem.MeasuredGrossWeight):
SelectedShippingItem.MeasuredGrossWeight = !SelectedShippingItem.IsMeasurable || (double)newValue <= 0 ? 0 : (double)newValue;
break;
}
BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues();
}
protected void OnItemUpdating2(string fieldName, object newValue, ShippingItemPallet shippingItemPallet)
{
BtnSaveEnabled = false;
if (SelectedShippingItem == null) return;
switch (fieldName)
{
case nameof(ShippingItemPallet.PalletWeight):
shippingItemPallet.PalletWeight = (double)newValue;
break;
case nameof(ShippingItemPallet.TareWeight):
shippingItemPallet.TareWeight = (double)newValue;
break;
case nameof(ShippingItemPallet.TrayQuantity):
shippingItemPallet.TrayQuantity = (int)newValue;
break;
case nameof(ShippingItemPallet.GrossWeight):
shippingItemPallet.GrossWeight = (double)newValue;
break;
}
MeasuringValuesHelper.SetShippingItemTotalMeasuringValues(SelectedShippingItem);
BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable);
//BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() &&
// shippingItemPallet.IsValidSafeMeasuringValues() &&
// SelectedShippingItem.ShippingItemPallets!.Any(sip => sip.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable));
}
private void LogErrorAndDisplayText(string errorText, Exception? ex = null) private void LogErrorAndDisplayText(string errorText, Exception? ex = null)
{ {
_errorText = errorText;
_logger.Error($"{errorText}", ex); _logger.Error($"{errorText}", ex);
DisplayErrorText(errorText);
}
private void DisplayErrorText(string errorText)
{
_errorText = errorText;
//Nem végezhető el a mérés, nincs megadva a ProductId! Jelezze a vezetőségnek... //Nem végezhető el a mérés, nincs megadva a ProductId! Jelezze a vezetőségnek...
} }
} }
} }

View File

@ -13,12 +13,12 @@
<div style="margin-top: 50px;"> <div style="margin-top: 50px;">
<DxFormLayout CaptionPosition="CaptionPosition.Vertical" CssClass="w-100"> <DxFormLayout CaptionPosition="CaptionPosition.Vertical" CssClass="w-100">
<DxFormLayoutItem Caption="Átvétel dátuma" ColSpanMd="2" <DxFormLayoutItem Caption="Átvétel dátuma" ColSpanMd="2"
CaptionCssClass="@(SelectedOrder != null && _measuringDates.Where(x => MeasuringService.DaysEqual(x.DateTime, SelectedOrder.DateOfReceipt)).All(x => x.IsMeasured) ? "text-success" : "")"> CaptionCssClass="@(SelectedOrder != null && _measuringDates.Where(x => MeasuringService.DaysEqual(x.DateTime, SelectedOrder.DateOfReceiptOrCreated)).All(x => x.IsMeasured) ? "text-success" : "")">
<DxDateEdit CssClass="cw-320" <DxDateEdit CssClass="cw-320"
DisplayFormat="m" DisplayFormat="m"
Format="m" Format="m"
Context="ctxOrderDate" Context="ctxOrderDate"
Date="@(SelectedOrder?.DateOfReceipt.Date ?? DateTime.Now.Date)" Date="@(SelectedOrder?.DateOfReceiptOrCreated.Date ?? DateTime.Now.Date)"
CustomDisabledDate="@OnCustomDisabledMeasuringDate" CustomDisabledDate="@OnCustomDisabledMeasuringDate"
DateChanged="@((DateTime newValue) => OnMeasuringDateChanged(newValue))" DateChanged="@((DateTime newValue) => OnMeasuringDateChanged(newValue))"
InputId="deDisabledDates"> InputId="deDisabledDates">
@ -44,7 +44,7 @@
@bind-Value="@SelectedOrder" @bind-Value="@SelectedOrder"
Text="Válasszon időpontot..." Text="Válasszon időpontot..."
ValueFieldName="@nameof(OrderDto.Id)" ValueFieldName="@nameof(OrderDto.Id)"
TextFieldName="@nameof(OrderDto.DateOfReceipt)" TextFieldName="@nameof(OrderDto.TimeOfReceiptText)"
CssClass="cw-480" CssClass="cw-480"
Context="ctxOrder" Context="ctxOrder"
DropDownBodyCssClass="dd-body-class" DropDownBodyCssClass="dd-body-class"
@ -92,7 +92,7 @@
if (isValidAndMeasured) cssClass = "text-success"; if (isValidAndMeasured) cssClass = "text-success";
else if (isValid) cssClass = string.Empty; else if (isValid) cssClass = string.Empty;
<h5 class="@cssClass">@($"{selectedOrderItemDto.ProductName} - {trayQuantity}/{selectedOrderItemDto.Quantity} rekesz, {(selectedOrderItemDto.IsMeasurable ? selectedOrderItemDto.NetWeight + "kg." : "nem mérendő!")}")</h5> <h5 class="@cssClass">@($"{selectedOrderItemDto.ProductName} - {trayQuantity}/{selectedOrderItemDto.Quantity} rekesz, {(selectedOrderItemDto.IsMeasurable ? "net súly: " + selectedOrderItemDto.NetWeight + "kg." : "nem mérendő!")}")</h5>
} }
} }
</ItemHeaderTextTemplate> </ItemHeaderTextTemplate>
@ -116,8 +116,8 @@
PalletItem="@currentOrderItemPallet" PalletItem="@currentOrderItemPallet"
ProductId="@selectedOrderItemDto.ProductId" ProductId="@selectedOrderItemDto.ProductId"
AddOrUpdateSignalRTag="SignalRTags.AddOrUpdateMeasuredOrderItemPallet" AddOrUpdateSignalRTag="SignalRTags.AddOrUpdateMeasuredOrderItemPallet"
OnPalletItemSaveClick="pallet => OnShippingItemPalletSaveClick(pallet, selectedOrderItemDto)" OnPalletItemSaved="pallet => OnOrderItemPalletSaved(pallet, selectedOrderItemDto)"
OnPalletItemValueChanged="pallet => OnPalletItemValueChanged(pallet, selectedOrderItemDto)"> OnPalletItemValueChanged="pallet => OnOrderItemPalletValueChanged(pallet, selectedOrderItemDto)">
</PalletItemComponent> </PalletItemComponent>
} }
</DxFormLayoutItem> </DxFormLayoutItem>

View File

@ -49,9 +49,9 @@ namespace FruitBankHybrid.Shared.Pages
{ {
var orders = await FruitBankSignalRClient.GetPendingOrderDtos() ?? []; var orders = await FruitBankSignalRClient.GetPendingOrderDtos() ?? [];
_measuringDates = orders.Select(order => new MeasuringDateSelectorModel(order.Id, order.DateOfReceipt, order.IsMeasured)).ToList(); _measuringDates = orders.Select(order => new MeasuringDateSelectorModel(order.Id, order.DateOfReceiptOrCreated, order.IsMeasured)).ToList();
SelectedDayOrders = orders.Where(order => MeasuringService.DaysEqual(order.DateOfReceipt, dateTime)).ToList(); SelectedDayOrders = orders.Where(order => MeasuringService.DaysEqual(order.DateOfReceiptOrCreated, dateTime)).ToList();
SelectedOrder = SelectedDayOrders.FirstOrDefault(); SelectedOrder = SelectedDayOrders.FirstOrDefault();
foreach (var orderItem in SelectedDayOrders.SelectMany(order => order.OrderItemDtos.Where(orderItem => orderItem.OrderItemPallets.Count == 0))) foreach (var orderItem in SelectedDayOrders.SelectMany(order => order.OrderItemDtos.Where(orderItem => orderItem.OrderItemPallets.Count == 0)))
@ -115,13 +115,13 @@ namespace FruitBankHybrid.Shared.Pages
//BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable); //BtnSaveEnabled = SelectedShippingItem.IsValidMeasuringValues() && shippingItemPallet.IsValidMeasuringValues(SelectedShippingItem.IsMeasurable);
} }
private Task OnPalletItemValueChanged(OrderItemPallet? orderItemPallet, OrderItemDto selectedOrderItemDto) private Task OnOrderItemPalletValueChanged(OrderItemPallet orderItemPallet, OrderItemDto selectedOrderItemDto)
{ {
StateHasChanged(); StateHasChanged();
return Task.CompletedTask; return Task.CompletedTask;
} }
private Task OnShippingItemPalletSaveClick(OrderItemPallet? orderItemPallet, OrderItemDto selectedOrderItemDto) private Task OnOrderItemPalletSaved(OrderItemPallet? orderItemPallet, OrderItemDto selectedOrderItemDto)
{ {
if (orderItemPallet != null) if (orderItemPallet != null)
{ {

View File

@ -18,7 +18,7 @@ public class MeasuringService
=> (date1.Year == date2.Year && date1.DayOfYear == date2.DayOfYear); => (date1.Year == date2.Year && date1.DayOfYear == date2.DayOfYear);
public static void OnCustomDisabledDate(CalendarCustomDisabledDateEventArgs args, List<MeasuringDateSelectorModel> measuringDates) public static void OnCustomDisabledDate(CalendarCustomDisabledDateEventArgs args, List<MeasuringDateSelectorModel> measuringDates)
=> args.IsDisabled = !measuringDates.Exists(shippingDateModel => DaysEqual(shippingDateModel.DateTime, args.Date)); => args.IsDisabled = measuringDates == null || !measuringDates.Exists(shippingDateModel => DaysEqual(shippingDateModel.DateTime, args.Date));
public static string GetShippingDateCssClassNames(DateTime date, List<MeasuringDateSelectorModel> measuringDates) public static string GetShippingDateCssClassNames(DateTime date, List<MeasuringDateSelectorModel> measuringDates)
{ {