diff --git a/Netina.Api/Netina.Api.csproj b/Netina.Api/Netina.Api.csproj
index c52c490..bee48cd 100644
--- a/Netina.Api/Netina.Api.csproj
+++ b/Netina.Api/Netina.Api.csproj
@@ -6,8 +6,8 @@
enable
true
Linux
- 1.10.21.36
- 1.10.21.36
+ 1.10.22.37
+ 1.10.22.37
latest
diff --git a/Netina.Repository/Migrations/20250327100407_EditDisc.Designer.cs b/Netina.Repository/Migrations/20250327100407_EditDisc.Designer.cs
new file mode 100644
index 0000000..f612e00
--- /dev/null
+++ b/Netina.Repository/Migrations/20250327100407_EditDisc.Designer.cs
@@ -0,0 +1,2338 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Netina.Repository.Models;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace NetinaShop.Repository.Migrations
+{
+ [DbContext(typeof(ApplicationContext))]
+ [Migration("20250327100407_EditDisc")]
+ partial class EditDisc
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasDefaultSchema("public")
+ .HasAnnotation("ProductVersion", "8.0.8")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "fuzzystrmatch");
+ NpgsqlModelBuilderExtensions.HasPostgresExtension(modelBuilder, "pg_trgm");
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("ClaimType")
+ .HasColumnType("text");
+
+ b.Property("ClaimValue")
+ .HasColumnType("text");
+
+ b.Property("RoleId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("RoleClaims", "public");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
+
+ b.Property("ClaimType")
+ .HasColumnType("text");
+
+ b.Property("ClaimValue")
+ .HasColumnType("text");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Claims", "public");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.Property("LoginProvider")
+ .HasColumnType("text");
+
+ b.Property("ProviderKey")
+ .HasColumnType("text");
+
+ b.Property("ProviderDisplayName")
+ .HasColumnType("text");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Logins", "public");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.Property("RoleId")
+ .HasColumnType("uuid");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("UserRoles", "public");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.Property("LoginProvider")
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .HasColumnType("text");
+
+ b.Property("Value")
+ .HasColumnType("text");
+
+ b.HasKey("UserId", "LoginProvider", "Name");
+
+ b.ToTable("Tokens", "public");
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Accounting.Payment", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Amount")
+ .HasColumnType("double precision");
+
+ b.Property("Authority")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("CardPan")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("CustomerId")
+ .HasColumnType("uuid");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("FactorNumber")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("OrderId")
+ .HasColumnType("uuid");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Status")
+ .HasColumnType("integer");
+
+ b.Property("TransactionCode")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Type")
+ .HasColumnType("integer");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CustomerId");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("Payments", "public");
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Blogs.Blog", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AuthorId")
+ .HasColumnType("uuid");
+
+ b.Property("CategoryId")
+ .HasColumnType("uuid");
+
+ b.Property("Content")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("IsSuggested")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ReadingTime")
+ .HasColumnType("integer");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Slug")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Summery")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Tags")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AuthorId");
+
+ b.HasIndex("CategoryId");
+
+ b.ToTable("Blogs", "public");
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Blogs.BlogCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("IsMain")
+ .HasColumnType("boolean");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ParentId")
+ .HasColumnType("uuid");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Slug")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ParentId");
+
+ b.ToTable("BlogCategories", "public");
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Brands.Brand", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("EnglishName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("HasSpecialPage")
+ .HasColumnType("boolean");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("PageUrl")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("PersianName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Slug")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.ToTable("Brands", "public");
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Comments.Comment", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("Content")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Discriminator")
+ .IsRequired()
+ .HasMaxLength(21)
+ .HasColumnType("character varying(21)");
+
+ b.Property("IsAdmin")
+ .HasColumnType("boolean");
+
+ b.Property("IsConfirmed")
+ .HasColumnType("boolean");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("IsRoot")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ParentId")
+ .HasColumnType("uuid");
+
+ b.Property("Rate")
+ .HasColumnType("real");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("UserId")
+ .HasColumnType("uuid");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ParentId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Comments", "public");
+
+ b.HasDiscriminator().HasValue("Comment");
+
+ b.UseTphMappingStrategy();
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Discounts.Discount", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AmountType")
+ .HasColumnType("integer");
+
+ b.Property("Code")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("DiscountAmount")
+ .HasColumnType("bigint");
+
+ b.Property("DiscountPercent")
+ .HasColumnType("integer");
+
+ b.Property("Discriminator")
+ .IsRequired()
+ .HasMaxLength(21)
+ .HasColumnType("character varying(21)");
+
+ b.Property("ExpireDate")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("HasCode")
+ .HasColumnType("boolean");
+
+ b.Property("HasPriceCeiling")
+ .HasColumnType("boolean");
+
+ b.Property("HasPriceFloor")
+ .HasColumnType("boolean");
+
+ b.Property("Immortal")
+ .HasColumnType("boolean");
+
+ b.Property("IsForFirstPurchase")
+ .HasColumnType("boolean");
+
+ b.Property("IsForInvitation")
+ .HasColumnType("boolean");
+
+ b.Property("IsForSaleCooperation")
+ .HasColumnType("boolean");
+
+ b.Property("IsInfinity")
+ .HasColumnType("boolean");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("IsSpecialOffer")
+ .HasColumnType("boolean");
+
+ b.Property("MarketerId")
+ .HasColumnType("uuid");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("PriceCeiling")
+ .HasColumnType("bigint");
+
+ b.Property("PriceFloor")
+ .HasColumnType("bigint");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("StartDate")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("Type")
+ .HasColumnType("integer");
+
+ b.Property("UseCount")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("MarketerId")
+ .IsUnique();
+
+ b.ToTable("Discounts", "public");
+
+ b.HasDiscriminator().HasValue("Discount");
+
+ b.UseTphMappingStrategy();
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Orders.Order", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("CustomerId")
+ .HasColumnType("uuid");
+
+ b.Property("DeliveredAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("DeliveryPrice")
+ .HasColumnType("double precision");
+
+ b.Property("DiscountCode")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("DiscountCodePrice")
+ .HasColumnType("double precision");
+
+ b.Property("DiscountId")
+ .HasColumnType("uuid");
+
+ b.Property("DiscountPrice")
+ .HasColumnType("double precision");
+
+ b.Property("DoneAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("FactorCode")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("IsPayed")
+ .HasColumnType("boolean");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("OrderAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("OrderStatus")
+ .HasColumnType("integer");
+
+ b.Property("PackingPrice")
+ .HasColumnType("double precision");
+
+ b.Property("PayedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("PaymentMethod")
+ .HasColumnType("integer");
+
+ b.Property("PreparingMinute")
+ .HasColumnType("integer");
+
+ b.Property("ProductDiscountPrice")
+ .HasColumnType("double precision");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ServicePrice")
+ .HasColumnType("double precision");
+
+ b.Property("TaxesPrice")
+ .HasColumnType("double precision");
+
+ b.Property("TotalPrice")
+ .HasColumnType("double precision");
+
+ b.Property("TotalProductsPrice")
+ .HasColumnType("double precision");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CustomerId");
+
+ b.HasIndex("DiscountId");
+
+ b.ToTable("Orders", "public");
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Orders.OrderDelivery", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AddressId")
+ .HasColumnType("uuid");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("DeliveryCost")
+ .HasColumnType("double precision");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("OrderId")
+ .HasColumnType("uuid");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ShippingId")
+ .HasColumnType("uuid");
+
+ b.Property("TrackingCode")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AddressId");
+
+ b.HasIndex("OrderId")
+ .IsUnique();
+
+ b.HasIndex("ShippingId");
+
+ b.ToTable("OrderDeliveries", "public");
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Orders.OrderProduct", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("BrandId")
+ .HasColumnType("uuid");
+
+ b.Property("Count")
+ .HasColumnType("integer");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("HasDiscount")
+ .HasColumnType("boolean");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("OrderId")
+ .HasColumnType("uuid");
+
+ b.Property("OrderProductStatus")
+ .HasColumnType("integer");
+
+ b.Property("PackingCost")
+ .HasColumnType("double precision");
+
+ b.Property("PackingFee")
+ .HasColumnType("double precision");
+
+ b.Property("ProductCategoryId")
+ .HasColumnType("uuid");
+
+ b.Property("ProductCost")
+ .HasColumnType("double precision");
+
+ b.Property("ProductFee")
+ .HasColumnType("double precision");
+
+ b.Property("ProductFeeWithDiscount")
+ .HasColumnType("double precision");
+
+ b.Property("ProductId")
+ .HasColumnType("uuid");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.HasIndex("ProductId");
+
+ b.ToTable("OrderProducts", "public");
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.ProductCategories.ProductCategory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("IsMain")
+ .HasColumnType("boolean");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ParentId")
+ .HasColumnType("uuid");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Slug")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ParentId");
+
+ b.ToTable("ProductCategories", "public");
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Products.Product", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("AuthorId")
+ .HasColumnType("uuid");
+
+ b.Property("BeDisplayed")
+ .HasColumnType("boolean");
+
+ b.Property("BrandId")
+ .HasColumnType("uuid");
+
+ b.Property("CategoryId")
+ .HasColumnType("uuid");
+
+ b.Property("Cost")
+ .HasColumnType("double precision");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Discriminator")
+ .IsRequired()
+ .HasMaxLength(13)
+ .HasColumnType("character varying(13)");
+
+ b.Property("EnglishName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ExpertCheck")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("HasExpressDelivery")
+ .HasColumnType("boolean");
+
+ b.Property("IsEnable")
+ .HasColumnType("boolean");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("IsSubProduct")
+ .HasColumnType("boolean");
+
+ b.Property("MaxOrderCount")
+ .HasColumnType("integer");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("PackingCost")
+ .HasColumnType("double precision");
+
+ b.Property("PersianName")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Rate")
+ .HasColumnType("real");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ReviewCount")
+ .HasColumnType("integer");
+
+ b.Property("Slug")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Stock")
+ .HasColumnType("integer");
+
+ b.Property("Summery")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Tags")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Viewed")
+ .HasColumnType("integer");
+
+ b.Property("Warranty")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AuthorId");
+
+ b.HasIndex("BrandId");
+
+ b.HasIndex("CategoryId");
+
+ b.ToTable("Products", "public");
+
+ b.HasDiscriminator().HasValue("Product");
+
+ b.UseTphMappingStrategy();
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Products.Specification", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("uuid");
+
+ b.Property("CreatedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Detail")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("IsFeature")
+ .HasColumnType("boolean");
+
+ b.Property("IsRemoved")
+ .HasColumnType("boolean");
+
+ b.Property("ModifiedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("ModifiedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("ParentId")
+ .HasColumnType("uuid");
+
+ b.Property("ProductId")
+ .HasColumnType("uuid");
+
+ b.Property("RemovedAt")
+ .HasColumnType("timestamp without time zone");
+
+ b.Property("RemovedBy")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("Value")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ParentId");
+
+ b.HasIndex("ProductId");
+
+ b.ToTable("Specifications", "public");
+ });
+
+ modelBuilder.Entity("Netina.Domain.Entities.Seo.MetaTag", b =>
+ {
+ b.Property