From 9220705580f80eb8e40ceaa1f283834b4190bcf6 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 26 Jun 2026 04:36:24 +0000 Subject: [PATCH] =?UTF-8?q?feat(product):=20T1=20=E2=80=94=20domain=20enti?= =?UTF-8?q?ties=20+=20DTO=20(Product,=20ProductCategory,=20BaseEntity)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add domain layer for Product microservice: - BaseEntity with audit fields (Id, CreatedBy, UpdatedBy, timestamps) - Product entity (drops OrderDetails nav property from monolith) - ProductCategory entity with Products collection - ProductDto matching monolith ProductVM shape - CategoryDto for category projections - Remove .gitkeep placeholders from Entities/ and Interfaces/ --- .../Product.Domain/DTOs/CategoryDto.cs | 9 ++++++++ .../Product/Product.Domain/DTOs/ProductDto.cs | 15 +++++++++++++ .../Product/Product.Domain/Entities/.gitkeep | 0 .../Product.Domain/Entities/BaseEntity.cs | 18 ++++++++++++++++ .../Product.Domain/Entities/Product.cs | 21 +++++++++++++++++++ .../Entities/ProductCategory.cs | 10 +++++++++ .../Product.Domain/Interfaces/.gitkeep | 0 7 files changed, 73 insertions(+) create mode 100644 src/Services/Product/Product.Domain/DTOs/CategoryDto.cs create mode 100644 src/Services/Product/Product.Domain/DTOs/ProductDto.cs delete mode 100644 src/Services/Product/Product.Domain/Entities/.gitkeep create mode 100644 src/Services/Product/Product.Domain/Entities/BaseEntity.cs create mode 100644 src/Services/Product/Product.Domain/Entities/Product.cs create mode 100644 src/Services/Product/Product.Domain/Entities/ProductCategory.cs delete mode 100644 src/Services/Product/Product.Domain/Interfaces/.gitkeep diff --git a/src/Services/Product/Product.Domain/DTOs/CategoryDto.cs b/src/Services/Product/Product.Domain/DTOs/CategoryDto.cs new file mode 100644 index 0000000..a4c6da0 --- /dev/null +++ b/src/Services/Product/Product.Domain/DTOs/CategoryDto.cs @@ -0,0 +1,9 @@ +namespace Product.Domain.DTOs; + +public class CategoryDto +{ + public int Id { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } + public string? Icon { get; set; } +} diff --git a/src/Services/Product/Product.Domain/DTOs/ProductDto.cs b/src/Services/Product/Product.Domain/DTOs/ProductDto.cs new file mode 100644 index 0000000..c04ef19 --- /dev/null +++ b/src/Services/Product/Product.Domain/DTOs/ProductDto.cs @@ -0,0 +1,15 @@ +namespace Product.Domain.DTOs; + +public class ProductDto +{ + public int Id { get; set; } + public string? Name { get; set; } + public string? Description { get; set; } + public string? Icon { get; set; } + public decimal BuyingPrice { get; set; } + public decimal SellingPrice { get; set; } + public int UnitsInStock { get; set; } + public bool IsActive { get; set; } + public bool IsDiscontinued { get; set; } + public string? ProductCategoryName { get; set; } +} diff --git a/src/Services/Product/Product.Domain/Entities/.gitkeep b/src/Services/Product/Product.Domain/Entities/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/Services/Product/Product.Domain/Entities/BaseEntity.cs b/src/Services/Product/Product.Domain/Entities/BaseEntity.cs new file mode 100644 index 0000000..0daa734 --- /dev/null +++ b/src/Services/Product/Product.Domain/Entities/BaseEntity.cs @@ -0,0 +1,18 @@ +using System.ComponentModel.DataAnnotations; + +namespace Product.Domain.Entities; + +public class BaseEntity +{ + public int Id { get; set; } + + [MaxLength(40)] + public string? CreatedBy { get; set; } + + [MaxLength(40)] + public string? UpdatedBy { get; set; } + + public DateTime UpdatedDate { get; set; } + + public DateTime CreatedDate { get; set; } +} diff --git a/src/Services/Product/Product.Domain/Entities/Product.cs b/src/Services/Product/Product.Domain/Entities/Product.cs new file mode 100644 index 0000000..a03a1a2 --- /dev/null +++ b/src/Services/Product/Product.Domain/Entities/Product.cs @@ -0,0 +1,21 @@ +namespace Product.Domain.Entities; + +public class Product : BaseEntity +{ + public required string Name { get; set; } + public string? Description { get; set; } + public string? Icon { get; set; } + public decimal BuyingPrice { get; set; } + public decimal SellingPrice { get; set; } + public int UnitsInStock { get; set; } + public bool IsActive { get; set; } + public bool IsDiscontinued { get; set; } + + public int? ParentId { get; set; } + public Product? Parent { get; set; } + + public int ProductCategoryId { get; set; } + public required ProductCategory ProductCategory { get; set; } + + public ICollection Children { get; } = []; +} diff --git a/src/Services/Product/Product.Domain/Entities/ProductCategory.cs b/src/Services/Product/Product.Domain/Entities/ProductCategory.cs new file mode 100644 index 0000000..5e37d40 --- /dev/null +++ b/src/Services/Product/Product.Domain/Entities/ProductCategory.cs @@ -0,0 +1,10 @@ +namespace Product.Domain.Entities; + +public class ProductCategory : BaseEntity +{ + public required string Name { get; set; } + public string? Description { get; set; } + public string? Icon { get; set; } + + public ICollection Products { get; } = []; +} diff --git a/src/Services/Product/Product.Domain/Interfaces/.gitkeep b/src/Services/Product/Product.Domain/Interfaces/.gitkeep deleted file mode 100644 index e69de29..0000000