improvements, fixes, etc...

This commit is contained in:
Loretta 2025-10-18 08:43:26 +02:00
parent f145dfcd70
commit 94cc71513c
6 changed files with 22 additions and 31 deletions

View File

@ -16,7 +16,6 @@ public class MeasuringProductDto : ProductDto, IMeasuringProductDto
} }
public double NetWeight { get; set; } public double NetWeight { get; set; }
public double GrossWeight { get; set; }
public bool IsMeasurable { get; set; } public bool IsMeasurable { get; set; }
public MeasuringProductDto() :base() public MeasuringProductDto() :base()
@ -34,7 +33,6 @@ public class MeasuringProductDto : ProductDto, IMeasuringProductDto
measuringAttributeValues.Id = Id; measuringAttributeValues.Id = Id;
measuringAttributeValues.NetWeight = NetWeight; measuringAttributeValues.NetWeight = NetWeight;
measuringAttributeValues.GrossWeight = GrossWeight;
measuringAttributeValues.IsMeasurable = IsMeasurable; measuringAttributeValues.IsMeasurable = IsMeasurable;
} }
@ -48,9 +46,8 @@ public class MeasuringProductDto : ProductDto, IMeasuringProductDto
if (measuringAttributeValues == null) return; if (measuringAttributeValues == null) return;
NetWeight = measuringAttributeValues.NetWeight; NetWeight = measuringAttributeValues.NetWeight;
GrossWeight = measuringAttributeValues.GrossWeight;
IsMeasurable = measuringAttributeValues.IsMeasurable; IsMeasurable = measuringAttributeValues.IsMeasurable;
} }
public bool HasMeasuringValues() => Id > 0 && NetWeight > 0 && GrossWeight > 0 && IsMeasurable; public bool HasMeasuringValues() => Id > 0 && NetWeight > 0 && IsMeasurable;
} }

View File

@ -13,6 +13,7 @@ using Nop.Core.Domain.Orders;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using System.Globalization; using System.Globalization;
using System.Linq.Expressions; using System.Linq.Expressions;
using Mango.Nop.Core.Extensions;
namespace FruitBank.Common.Dtos; namespace FruitBank.Common.Dtos;
@ -47,17 +48,11 @@ public class OrderDto : MgOrderDto<OrderItemDto, ProductDto>, IOrderDto
public DateTime DateOfReceiptOrCreated => DateOfReceipt ?? CreatedOnUtc; public DateTime DateOfReceiptOrCreated => DateOfReceipt ?? CreatedOnUtc;
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public DateTime? DateOfReceipt public DateTime? DateOfReceipt => GenericAttributes.GetValueOrNull<DateTime>(nameof(IOrderDto.DateOfReceipt));
{
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;
return dateOfReceipt.IsNullOrWhiteSpace() ? null : CommonHelper.To<DateTime>(dateOfReceipt);
}
}
//if (GenericAttributes.TryGetValue<DateTime>(nameof(IOrderDto.DateOfReceipt), out var value)) return value;
//var dateOfReceipt = GenericAttributes.SingleOrDefault(x => x.Key == nameof(IOrderDto.DateOfReceipt))?.Value ?? string.Empty;
//return dateOfReceipt.IsNullOrWhiteSpace() ? null : CommonHelper.To<DateTime>(dateOfReceipt);
public OrderDto() :base() public OrderDto() :base()
{ } { }
public OrderDto(int orderId) : base(orderId) public OrderDto(int orderId) : base(orderId)

View File

@ -1,6 +1,7 @@
using FruitBank.Common.Interfaces; using FruitBank.Common.Interfaces;
using LinqToDB.Mapping; using LinqToDB.Mapping;
using Mango.Nop.Core.Dtos; using Mango.Nop.Core.Dtos;
using Mango.Nop.Core.Extensions;
using Newtonsoft.Json; using Newtonsoft.Json;
using Nop.Core; using Nop.Core;
using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Catalog;
@ -18,7 +19,7 @@ public class ProductDto : MgProductDto, IProductDto
orderItemDto.Id == genericAttribute.EntityId && genericAttribute.KeyGroup == nameof(Product); orderItemDto.Id == genericAttribute.EntityId && genericAttribute.KeyGroup == nameof(Product);
[Association(ThisKey = nameof(Id), OtherKey = nameof(GenericAttribute.EntityId), ExpressionPredicate = nameof(RelationWithGenericAttribute), CanBeNull = true)] [Association(ThisKey = nameof(Id), OtherKey = nameof(GenericAttribute.EntityId), ExpressionPredicate = nameof(RelationWithGenericAttribute), CanBeNull = false)]
public List<GenericAttribute> GenericAttributes { get; set; } public List<GenericAttribute> GenericAttributes { get; set; }
public ProductDto() :base() public ProductDto() :base()
@ -31,7 +32,7 @@ public class ProductDto : MgProductDto, IProductDto
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public bool IsMeasurable public bool IsMeasurable
{ {
get => CommonHelper.To<bool>(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IMeasurable.IsMeasurable))?.Value ?? "false"); get => GenericAttributes.GetValueOrDefault<bool>(nameof(IMeasurable.IsMeasurable));
set set
{ {
throw new Exception($"ProductDto.IsMeasurable not set"); throw new Exception($"ProductDto.IsMeasurable not set");
@ -45,21 +46,24 @@ public class ProductDto : MgProductDto, IProductDto
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public double Tare public double Tare
{ {
get => CommonHelper.To<double>(GenericAttributes.SingleOrDefault(x => x.Key == nameof(ITare.Tare))?.Value ?? "0"); get => GenericAttributes.GetValueOrDefault<double>(nameof(ITare.Tare));
//get => CommonHelper.To<double>(GenericAttributes.SingleOrDefault(x => x.Key == nameof(ITare.Tare))?.Value ?? "0");
set => throw new Exception($"ProductDto.Tare not set"); set => throw new Exception($"ProductDto.Tare not set");
} }
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public double NetWeight public double NetWeight
{ {
get => CommonHelper.To<double>(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IMeasuringNetWeight.NetWeight))?.Value ?? "0"); get => GenericAttributes.GetValueOrDefault<double>(nameof(IMeasuringNetWeight.NetWeight));
//get => CommonHelper.To<double>(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IMeasuringNetWeight.NetWeight))?.Value ?? "0");
set => throw new Exception($"ProductDto.NetWeight not set"); set => throw new Exception($"ProductDto.NetWeight not set");
} }
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public int IncomingQuantity public int IncomingQuantity
{ {
get => CommonHelper.To<int>(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IIncomingQuantity.IncomingQuantity))?.Value ?? "0"); get => GenericAttributes.GetValueOrDefault<int>(nameof(IIncomingQuantity.IncomingQuantity));
//get => CommonHelper.To<int>(GenericAttributes.SingleOrDefault(x => x.Key == nameof(IIncomingQuantity.IncomingQuantity))?.Value ?? "0");
set => throw new Exception($"ProductDto.IncomingQuantity not set"); set => throw new Exception($"ProductDto.IncomingQuantity not set");
} }
} }

View File

@ -2,7 +2,7 @@
namespace FruitBank.Common.Interfaces; namespace FruitBank.Common.Interfaces;
public interface IMeasuringAttributeValues : IEntityInt, IMeasuringWeights, IMeasurable public interface IMeasuringAttributeValues : IEntityInt, IMeasuringNetWeight, IMeasurable
{ {
bool HasMeasuringValues(); //=> Id > 0 && NetWeight != null && GrossWeight != null && IsMeasurable != null; bool HasMeasuringValues(); //=> Id > 0 && NetWeight != null && GrossWeight != null && IsMeasurable != null;
} }

View File

@ -8,30 +8,28 @@ public class MeasuringAttributeValues : IMeasuringAttributeValues
public int Id { get; set; } public int Id { get; set; }
public double NetWeight { get; set; } = int.MinValue; public double NetWeight { get; set; } = int.MinValue;
public double GrossWeight { get; set; } = int.MinValue;
public bool IsMeasurable { get; set; } = false; public bool IsMeasurable { get; set; } = false;
public MeasuringAttributeValues() public MeasuringAttributeValues()
{ {
} }
public MeasuringAttributeValues(int entityId, double netWeight, double grossWeight, bool isMeasurable) public MeasuringAttributeValues(int entityId, double netWeight, bool isMeasurable)
{ {
Initialize(entityId, netWeight, grossWeight, isMeasurable); Initialize(entityId, netWeight, isMeasurable);
} }
public void Initialize(int entityId, double netWeight, double grossWeight, bool isMeasurable) public void Initialize(int entityId, double netWeight, bool isMeasurable)
{ {
Id = entityId; Id = entityId;
NetWeight = netWeight; NetWeight = netWeight;
GrossWeight = grossWeight;
IsMeasurable = isMeasurable; IsMeasurable = isMeasurable;
} }
public bool HasMeasuringValues() => Id > 0 && NetWeight > int.MinValue && GrossWeight > int.MinValue && IsMeasurable; public bool HasMeasuringValues() => Id > 0 && NetWeight > int.MinValue && IsMeasurable;
public override string ToString() public override string ToString()
{ {
return $"EntityId: {Id}; NetWeight: {NetWeight}; GrossWeight: {GrossWeight}; IsMeasurable: {IsMeasurable}"; return $"EntityId: {Id}; NetWeight: {NetWeight}; IsMeasurable: {IsMeasurable}";
} }
} }

View File

@ -167,7 +167,6 @@ namespace FruitBankHybrid.Shared.Tests
Assert.IsTrue(shippingItemSumWeight == measuringProductDto!.NetWeight, $"{shippingItem}; shippingItemSum NetWeight: {shippingItemSumWeight} == {measuringProductDto.NetWeight}"); Assert.IsTrue(shippingItemSumWeight == measuringProductDto!.NetWeight, $"{shippingItem}; shippingItemSum NetWeight: {shippingItemSumWeight} == {measuringProductDto.NetWeight}");
shippingItemSumWeight = shippingItems.Where(x => x.IsMeasured && x.Id == shippingItem.Id).Sum(x => x.MeasuredGrossWeight); shippingItemSumWeight = shippingItems.Where(x => x.IsMeasured && x.Id == shippingItem.Id).Sum(x => x.MeasuredGrossWeight);
Assert.IsTrue(shippingItemSumWeight == measuringProductDto.GrossWeight, $"{shippingItem}; shippingItemSum GrossWeight: {shippingItemSumWeight} == {measuringProductDto.GrossWeight}");
} }
} }
@ -304,7 +303,6 @@ namespace FruitBankHybrid.Shared.Tests
Assert.IsTrue(measuringProductDto.StockQuantity == originalMeasuringProductDto.StockQuantity + incQuantity); Assert.IsTrue(measuringProductDto.StockQuantity == originalMeasuringProductDto.StockQuantity + incQuantity);
Assert.IsTrue(measuringProductDto.NetWeight == double.Round(originalMeasuringProductDto.NetWeight + (shippingItem.IsMeasurable ? incNetWeight : 0), 1)); Assert.IsTrue(measuringProductDto.NetWeight == double.Round(originalMeasuringProductDto.NetWeight + (shippingItem.IsMeasurable ? incNetWeight : 0), 1));
Assert.IsTrue(measuringProductDto.GrossWeight == double.Round(originalMeasuringProductDto.GrossWeight + (shippingItem.IsMeasurable ? incGrossWeight : 0), 1));
Assert.IsTrue(shippingItem.ShippingItemPallets!.All(x => x.IsValidSafeMeasuringValues())); Assert.IsTrue(shippingItem.ShippingItemPallets!.All(x => x.IsValidSafeMeasuringValues()));
Assert.IsTrue(shippingItem.ShippingItemPallets!.All(x => x.IsValidMeasuringValues(shippingItem.IsMeasurable))); Assert.IsTrue(shippingItem.ShippingItemPallets!.All(x => x.IsValidMeasuringValues(shippingItem.IsMeasurable)));
@ -441,13 +439,12 @@ namespace FruitBankHybrid.Shared.Tests
Assert.IsNotNull(measuringProductDto); Assert.IsNotNull(measuringProductDto);
if (isMeasurableExcepted) Assert.IsTrue(measuringProductDto.HasMeasuringValues(), $"{measuringProductDto.IsMeasurable}, {measuringProductDto.NetWeight}, {measuringProductDto.GrossWeight}"); if (isMeasurableExcepted) Assert.IsTrue(measuringProductDto.HasMeasuringValues(), $"{measuringProductDto.IsMeasurable}, {measuringProductDto.NetWeight}");
else else
{ {
Assert.IsTrue(measuringProductDto.Id > 0); Assert.IsTrue(measuringProductDto.Id > 0);
Assert.IsTrue(measuringProductDto.StockQuantity >= 0); Assert.IsTrue(measuringProductDto.StockQuantity >= 0);
Assert.IsTrue(measuringProductDto.NetWeight == 0); Assert.IsTrue(measuringProductDto.NetWeight == 0);
Assert.IsTrue(measuringProductDto.GrossWeight == 0);
Assert.IsFalse(measuringProductDto.IsMeasurable); Assert.IsFalse(measuringProductDto.IsMeasurable);
} }