Add ToonDescription attributes to core entities and DTOs
Introduced ToonDescription annotations across DTO and entity classes to provide metadata, business rules, and documentation for classes and properties. Updated usings to include AyCode.Core.Serializers.Toons where needed. These changes improve code clarity and support tooling for documentation and code generation.
This commit is contained in:
parent
954b99fcbc
commit
c0073815ae
|
|
@ -15,6 +15,7 @@ public class CustomerDto : ModelDtoBase<Customer>, ISoftDeletedEntity
|
|||
public string FirstName { get; set; }
|
||||
public string LastName { get; set; }
|
||||
|
||||
[ToonDescription(BusinessRule = "get => $\"{LastName} {FirstName}\"")]
|
||||
public string FullName => $"{LastName} {FirstName}";
|
||||
|
||||
public int RegisteredInStoreId { get; set; }
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using AyCode.Core.Extensions;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
using AyCode.Core.Helpers;
|
||||
using LinqToDB.Mapping;
|
||||
using Mango.Nop.Core.Entities;
|
||||
|
|
@ -14,6 +15,7 @@ using System.Linq.Expressions;
|
|||
|
||||
namespace Mango.Nop.Core.Dtos;
|
||||
|
||||
[ToonDescription("Base DTO for orders with items, customer and status tracking")]
|
||||
public abstract class MgOrderDto<TOrderItemDto, TProductDto> : MgEntityBase, IModelDtoBase<Order>, IMgOrderDto<TOrderItemDto, TProductDto> where TOrderItemDto : IMgOrderItemDto<TProductDto> where TProductDto : IMgProductDto
|
||||
{
|
||||
public Guid OrderGuid { get; set; }
|
||||
|
|
@ -40,16 +42,19 @@ public abstract class MgOrderDto<TOrderItemDto, TProductDto> : MgEntityBase, IMo
|
|||
[Association(ThisKey = nameof(Id), OtherKey = nameof(OrderNote.OrderId), CanBeNull = true)]
|
||||
public List<OrderNote> OrderNotes { get; set; }
|
||||
|
||||
[ToonDescription(Purpose = "Enum wrapper", BusinessRule = "get, set => OrderStatusId")]
|
||||
public OrderStatus OrderStatus
|
||||
{
|
||||
get => (OrderStatus)OrderStatusId;
|
||||
set => OrderStatusId = (int)value;
|
||||
}
|
||||
[ToonDescription(Purpose = "Enum wrapper", BusinessRule = "get, set => ShippingStatusId")]
|
||||
public ShippingStatus ShippingStatus
|
||||
{
|
||||
get => (ShippingStatus)ShippingStatusId;
|
||||
set => ShippingStatusId = (int)value;
|
||||
}
|
||||
[ToonDescription(Purpose = "Enum wrapper", BusinessRule = "get, set => PaymentStatusId")]
|
||||
public PaymentStatus PaymentStatus
|
||||
{
|
||||
get => (PaymentStatus)PaymentStatusId;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using AyCode.Core.Extensions;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
using AyCode.Core.Helpers;
|
||||
using LinqToDB.Mapping;
|
||||
using Mango.Nop.Core.Entities;
|
||||
|
|
@ -8,6 +9,7 @@ using Nop.Core.Domain.Orders;
|
|||
|
||||
namespace Mango.Nop.Core.Dtos;
|
||||
|
||||
[ToonDescription("Base DTO for order items with product association")]
|
||||
public abstract class MgOrderItemDto<TProductDto> : MgEntityBase, IModelDtoBase<OrderItem>, IMgOrderItemDto<TProductDto> where TProductDto : IMgProductDto
|
||||
{
|
||||
public Guid OrderItemGuid { get; set; }
|
||||
|
|
@ -24,6 +26,7 @@ public abstract class MgOrderItemDto<TProductDto> : MgEntityBase, IModelDtoBase<
|
|||
public string AttributesXml { get; set; }
|
||||
public decimal? ItemWeight { get; set; }
|
||||
|
||||
[ToonDescription(BusinessRule = "get => ProductDto?.Name ?? 'ProductDto is null!!!'")]
|
||||
public string ProductName => ProductDto?.Name ?? "ProductDto is null!!!";
|
||||
|
||||
[Association(ThisKey = nameof(ProductId), OtherKey = nameof(BaseEntity.Id), CanBeNull = true)]
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
using Mango.Nop.Core.Entities;
|
||||
using Mango.Nop.Core.Interfaces;
|
||||
//using Nop.Core.Domain.Catalog;
|
||||
|
||||
namespace Mango.Nop.Core.Dtos;
|
||||
|
||||
[ToonDescription("Base DTO for products with warehouse and pricing")]
|
||||
public abstract class MgProductDto : MgEntityBase, /*Product,*/ IMgProductDto//IModelDtoBase<Product>//, IDiscountSupported<DiscountProductMapping>
|
||||
{
|
||||
//public int Id { get; set; }
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
using LinqToDB.Mapping;
|
||||
using Mango.Nop.Core.Entities;
|
||||
using Mango.Nop.Core.Interfaces;
|
||||
|
|
@ -18,6 +19,7 @@ namespace Mango.Nop.Core.Dtos
|
|||
public TProductDto ProductDto { get; set; }
|
||||
}
|
||||
|
||||
[ToonDescription("Base DTO for stock quantity history with product")]
|
||||
public abstract class MgStockQuantityHistoryDto<TProductDto> : MgEntityBase, IModelDtoBase<StockQuantityHistory>,
|
||||
IMgTStockQuantityHistoryDto<TProductDto> where TProductDto : IMgProductDto
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
using Nop.Core;
|
||||
|
||||
namespace Mango.Nop.Core.Entities;
|
||||
|
||||
[ToonDescription("Base entity class with Id property and ToString override")]
|
||||
public abstract class MgEntityBase : BaseEntity, IEntityInt
|
||||
{
|
||||
public override string ToString()
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using System.ComponentModel.Design;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Interfaces.TimeStampInfo;
|
||||
using LinqToDB.Mapping;
|
||||
|
|
@ -13,6 +14,7 @@ public interface IMgStockTaking : IEntityInt, ITimeStampInfo
|
|||
public bool IsReadyForClose();
|
||||
}
|
||||
|
||||
[ToonDescription("Base entity for stock taking sessions with items")]
|
||||
public abstract class MgStockTaking<TStockTakingItem> : MgEntityBase, IMgStockTaking where TStockTakingItem : class, IMgStockTakingItem
|
||||
{
|
||||
public DateTime StartDateTime { get; set; }
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
using AyCode.Interfaces.TimeStampInfo;
|
||||
using LinqToDB;
|
||||
using LinqToDB.Mapping;
|
||||
|
|
@ -18,6 +19,7 @@ public interface IMgStockTakingItem : IEntityInt, ITimeStampInfo
|
|||
public int MeasuredStockQuantity { get; set; }
|
||||
}
|
||||
|
||||
[ToonDescription("Base entity for stock taking items with product association")]
|
||||
public abstract class MgStockTakingItem<TStockTaking, TProduct> : MgEntityBase, IMgStockTakingItem
|
||||
where TStockTaking : class, IMgStockTaking where TProduct : class, IMgProductDto
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
//namespace Nop.Core.Domain.Common;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
|
||||
|
||||
using AyCode.Interfaces.Entities;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using Nop.Core.Domain.Common;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
using Nop.Core.Domain.Common;
|
||||
using Nop.Core.Domain.Tax;
|
||||
|
||||
namespace Nop.Core.Domain.Customers;
|
||||
|
|
@ -6,6 +7,7 @@ namespace Nop.Core.Domain.Customers;
|
|||
/// <summary>
|
||||
/// Represents a customer
|
||||
/// </summary>
|
||||
[ToonDescription("NopCommerce customer entity")]
|
||||
public partial class Customer : BaseEntity, ISoftDeletedEntity
|
||||
{
|
||||
public Customer()
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ namespace Nop.Core.Domain.Common;
|
|||
/// <summary>
|
||||
/// Represents a generic attribute
|
||||
/// </summary>
|
||||
[ToonDescription("NopCommerce generic attribute for key-value storage", Purpose = "A flexible key-value store used to extend entities with custom business logic data without changing the database schema")]
|
||||
public partial class GenericAttribute : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -27,6 +28,7 @@ public partial class GenericAttribute : BaseEntity
|
|||
/// <summary>
|
||||
/// Gets or sets the value
|
||||
/// </summary>
|
||||
[ToonDescription(Purpose = "Raw string representation of the Key's value")]
|
||||
public string Value { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
using Nop.Core.Domain.Common;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
|
||||
using Nop.Core.Domain.Payments;
|
||||
using Nop.Core.Domain.Shipping;
|
||||
using Nop.Core.Domain.Tax;
|
||||
|
|
@ -8,6 +10,7 @@ namespace Nop.Core.Domain.Orders;
|
|||
/// <summary>
|
||||
/// Represents an order
|
||||
/// </summary>
|
||||
[ToonDescription("NopCommerce order entity with payment and shipping")]
|
||||
public partial class Order : BaseEntity, ISoftDeletedEntity
|
||||
{
|
||||
#region Properties
|
||||
|
|
@ -309,6 +312,7 @@ public partial class Order : BaseEntity, ISoftDeletedEntity
|
|||
/// <summary>
|
||||
/// Gets or sets the payment status
|
||||
/// </summary>
|
||||
[ToonDescription(Purpose = "Enum wrapper", BusinessRule = "get, set => PaymentStatusId")]
|
||||
public PaymentStatus PaymentStatus
|
||||
{
|
||||
get => (PaymentStatus)PaymentStatusId;
|
||||
|
|
@ -318,6 +322,7 @@ public partial class Order : BaseEntity, ISoftDeletedEntity
|
|||
/// <summary>
|
||||
/// Gets or sets the shipping status
|
||||
/// </summary>
|
||||
[ToonDescription(Purpose = "Enum wrapper", BusinessRule = "get, set => ShippingStatusId")]
|
||||
public ShippingStatus ShippingStatus
|
||||
{
|
||||
get => (ShippingStatus)ShippingStatusId;
|
||||
|
|
@ -327,6 +332,7 @@ public partial class Order : BaseEntity, ISoftDeletedEntity
|
|||
/// <summary>
|
||||
/// Gets or sets the customer tax display type
|
||||
/// </summary>
|
||||
[ToonDescription(Purpose = "Enum wrapper", BusinessRule = "get, set => CustomerTaxDisplayTypeId")]
|
||||
public TaxDisplayType CustomerTaxDisplayType
|
||||
{
|
||||
get => (TaxDisplayType)CustomerTaxDisplayTypeId;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
namespace Nop.Core.Domain.Orders;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Represents an order item
|
||||
/// </summary>
|
||||
[ToonDescription("NopCommerce order item entity")]
|
||||
public partial class OrderItem : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ namespace Nop.Core.Domain.Orders;
|
|||
/// <summary>
|
||||
/// Represents an order note
|
||||
/// </summary>
|
||||
[ToonDescription("NopCommerce order note entity")]
|
||||
public partial class OrderNote : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Core.Serializers.Toons;
|
||||
using AyCode.Interfaces.Entities;
|
||||
using LinqToDB.Mapping;
|
||||
using Mango.Nop.Core.Interfaces;
|
||||
|
||||
namespace Nop.Core.Domain.Catalog;
|
||||
|
|
@ -17,6 +19,8 @@ public interface IMgStockQuantityHistory
|
|||
/// <summary>
|
||||
/// Represents a stock quantity change entry
|
||||
/// </summary>
|
||||
[Table(Name = nameof(StockQuantityHistory))]
|
||||
[ToonDescription("NopCommerce stock movement log", Purpose = "Audit trail for physical and logical stock movements")]
|
||||
public partial class StockQuantityHistory : BaseEntity, IMgStockQuantityHistory
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
|||
Loading…
Reference in New Issue