From c4061dae6ff750ba727a20d9783540eb1150b61c Mon Sep 17 00:00:00 2001 From: Loretta Date: Sat, 20 Sep 2025 05:39:20 +0200 Subject: [PATCH] MeasuringIn improvements --- .../Pages/MeasuringIn.razor | 95 ++++++++++++------- .../Pages/MeasuringIn.razor.cs | 63 +++++++++--- 2 files changed, 112 insertions(+), 46 deletions(-) diff --git a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor index a523bff..9421a2c 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor +++ b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor @@ -1,4 +1,5 @@ @page "/MeasuringIn" +@using AyCode.Utils.Extensions @using DevExpress.Blazor @using DevExpress.Blazor.Internal @using FruitBank.Common.Entities @@ -9,50 +10,78 @@
- - Összes szállítmány listázása + + + + @{ + var cssClass = GetCssClassNames(ctxShippingDate); + if (!cssClass.IsNullOrWhiteSpace()) + { + @ctxShippingDate.Day.ToString() + } + else + { + @ctxShippingDate.Day.ToString() + } + } + + + - + - -
-
- @($"{ctxCombo.DataItem.ShippingDate} [{ctxCombo.DataItem.LicencePlate}]") - @* @(string.Join("; ", context.DataItem?.ShippingDocuments?.Select(x => x.Partner?.Name ?? string.Empty))) *@ -
-
+ @bind-Value="@SelectedShipping" + Text="Select licence plate" + ValueFieldName="@nameof(Shipping.Id)" + TextFieldName="@nameof(Shipping.LicencePlate)" + CssClass="cw-480" + Context="ctxShipping" + SelectedDataItemChanged="@((SelectedDataItemChangedEventArgs args) => OnSelectedShippingChanged(args))" + InputId="cbNotMeasuredShippings"> + + @ctxShipping.DisplayText
- + + InputId="cbShippingDocument"> + + @ctxShippingDocument.DisplayText + + - + + InputId="cbShippingItem"> + + @ctxShippingitem.DisplayText) + +
@@ -61,23 +90,23 @@ @if (SelectedShippingItem != null) { - + OnValidSubmit="@HandleValidSubmit" + OnInvalidSubmit="@HandleInvalidSubmit"> + - - - - - + + + + + - + - + - + diff --git a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs index 25e7054..42c349f 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs +++ b/FruitBankHybrid.Shared/Pages/MeasuringIn.razor.cs @@ -17,6 +17,7 @@ using System.Linq; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; +using DevExpress.Data.Mask.Internal; using Microsoft.AspNetCore.Components.Forms; using static System.Net.Mime.MediaTypeNames; using static System.Runtime.InteropServices.JavaScript.JSType; @@ -24,6 +25,17 @@ using ILogger = FruitBank.Common.Loggers.ILogger; namespace FruitBankHybrid.Shared.Pages { + public class ShippingDateModel + { + public DateTime DateTime { get; set; } + public bool IsMeasured { get; set; } + + public ShippingDateModel(DateTime dateTime, bool isMeasured) + { + DateTime = dateTime; + IsMeasured = isMeasured; + } + } public partial class MeasuringIn : ComponentBase { [Inject] public required IEnumerable LogWriters { get; set; } @@ -36,8 +48,10 @@ namespace FruitBankHybrid.Shared.Pages private ShippingDocument? SelectedShippingDocument { get; set; } private ShippingItem? SelectedShippingItem { get; set; } + DateTime DateTimeValue { get; set; } = DateTime.Today; protected bool BtnSaveEnabled { get; set; } - protected bool ChkAllShipping { get; set; } + + private List _shippingDates = null!; private string _userName = "Partner name"; private string _message = string.Empty; @@ -48,24 +62,47 @@ namespace FruitBankHybrid.Shared.Pages _logger = new LoggerClient(LogWriters.ToArray()); _logger.Info("OnInitializedAsync"); - await RefreshShippingsFromDb(ChkAllShipping); + await RefreshShippingsFromDb(DateTime.Now); await base.OnInitializedAsync(); } - private async Task RefreshShippingsFromDb(bool getAllShipping) + private async Task RefreshShippingsFromDb(DateTime dateTime) { - if (getAllShipping) NotMeasuredShippings = await FruitBankSignalRClient.GetShippings() ?? []; - else NotMeasuredShippings = await FruitBankSignalRClient.GetNotMeasuredShippings() ?? []; + var shippings = await FruitBankSignalRClient.GetShippings() ?? []; + + _shippingDates = shippings.Select(x => new ShippingDateModel(x.ShippingDate.Date, x.IsAllMeasured)).ToList(); + NotMeasuredShippings = shippings.Where(x => DaysEqual(x.ShippingDate.Date, dateTime)).ToList(); + + //if (getAllShipping) NotMeasuredShippings = await FruitBankSignalRClient.GetShippings() ?? []; + //else NotMeasuredShippings = await FruitBankSignalRClient.GetNotMeasuredShippings() ?? []; SelectedShipping = NotMeasuredShippings.FirstOrDefault(); } - private async Task OnChkAllShippingChanged(bool value) + private async Task OnSelectedShippingDateChanged(DateTime selectedDateTime) + => await RefreshShippingsFromDb(selectedDateTime); + + + private void OnCustomDisabledDate(CalendarCustomDisabledDateEventArgs args) + => args.IsDisabled = !_shippingDates.Exists(shippingDateModel => DaysEqual(shippingDateModel.DateTime, args.Date)); + + private string GetCssClassNames(DateTime date) { - ChkAllShipping = value; - await RefreshShippingsFromDb(ChkAllShipping); + if (_shippingDates.Exists(shipping => !shipping.IsMeasured && shipping.DateTime.Date <= DateTime.Now.Date && DaysEqual(shipping.DateTime, date))) + return "fw-bold text-danger"; + + if (_shippingDates.Exists(shipping => shipping.IsMeasured && DaysEqual(shipping.DateTime, date))) + return "fw-bold text-success"; + + if (_shippingDates.Exists(shipping => !shipping.IsMeasured && DaysEqual(shipping.DateTime, date))) + return "fw-bold"; + + return string.Empty; } + private static bool DaysEqual(DateTime date1, DateTime date2) + => (date1.Year == date2.Year && date1.DayOfYear == date2.DayOfYear); + private void OnSelectedShippingChanged(SelectedDataItemChangedEventArgs eventArgs) { SelectedShippingDocument = eventArgs.DataItem?.ShippingDocuments?.FirstOrDefault(); @@ -102,11 +139,11 @@ namespace FruitBankHybrid.Shared.Pages SelectedShippingItem.MeasuredGrossWeight = shippingItemFromDb.MeasuredGrossWeight; SelectedShippingItem.IsMeasured = shippingItemFromDb.IsMeasured; - if (SelectedShippingItem is { IsMeasured: true }) - { - SelectedShippingDocument?.ShippingItems?.Remove(SelectedShippingItem); - SelectedShippingItem = SelectedShippingDocument?.ShippingItems?.FirstOrDefault(); - } + //if (SelectedShippingItem is { IsMeasured: true }) + //{ + // SelectedShippingDocument?.ShippingItems?.Remove(SelectedShippingItem); + // SelectedShippingItem = SelectedShippingDocument?.ShippingItems?.FirstOrDefault(); + //} StateHasChanged(); }