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 GrossWeight { get; set; }
public bool IsMeasurable { get; set; }
public MeasuringProductDto() :base()
@ -34,7 +33,6 @@ public class MeasuringProductDto : ProductDto, IMeasuringProductDto
measuringAttributeValues.Id = Id;
measuringAttributeValues.NetWeight = NetWeight;
measuringAttributeValues.GrossWeight = GrossWeight;
measuringAttributeValues.IsMeasurable = IsMeasurable;
}
@ -48,9 +46,8 @@ public class MeasuringProductDto : ProductDto, IMeasuringProductDto
if (measuringAttributeValues == null) return;
NetWeight = measuringAttributeValues.NetWeight;
GrossWeight = measuringAttributeValues.GrossWeight;
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.Globalization;
using System.Linq.Expressions;
using Mango.Nop.Core.Extensions;
namespace FruitBank.Common.Dtos;
@ -47,17 +48,11 @@ public class OrderDto : MgOrderDto<OrderItemDto, ProductDto>, IOrderDto
public DateTime DateOfReceiptOrCreated => DateOfReceipt ?? CreatedOnUtc;
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public DateTime? 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);
}
}
public DateTime? DateOfReceipt => GenericAttributes.GetValueOrNull<DateTime>(nameof(IOrderDto.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(int orderId) : base(orderId)

View File

@ -1,6 +1,7 @@
using FruitBank.Common.Interfaces;
using LinqToDB.Mapping;
using Mango.Nop.Core.Dtos;
using Mango.Nop.Core.Extensions;
using Newtonsoft.Json;
using Nop.Core;
using Nop.Core.Domain.Catalog;
@ -18,7 +19,7 @@ public class ProductDto : MgProductDto, IProductDto
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 ProductDto() :base()
@ -31,7 +32,7 @@ public class ProductDto : MgProductDto, IProductDto
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
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
{
throw new Exception($"ProductDto.IsMeasurable not set");
@ -45,21 +46,24 @@ public class ProductDto : MgProductDto, IProductDto
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
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");
}
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
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");
}
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
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");
}
}

View File

@ -2,7 +2,7 @@
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;
}

View File

@ -8,30 +8,28 @@ public class MeasuringAttributeValues : IMeasuringAttributeValues
public int Id { get; set; }
public double NetWeight { get; set; } = int.MinValue;
public double GrossWeight { get; set; } = int.MinValue;
public bool IsMeasurable { get; set; } = false;
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;
NetWeight = netWeight;
GrossWeight = grossWeight;
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()
{
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}");
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.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.IsValidMeasuringValues(shippingItem.IsMeasurable)));
@ -441,13 +439,12 @@ namespace FruitBankHybrid.Shared.Tests
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
{
Assert.IsTrue(measuringProductDto.Id > 0);
Assert.IsTrue(measuringProductDto.StockQuantity >= 0);
Assert.IsTrue(measuringProductDto.NetWeight == 0);
Assert.IsTrue(measuringProductDto.GrossWeight == 0);
Assert.IsFalse(measuringProductDto.IsMeasurable);
}