Add validators and services for Product Galleries and Product Tags

- Implemented Create, Delete, Get, and Update validators for Product Galleries.
- Added Create, Delete, Get, and Update validators for Product Tags.
- Created service classes for handling Discount Categories, Discount Orders, Discount Products, Discount Shopping Cart, Product Categories, Product Galleries, and Product Tags.
- Each service class integrates with CQRS for command and query handling.
- Established mapping profiles for Product Galleries.
This commit is contained in:
masoodafar-web
2025-12-04 02:40:49 +03:30
parent 40d54d08fc
commit f0f48118e7
436 changed files with 33159 additions and 2005 deletions
@@ -0,0 +1,74 @@
using CMSMicroservice.Domain.Entities.Message;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace CMSMicroservice.Infrastructure.Persistence.Configurations;
public class PublicMessageConfiguration : IEntityTypeConfiguration<PublicMessage>
{
public void Configure(EntityTypeBuilder<PublicMessage> builder)
{
builder.ToTable("PublicMessages");
builder.HasKey(x => x.Id);
builder.Property(x => x.Title)
.IsRequired()
.HasMaxLength(200);
builder.Property(x => x.Content)
.IsRequired()
.HasMaxLength(2000);
builder.Property(x => x.Type)
.IsRequired();
builder.Property(x => x.Priority)
.IsRequired();
builder.Property(x => x.IsActive)
.IsRequired()
.HasDefaultValue(true);
builder.Property(x => x.StartsAt)
.IsRequired();
builder.Property(x => x.ExpiresAt)
.IsRequired();
builder.Property(x => x.CreatedByUserId)
.IsRequired();
builder.Property(x => x.ViewCount)
.IsRequired()
.HasDefaultValue(0);
builder.Property(x => x.LinkUrl)
.HasMaxLength(500);
builder.Property(x => x.LinkText)
.HasMaxLength(100);
// Indexes
builder.HasIndex(x => x.IsActive)
.HasDatabaseName("IX_PublicMessages_IsActive");
builder.HasIndex(x => x.Type)
.HasDatabaseName("IX_PublicMessages_Type");
builder.HasIndex(x => x.Priority)
.HasDatabaseName("IX_PublicMessages_Priority");
builder.HasIndex(x => x.StartsAt)
.HasDatabaseName("IX_PublicMessages_StartsAt");
builder.HasIndex(x => x.ExpiresAt)
.HasDatabaseName("IX_PublicMessages_ExpiresAt");
builder.HasIndex(x => x.CreatedByUserId)
.HasDatabaseName("IX_PublicMessages_CreatedByUserId");
builder.HasIndex(x => new { x.IsActive, x.ExpiresAt })
.HasDatabaseName("IX_PublicMessages_IsActive_ExpiresAt");
}
}