Add migration for DiscountProductImages table
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 1m53s

- Created a new table `DiscountProductImages` in the CMS schema.
- Added columns for image details including `Title`, `AltText`, `ImagePath`, `ThumbnailPath`, `SortOrder`, `IsActive`, `Created`, `CreatedBy`, `LastModified`, `LastModifiedBy`, and `IsDeleted`.
- Established a foreign key relationship with the `DiscountProducts` table.
- Created indexes on `DiscountProductId` and a composite index on `DiscountProductId` and `SortOrder`.
This commit is contained in:
masoodafar-web
2026-01-01 02:26:33 +03:30
parent 500e169141
commit f0117eb1d5
29 changed files with 5068 additions and 4 deletions
@@ -51,6 +51,7 @@ public interface IApplicationDbContext
DbSet<DiscountProduct> DiscountProducts { get; }
DbSet<DiscountCategory> DiscountCategories { get; }
DbSet<DiscountProductCategory> DiscountProductCategories { get; }
DbSet<DiscountProductImage> DiscountProductImages { get; }
DbSet<DiscountShoppingCart> DiscountShoppingCarts { get; }
DbSet<DiscountOrder> DiscountOrders { get; }
DbSet<DiscountOrderDetail> DiscountOrderDetails { get; }
@@ -0,0 +1,83 @@
namespace CMSMicroservice.Application.Common.Services;
/// <summary>
/// سرویس محاسبه مالیات بر ارزش افزوده (VAT)
/// </summary>
public static class VatCalculator
{
/// <summary>
/// نرخ VAT ایران - 9 درصد
/// </summary>
public const decimal VAT_RATE = 0.09m;
/// <summary>
/// نرخ VAT به صورت درصد (9)
/// </summary>
public const int VAT_PERCENT = 9;
/// <summary>
/// محاسبه VAT از مبلغ خالص
/// </summary>
/// <param name="netAmount">مبلغ خالص (بدون مالیات)</param>
/// <returns>مبلغ VAT</returns>
public static long CalculateVat(long netAmount)
{
return (long)(netAmount * VAT_RATE);
}
/// <summary>
/// محاسبه مبلغ ناخالص (شامل VAT) از مبلغ خالص
/// </summary>
/// <param name="netAmount">مبلغ خالص</param>
/// <returns>مبلغ ناخالص (خالص + VAT)</returns>
public static long CalculateGrossAmount(long netAmount)
{
return netAmount + CalculateVat(netAmount);
}
/// <summary>
/// استخراج مبلغ خالص از مبلغ ناخالص
/// </summary>
/// <param name="grossAmount">مبلغ ناخالص (شامل VAT)</param>
/// <returns>مبلغ خالص</returns>
public static long ExtractNetAmount(long grossAmount)
{
return (long)(grossAmount / (1 + VAT_RATE));
}
/// <summary>
/// استخراج VAT از مبلغ ناخالص
/// </summary>
/// <param name="grossAmount">مبلغ ناخالص (شامل VAT)</param>
/// <returns>مبلغ VAT</returns>
public static long ExtractVatFromGross(long grossAmount)
{
return grossAmount - ExtractNetAmount(grossAmount);
}
/// <summary>
/// جزئیات محاسبه VAT
/// </summary>
public record VatBreakdown(
long NetAmount,
long VatAmount,
long GrossAmount,
decimal VatRate
);
/// <summary>
/// محاسبه کامل جزئیات VAT
/// </summary>
/// <param name="netAmount">مبلغ خالص</param>
/// <returns>جزئیات کامل VAT</returns>
public static VatBreakdown CalculateBreakdown(long netAmount)
{
var vatAmount = CalculateVat(netAmount);
return new VatBreakdown(
NetAmount: netAmount,
VatAmount: vatAmount,
GrossAmount: netAmount + vatAmount,
VatRate: VAT_RATE
);
}
}