Files
BackOffice/docs/MANUAL-ACTIVATION-FEATURE.md
T
masoodafar-web 2d833605b4
Build and Deploy / build (push) Successful in 2m18s
feat: Implement Inventory Management Pages
- Added InventoryMainPage for managing inventory items with filtering options.
- Created LowStockPage to display low stock items with filtering capabilities.
- Developed MovementsPage to track inventory movements with detailed filtering.
- Introduced WarehousesPage for managing warehouses, including creation and viewing inventory.
- Enhanced backend integration with InventoryBFFContract for data retrieval.
- Implemented user-friendly UI components using MudBlazor for better user experience.
- Added necessary dialog components for adding stock, adjusting inventory, and viewing movements.
2026-01-03 08:18:55 +03:30

6.2 KiB

فیچر فعالسازی (پرداخت) دستی باشگاه مشتریان

خلاصه

این فیچر امکان فعالسازی دستی عضویت باشگاه مشتریان را برای ادمین فراهم می‌کند. ادمین می‌تواند کاربر را انتخاب کرده، تصویر فیش پرداخت را آپلود کند و عضویت را فعال کند.

تاریخ: 2 ژانویه 2026


تغییرات انجام شده

1. CMS (Backend)

Entity - ManualPayment.cs

  • اضافه شدن فیلد ImageDocumentId برای ذخیره شناسه سند در FMS
public long? ImageDocumentId { get; set; }

Proto - manualpayment.proto

  • اضافه شدن image_document_id به CreateManualPaymentRequest (فیلد 7)
  • اضافه شدن image_document_id به ManualPaymentModel (فیلد 21)

Command - CreateManualPaymentCommand.cs

  • اضافه شدن پراپرتی ImageDocumentId

Handler - CreateManualPaymentCommandHandler.cs

  • ذخیره ImageDocumentId از request در entity

2. BFF (Backend For Frontend)

Proto - manualpayment.proto

  • اضافه شدن image_document_id به ManualPaymentModel (فیلد 21)
  • اضافه شدن FileUploadModel برای آپلود فایل
  • اضافه شدن image_file به CreateManualPaymentRequest

Command - CreateManualPaymentCommand.cs

  • اضافه شدن FileUploadDto برای دریافت فایل از فرانت

Handler - CreateManualPaymentCommandHandler.cs

  • اتصال به FMS برای آپلود فایل
  • استخراج ImagePath و ImageDocumentId از پاسخ FMS
  • ارسال هر دو به CMS
var fileInfo = await _context.FileInfos.CreateNewFileInfoAsync(new()
{
    Directory = "Images/ManualPayments",
    IsBase64 = false,
    MIME = request.ImageFile.Mime,
    FileName = request.ImageFile.FileName,
    File = ByteString.CopyFrom(request.ImageFile.File)
}, cancellationToken: cancellationToken);

if (fileInfo != null)
{
    if (!string.IsNullOrWhiteSpace(fileInfo.File))
        grpcRequest.ImagePath = fileInfo.File;
    if (fileInfo.Id > 0)
        grpcRequest.ImageDocumentId = fileInfo.Id;
}

Query Handler - GetManualPaymentsQueryHandler.cs

  • اضافه شدن mapping برای ImagePath و ImageDocumentId

DTO - GetManualPaymentsResponseDto.cs

  • اضافه شدن فیلدهای:
public string? ImagePath { get; set; }
public long? ImageDocumentId { get; set; }

Mapping - ManualPaymentProfile.cs

  • اضافه شدن mapping برای FileUploadModel -> FileUploadDto

3. Frontend (Blazor)

ManualPaymentDialog.razor

  • استفاده از UserAutoComplete برای انتخاب کاربر
  • استفاده از MudFileUpload برای آپلود تصویر فیش
  • استفاده از MudSelect برای انتخاب نوع پرداخت
  • پیش‌نمایش تصویر قبل از ارسال
  • تغییر عنوان‌ها از "پرداخت دستی" به "فعالسازی دستی"

ManualPaymentDialog.razor.cs

  • هندل کردن انتخاب فایل با IBrowserFile
  • تبدیل فایل به Base64 برای پیش‌نمایش
  • ایجاد FileUploadModel برای ارسال به BFF
  • مقادیر پیش‌فرض:
    • Type = 1 (واریز نقدی)
    • Description = "عضویت دستی باشگاه مشتریان"

ManualPayments.razor

  • تغییر عنوان صفحه به "فعالسازی (پرداخت) دستی"
  • تغییر دکمه به "ثبت فعالسازی دستی جدید"

NavMenu.razor

  • حذف آیتم منوی "پرداخت دستی عضویت"
  • تغییر نام "پرداخت‌های دستی" به "فعالسازی (پرداخت) دستی"

حذف شده

  • ManualMembershipPayment.razor و ManualMembershipPayment.razor.cs

مقادیر ثابت

// مبلغ پایه پکیج: 56 میلیون ریال
SystemConstants.BasePackageAmount = 56_000_000;

// شارژ کیف پول:
// - مجموع شارژ: 56M ریال

فلو کامل

  1. ادمین کاربر را با UserAutoComplete انتخاب می‌کند
  2. نوع پرداخت را انتخاب می‌کند (پیش‌فرض: واریز نقدی)
  3. توضیحات را وارد می‌کند (پیش‌فرض: عضویت دستی باشگاه مشتریان)
  4. تصویر فیش را آپلود می‌کند (اختیاری)
  5. دکمه ثبت را می‌زند
  6. Frontend فایل را به BFF ارسال می‌کند
  7. BFF فایل را به FMS آپلود می‌کند
  8. FMS مسیر فایل (File) و شناسه سند (Id) را برمی‌گرداند
  9. BFF هر دو را به CMS ارسال می‌کند
  10. CMS تراکنش، پرداخت دستی و لاگ کیف پول را ثبت می‌کند
  11. کیف پول کاربر شارژ می‌شود

فایل‌های تغییر یافته

CMS

  • CMSMicroservice.Domain/Entities/Payment/ManualPayment.cs
  • CMSMicroservice.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommand.cs
  • CMSMicroservice.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommandHandler.cs
  • Protos/manualpayment.proto

BFF

  • BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommand.cs
  • BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommandHandler.cs
  • BackOffice.BFF.Application/ManualPaymentCQ/Queries/GetManualPayments/GetManualPaymentsQueryHandler.cs
  • BackOffice.BFF.Application/ManualPaymentCQ/Queries/GetManualPayments/GetManualPaymentsResponseDto.cs
  • BackOffice.BFF.Application/ManualPaymentCQ/ManualPaymentProfile.cs
  • Protobufs/BackOffice.BFF.ManualPayment.Protobuf/Protos/manualpayment.proto

Frontend

  • BackOffice/Pages/Payment/Components/ManualPaymentDialog.razor
  • BackOffice/Pages/Payment/Components/ManualPaymentDialog.razor.cs
  • BackOffice/Pages/Payment/ManualPayments.razor
  • BackOffice/Shared/NavMenu.razor

حذف شده

  • BackOffice.Main/Pages/Payment/ManualMembershipPayment.razor
  • BackOffice.Main/Pages/Payment/ManualMembershipPayment.razor.cs