66 lines
2.7 KiB
C#
66 lines
2.7 KiB
C#
using AyCode.Core.Extensions;
|
|
using AyCode.Utils.Extensions;
|
|
using FruitBank.Common.Entities;
|
|
using FruitBank.Common.Interfaces;
|
|
using LinqToDB.Mapping;
|
|
using Mango.Nop.Core.Dtos;
|
|
using Mango.Nop.Core.Interfaces;
|
|
using Newtonsoft.Json;
|
|
using Nop.Core;
|
|
using Nop.Core.Domain.Catalog;
|
|
using Nop.Core.Domain.Common;
|
|
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;
|
|
|
|
public class OrderDto : MgOrderDto<OrderItemDto, ProductDto>, IOrderDto
|
|
{
|
|
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
|
|
private static Expression<Func<OrderDto, GenericAttribute, bool>> RelationWithGenericAttribute => (orderDto, genericAttribute) =>
|
|
orderDto.Id == genericAttribute.EntityId && genericAttribute.KeyGroup == nameof(Order);
|
|
|
|
|
|
[Association(ThisKey = nameof(Id), OtherKey = nameof(GenericAttribute.EntityId), ExpressionPredicate = nameof(RelationWithGenericAttribute), CanBeNull = true)]
|
|
public List<GenericAttribute> GenericAttributes { get; set; }
|
|
|
|
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
|
|
public bool IsMeasured
|
|
{
|
|
get => IsMeasuredAndValid();
|
|
set => throw new Exception($"OrderDto.IsMeasured not set");
|
|
}
|
|
|
|
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
|
|
public bool IsMeasurable
|
|
{
|
|
get => OrderItemDtos.Any(oi => oi.IsMeasurable);
|
|
set => throw new Exception($"OrderDto.IsMeasurable not set");
|
|
}
|
|
|
|
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
|
|
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 => 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)
|
|
{ }
|
|
public OrderDto(Order order) : base(order)
|
|
{ }
|
|
|
|
public bool IsMeasuredAndValid() => Id > 0 && OrderItemDtos.Count > 0 && OrderItemDtos.All(x => x.IsMeasured);
|
|
public bool IsValidMeasuringValues() => OrderItemDtos.Count > 0 && OrderItemDtos.All(x => x.IsValidMeasuringValues());
|
|
|
|
} |