Files
docs/archive/CHANGELOG-2025-12-18.md
T
masoodafar-web 5965b98728 update
2026-01-03 18:27:49 +03:30

6.0 KiB

📝 Changelog - ۲۸ آذر ۱۴۰۴ (18 December 2025)

Session: بهبودات FrontOffice، مدیریت موجودی، ClubFeatures


🛒 سیستم مدیریت موجودی محصولات

CMS - SubmitShopBuyOrderCommandHandler

فایل: CMSMicroservice.Application/UserOrderCQ/Commands/SubmitShopBuyOrder/SubmitShopBuyOrderCommandHandler.cs

تغییرات:

  1. چک موجودی قبل از خرید:

    • اگر محصول ناموجود شده (RemainingCount <= 0) → خطا
    • اگر تعداد درخواستی > موجودی → خطا با جزئیات
  2. کاهش موجودی بعد از پرداخت موفق:

    foreach (var cartItem in user.UserCarts)
    {
        cartItem.Product.RemainingCount -= cartItem.Count;
        cartItem.Product.SaleCount += cartItem.Count;
    }
    
  3. پیام‌های خطای فارسی:

    • "محصولات زیر ناموجود شده‌اند: [لیست]"
    • "موجودی محصولات زیر کافی نیست: «نام»: درخواست X عدد، موجودی Y عدد"

FrontOffice - ProductDetail

فایل‌ها:

  • Pages/Store/ProductDetail.razor
  • Pages/Store/ProductDetail.razor.cs

تغییرات:

  1. MaxQty داینامیک: از عدد ثابت 20 به _product.RemainingCount
  2. پراپرتی IsInStock: _product.RemainingCount > 0
  3. UI موجودی:
    • Chip سبز: "موجود در انبار (X عدد)"
    • Chip قرمز: "ناموجود"
  4. غیرفعال کردن دکمه: وقتی محصول ناموجود

🎖️ ویژگی‌های باشگاه مشتریان (ClubFeatures)

معماری اصلاح‌شده

  • ClubFeature (جدول قالب): Title, Description, DetailedDescriptionHtml, Icon, Color, IsActive, RequiredPoints, SortOrder
  • UserClubFeature (junction table): UserId, ClubMembershipId, ClubFeatureId, IsActive, GrantedAt, Notes

فایل‌های اصلاح‌شده:

CMS:

  • UserClubFeatureDto.cs: حذف DetailedDescriptionHtml, Icon, Color
  • clubmembership.proto: حذف فیلدهای 7,8,9 از UserClubFeatureModel
  • ClubFeatureProfile.cs: حذف mapping های اضافی

BFF:

  • GetClubFeaturesQueryHandler.cs: حذف mapping های حذف‌شده
  • GetClubFeaturesResponseDto.cs: حذف فیلدها از ClubFeatureItemDto
  • configuration.proto: حذف detailed_description_html, icon, color از ClubFeatureModel
  • ConfigurationProfile.cs: حذف mapping های اضافی

FrontOffice:

  • ClubConfigurationService.cs: حذف فیلدها از ClubFeatureDto و mapping
  • FeaturesPage.razor:
    • استفاده از آیکون ثابت Star
    • حذف متد GetMudIcon
    • تغییر جدول به MudList ساده
    • نمایش Notes در مدال جزئیات

MembershipPage - مزایای عضویت

فایل: Pages/Club/MembershipPage.razor

مزایای جدید:

  1. شارژ ۵۶ میلیون تومان کیف پول فروشگاه تخفیفی
  2. عضویت در شبکه بازاریابی و دریافت پورسانت
  3. امکان جذب زیرمجموعه و گسترش شبکه

📍 مدال آدرس‌ها

رفع باگ‌ها:

1. خطای Snackbar تکراری

مشکل: CS0102: already contains a definition for 'Snackbar' علت: ISnackbar در _Imports.razor به صورت global inject شده بود حل: حذف [Inject] private ISnackbar Snackbar از code-behind

فایل‌های اصلاح‌شده:

  • AddAddressDialog.razor.cs
  • EditAddressDialog.razor.cs

2. خطای NullReferenceException

مشکل: Object reference not set to an instance of an object علت: dialog.Result می‌تواند null باشد حل: اضافه کردن null check

// قبل
if (!result.Canceled)

// بعد
if (result is not null && !result.Canceled)

فایل: Addresses.razor.cs


💰 VAT Service

تغییرات:

  • نرخ پیش‌فرض: 9.99% (برای تشخیص داده سرور از local)
  • استفاده در CheckoutSummary: VAT.IsEnabled, VAT.VatPercentage, VAT.AddVAT()
  • کلید جدید: VAT_PERCENTAGE_KEY در LocalStorage

🛒 CartService Authentication

تغییرات:

  • EnsureInitializedAsync(): متد جدید برای lazy loading
  • IsAuthenticatedAsync(): چک توکن در LocalStorage
  • عدم لود برای unauthenticated: سبد خرید فقط برای کاربران لاگین‌شده لود می‌شود

فایل‌های آپدیت‌شده برای فراخوانی EnsureInitialized:

  • MainLayout.razor.cs
  • Cart.razor.cs
  • Products.razor.cs
  • ProductDetail.razor.cs
  • CheckoutSummary.razor.cs

📊 خلاصه فایل‌های تغییر یافته

CMS (5 فایل):

  1. SubmitShopBuyOrderCommandHandler.cs - چک و کاهش موجودی
  2. UserClubFeatureDto.cs - حذف فیلدها
  3. clubmembership.proto - حذف فیلدها
  4. ClubFeatureProfile.cs - حذف mapping

BFF (4 فایل):

  1. GetClubFeaturesQueryHandler.cs - حذف mapping
  2. GetClubFeaturesResponseDto.cs - حذف فیلدها
  3. configuration.proto - حذف فیلدها
  4. ConfigurationProfile.cs - حذف mapping

FrontOffice (12 فایل):

  1. ProductDetail.razor - نمایش موجودی
  2. ProductDetail.razor.cs - MaxQty داینامیک
  3. ClubConfigurationService.cs - حذف فیلدها
  4. FeaturesPage.razor - بازطراحی UI
  5. MembershipPage.razor - مزایای عضویت
  6. AddAddressDialog.razor.cs - رفع خطای Snackbar
  7. EditAddressDialog.razor.cs - رفع خطای Snackbar
  8. Addresses.razor.cs - رفع NullRef
  9. CartService.cs - Authentication check
  10. VATService.cs - نرخ 9.99%
  11. CheckoutSummary.razor - استفاده از VATService
  12. MainLayout.razor.cs - EnsureInitializedAsync

وضعیت نهایی

  • Build: موفق
  • تست دستی: آدرس‌ها ، موجودی محصول ، ClubFeatures