improvements, fixes, etc...
This commit is contained in:
parent
f145dfcd70
commit
94cc71513c
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
@ -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}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue